@@ -560,6 +560,7 @@ impl Inner {
560
560
max_files,
561
561
} ;
562
562
let filename = inner. join_date ( & now) ;
563
+ inner. prune_old_logs ( & filename) ;
563
564
let writer = RwLock :: new ( create_writer ( inner. log_directory . as_ref ( ) , & filename) ?) ;
564
565
Ok ( ( inner, writer) )
565
566
}
@@ -584,7 +585,7 @@ impl Inner {
584
585
}
585
586
}
586
587
587
- fn prune_old_logs ( & self ) {
588
+ fn prune_old_logs ( & self , new_filename : & str ) {
588
589
let log_prefix = self
589
590
. log_filename_prefix
590
591
. as_ref ( )
@@ -608,6 +609,10 @@ impl Inner {
608
609
let filename = entry. file_name ( ) ;
609
610
// if the filename is not a UTF-8 string, skip it.
610
611
let filename = filename. to_str ( ) ?;
612
+ // exclude current log file
613
+ if filename == new_filename {
614
+ return None ;
615
+ }
611
616
// strip compressed file extension
612
617
let ( need_compress, mut filename) = compress_ext
613
618
. and_then ( |compress_ext| {
@@ -709,9 +714,9 @@ impl Inner {
709
714
if let Err ( err) = file. flush ( ) {
710
715
eprintln ! ( "Couldn't flush previous writer: {}" , err) ;
711
716
}
712
- self . prune_old_logs ( ) ;
713
717
714
718
let filename = self . join_date ( & now) ;
719
+ self . prune_old_logs ( & filename) ;
715
720
match create_writer ( & self . log_directory , & filename) {
716
721
Ok ( new_file) => * file = new_file,
717
722
Err ( err) => eprintln ! ( "Couldn't create writer for logs: {}" , err) ,
0 commit comments