11//! Print logs as ndjson.
22
3+ #[ cfg( readable_timestamp) ]
4+ use chrono:: prelude:: * ;
35use log:: { kv, LevelFilter , Log , Metadata , Record } ;
46use std:: io:: { self , StdoutLock , Write } ;
57use std:: time;
@@ -24,8 +26,26 @@ impl Log for Logger {
2426 let stdout = io:: stdout ( ) ;
2527 let mut handle = stdout. lock ( ) ;
2628 let level = get_level ( record. level ( ) ) ;
27- let time = time:: UNIX_EPOCH . elapsed ( ) . unwrap ( ) . as_millis ( ) ;
28- write ! ( & mut handle, "{{\" level\" :{},\" time\" :{},\" msg\" :" , level, time) . unwrap ( ) ;
29+ #[ cfg( not( readable_timestamp) ) ]
30+ {
31+ let time = time:: UNIX_EPOCH . elapsed ( ) . unwrap ( ) . as_millis ( ) ;
32+ write ! (
33+ & mut handle,
34+ "{{\" level\" :{},\" time\" :{},\" msg\" :" ,
35+ level, time
36+ )
37+ . unwrap ( ) ;
38+ }
39+ #[ cfg( readable_timestamp) ]
40+ {
41+ let time = Local :: now ( ) . format ( "%Y-%m-%d %H:%M:%S%.f%z" ) ;
42+ write ! (
43+ & mut handle,
44+ "{{\" level\" :{},\" time\" :\" {}\" ,\" msg\" :" ,
45+ level, time
46+ )
47+ . unwrap ( ) ;
48+ }
2949 serde_json:: to_writer ( & mut handle, record. args ( ) ) . unwrap ( ) ;
3050 format_kv_pairs ( & mut handle, & record) ;
3151 writeln ! ( & mut handle, "}}" ) . unwrap ( ) ;
0 commit comments