@@ -10,7 +10,7 @@ use std::io::{Seek, SeekFrom, Write};
10
10
use std:: ops:: Deref ;
11
11
use std:: sync:: atomic:: { AtomicUsize , Ordering } ;
12
12
use std:: sync:: Arc ;
13
- use std:: time:: { Duration } ;
13
+ use std:: time:: { Duration , SystemTime } ;
14
14
15
15
/// .zip or .lz4 or any one packer
16
16
///
@@ -190,14 +190,14 @@ impl DurationType {
190
190
191
191
192
192
pub struct HowPack {
193
- last : DateTime ,
193
+ last : SystemTime ,
194
194
pub how : PackType ,
195
195
}
196
196
197
197
impl HowPack {
198
198
pub fn new ( how : PackType ) ->Self {
199
199
Self {
200
- last : DateTime :: now ( ) ,
200
+ last : SystemTime :: now ( ) ,
201
201
how : how,
202
202
}
203
203
}
@@ -211,35 +211,36 @@ pub enum PackType {
211
211
212
212
impl CanPack for HowPack {
213
213
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 ( ) ;
214
216
return match & mut self . how {
215
217
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 ( ) ) ;
217
220
let diff = match date_type {
218
221
DateType :: Sec => {
219
- dt . sec ( ) != self . last . sec ( )
222
+ log_time . sec ( ) != last_time . sec ( )
220
223
}
221
224
DateType :: Hour => {
222
- dt . hour ( ) != self . last . hour ( )
225
+ log_time . hour ( ) != last_time . hour ( )
223
226
}
224
227
DateType :: Minute => {
225
- dt . minute ( ) != self . last . minute ( )
228
+ log_time . minute ( ) != last_time . minute ( )
226
229
}
227
230
DateType :: Day => {
228
- dt . day ( ) != self . last . day ( )
231
+ log_time . day ( ) != last_time . day ( )
229
232
}
230
233
DateType :: Month => {
231
- dt . mon ( ) != self . last . mon ( )
234
+ log_time . mon ( ) != last_time . mon ( )
232
235
}
233
236
DateType :: Year => {
234
- dt . year ( ) != self . last . year ( )
237
+ log_time . year ( ) != last_time . year ( )
235
238
}
236
239
} ;
237
240
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" ) ) ;
240
242
Some ( log_name)
241
243
} else {
242
- self . last = dt;
243
244
None
244
245
}
245
246
}
@@ -251,16 +252,15 @@ impl CanPack for HowPack {
251
252
}
252
253
}
253
254
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 ( ) ) ;
255
256
let next = start_time. clone ( ) . add ( duration. clone ( ) ) ;
256
- if dt >= next {
257
+ if log_time >= next {
257
258
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" ) ) ;
259
261
* start_time = now;
260
- self . last = dt;
261
262
Some ( log_name)
262
263
} else {
263
- self . last = dt;
264
264
None
265
265
}
266
266
}
0 commit comments