flowsnet_platform_sdk/
logger.rs1use std::{
2 str::FromStr,
3 time::{SystemTime, UNIX_EPOCH},
4};
5use tracing_appender::rolling::{RollingFileAppender, Rotation};
6
7pub fn init() {
13 let file_appender = RollingFileAppender::new(Rotation::DAILY, "/", "output.log");
14
15 fern::Dispatch::new()
16 .format(|out, message, record| {
17 let now = SystemTime::now();
18
19 let json = serde_json::json!({
20 "level": record.level().to_string(),
21 "target": record.target(),
22 "ts": now.duration_since(UNIX_EPOCH).unwrap_or_default().as_millis(),
23 "message": message
24 });
25 out.finish(format_args!(
26 "{}",
27 serde_json::to_string(&json).unwrap() + "\n"
28 ))
29 })
30 .level(
31 log::LevelFilter::from_str(
32 std::env::var("RUST_LOG")
33 .unwrap_or(String::from("error"))
34 .as_str(),
35 )
36 .unwrap_or(log::LevelFilter::Error),
37 )
38 .chain(Box::new(file_appender) as Box<dyn std::io::Write + Send>)
39 .apply()
40 .unwrap();
41}