Skip to content

Commit 4a5ee5a

Browse files
committed
add HowPack
1 parent 2eeb319 commit 4a5ee5a

File tree

2 files changed

+19
-19
lines changed

2 files changed

+19
-19
lines changed

example/src/split_log_duration.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use fast_log::config::Config;
2-
use fast_log::plugin::file_split::{PackType, KeepType, DurationType, HowPack};
2+
use fast_log::plugin::file_split::{PackType, KeepType, HowPack};
33
use std::thread::sleep;
44
use std::time::Duration;
55
use fastdate::DateTime;

src/plugin/file_split.rs

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use std::io::{Seek, SeekFrom, Write};
1010
use std::ops::Deref;
1111
use std::sync::atomic::{AtomicUsize, Ordering};
1212
use std::sync::Arc;
13-
use std::time::{Duration};
13+
use std::time::{Duration, SystemTime};
1414

1515
/// .zip or .lz4 or any one packer
1616
///
@@ -190,14 +190,14 @@ impl DurationType {
190190

191191

192192
pub struct HowPack {
193-
last: DateTime,
193+
last: SystemTime,
194194
pub how: PackType,
195195
}
196196

197197
impl HowPack {
198198
pub fn new(how:PackType)->Self{
199199
Self{
200-
last: DateTime::now(),
200+
last: SystemTime::now(),
201201
how:how,
202202
}
203203
}
@@ -211,35 +211,36 @@ pub enum PackType {
211211

212212
impl CanPack for HowPack {
213213
fn is_pack(&mut self, _appender: &dyn Packer, temp_name: &str, temp_size: usize, arg: &FastLogRecord) -> Option<String> {
214+
let last_time = self.last.clone();
215+
self.last = arg.now.clone();
214216
return match &mut self.how {
215217
PackType::ByDate(date_type) => {
216-
let dt = DateTime::from_system_time(arg.now, fastdate::offset_sec());
218+
let last_time = DateTime::from_system_time(last_time, fastdate::offset_sec());
219+
let log_time = DateTime::from_system_time(arg.now, fastdate::offset_sec());
217220
let diff = match date_type {
218221
DateType::Sec => {
219-
dt.sec() != self.last.sec()
222+
log_time.sec() != last_time.sec()
220223
}
221224
DateType::Hour => {
222-
dt.hour() != self.last.hour()
225+
log_time.hour() != last_time.hour()
223226
}
224227
DateType::Minute => {
225-
dt.minute() != self.last.minute()
228+
log_time.minute() != last_time.minute()
226229
}
227230
DateType::Day => {
228-
dt.day() != self.last.day()
231+
log_time.day() != last_time.day()
229232
}
230233
DateType::Month => {
231-
dt.mon() != self.last.mon()
234+
log_time.mon() != last_time.mon()
232235
}
233236
DateType::Year => {
234-
dt.year() != self.last.year()
237+
log_time.year() != last_time.year()
235238
}
236239
};
237240
if diff {
238-
let log_name = temp_name.replace(".log", &self.last.format("YYYY-MM-DDThh-mm-ss.000000.log"));
239-
self.last = dt;
241+
let log_name = temp_name.replace(".log", &last_time.format("YYYY-MM-DDThh-mm-ss.000000.log"));
240242
Some(log_name)
241243
} else {
242-
self.last = dt;
243244
None
244245
}
245246
}
@@ -251,16 +252,15 @@ impl CanPack for HowPack {
251252
}
252253
}
253254
PackType::ByDuration((start_time, duration)) => {
254-
let dt = DateTime::from_system_time(arg.now, fastdate::offset_sec());
255+
let log_time = DateTime::from_system_time(arg.now, fastdate::offset_sec());
255256
let next = start_time.clone().add(duration.clone());
256-
if dt >= next {
257+
if log_time >= next {
257258
let now = DateTime::now();
258-
let log_name = temp_name.replace(".log", &self.last.format("YYYY-MM-DDThh-mm-ss.000000.log"));
259+
let last_time = DateTime::from_system_time(last_time, fastdate::offset_sec());
260+
let log_name = temp_name.replace(".log", &last_time.format("YYYY-MM-DDThh-mm-ss.000000.log"));
259261
*start_time = now;
260-
self.last = dt;
261262
Some(log_name)
262263
} else {
263-
self.last = dt;
264264
None
265265
}
266266
}

0 commit comments

Comments
 (0)