Skip to content

Commit

Permalink
feat: 修改日志为tracing
Browse files Browse the repository at this point in the history
  • Loading branch information
SerenitySir committed May 23, 2024
1 parent cea48a3 commit 47938a3
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 29 deletions.
10 changes: 7 additions & 3 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[package]
name = "Nal"
name = "nal"
version = "0.1.0"
edition = "2021"

Expand All @@ -14,11 +14,15 @@ serde_yaml = "0.9.32"
#rc4 = "0.1.0"
log = "0.4.20"
async-trait = "0.1.77"
cron = "0.12.1"
chrono = "0.4.34"
time = { version = "0.3.36", features = ["parsing", "macros"] }
#env_logger = "0.11.3"
#fern = "0.6"
log4rs = "1.3.0"
#log4rs = "1.3.0"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["time"] }
tracing-core = "0.1.32"
tracing-appender = "0.2"
yaml-rust = "0.4.5"
service-manager = "0.6.1"
clap = { version = "4.5.4", features = ["derive"] }
Expand Down
13 changes: 1 addition & 12 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ use std::{env, fs};
use std::fs::{File, OpenOptions};
use std::str::FromStr;
use tokio::time::{Duration, sleep};
use chrono::{Datelike, DateTime, Local, Timelike, Utc};
use cron::Schedule;
use log::{debug, info, warn};
use serde_json::Value::Bool;
use crate::core::nal;
Expand Down Expand Up @@ -56,18 +54,9 @@ async fn main() {
}
}

async fn handler(){
async fn handler() {
let config = nal::init_config();
debug!("config: {config:#?}");

/*let expression = "* 1 * * * * *";
let schedule = Schedule::from_str(expression).unwrap();
println!("All stars: Upcoming fire times for '{}':", expression);
for datetime in schedule.upcoming(Utc).take(10) {
let is_ok = nal::check_net().await;
println!("net isOk: -> {is_ok:}");
}*/

loop {
//检测网络是否正常
let is_ok = nal::check_net().await;
Expand Down
67 changes: 53 additions & 14 deletions src/util/logs.rs
Original file line number Diff line number Diff line change
@@ -1,17 +1,12 @@
use std::{env, fs};
use std::fs::File;
use std::io::{Error};
use std::path::Path;
use chrono::Local;
use log4rs::append::console::ConsoleAppender;
use log4rs::append::file::FileAppender;
use log4rs::{Config};
use log4rs::config::{Appender, Logger, Root};
use log4rs::encode::pattern::PatternEncoder;
use std::sync::Mutex;
use log::{error, LevelFilter};
use log4rs::append::rolling_file::policy::compound::CompoundPolicy;
use log4rs::append::rolling_file::policy::compound::roll::fixed_window::FixedWindowRoller;
use log4rs::append::rolling_file::policy::compound::trigger::size::SizeTrigger;
use log4rs::append::rolling_file::policy::compound::trigger::time::{TimeTrigger, TimeTriggerConfig, TimeTriggerInterval};
use tracing::{info, Level};
use tracing_subscriber::fmt::writer::MakeWriterExt;
use tracing_subscriber::util::SubscriberInitExt;

/// 初始化日志
pub fn init(log_file: &str, level: LevelFilter) -> Result<(), Error> {
Expand All @@ -23,9 +18,9 @@ pub fn init(log_file: &str, level: LevelFilter) -> Result<(), Error> {
} else { ".".to_string() };
let logs_dir = current_dir + "/logs/";
fs::create_dir_all(logs_dir.clone()).unwrap(); // 如果需要,创建日志目录
let log_file_path = logs_dir.clone().to_string() + log_file;
// let log_file_path = logs_dir.clone().to_string() + log_file;

init_log4rs(log_file_path, level);
init_tracing(logs_dir, log_file.to_string(), level);
Ok(())
}

Expand Down Expand Up @@ -64,6 +59,7 @@ fn init_env_logger() {

fn init_fern() {
/* //fern
use chrono::Local;
fern::Dispatch::new()
.format(|out, message, record| {
out.finish(format_args!(
Expand All @@ -86,15 +82,26 @@ fn init_fern() {
/// 这是创建新文件的大小。32MB
const TRIGGER_FILE_SIZE: u64 = 1024 * 1024 * 32;
/// 日志存档将移动到的位置 有关模式信息,请参阅:
/// https://docs.rs/log4rs/*/log4rs/append/rolling_file/policy/compound/roll/fixed_window/struct.FixedWindowRollerBuilder.html#method.build
/// https://docs.rs/log4rs/latest/log4rs/append/rolling_file/policy/compound/roll/fixed_window/struct.FixedWindowRollerBuilder.html#method.build
const ARCHIVE_PATTERN: &str = "./logs/nal.{}.log";
/// 要保留的存档日志文件数
const LOG_FILE_COUNT: u32 = 3;

/// 初始化log4rs
fn init_log4rs(log_file_path: String, level: LevelFilter) {
/*
use log4rs::append::console::ConsoleAppender;
use log4rs::append::file::FileAppender;
use log4rs::{Config};
use log4rs::config::{Appender, Logger, Root};
use log4rs::encode::pattern::PatternEncoder;
use log4rs::append::rolling_file::policy::compound::CompoundPolicy;
use log4rs::append::rolling_file::policy::compound::roll::fixed_window::FixedWindowRoller;
use log4rs::append::rolling_file::policy::compound::trigger::size::SizeTrigger;
use log4rs::append::rolling_file::policy::compound::trigger::time::{TimeTrigger, TimeTriggerConfig, TimeTriggerInterval};
// log4rs
// Pattern: https://docs.rs/log4rs/*/log4rs/encode/pattern/index.html
// Pattern: https://docs.rs/log4rs/latest/log4rs/encode/pattern/index.html
let pattern = Box::new(PatternEncoder::new("[{d(%Y-%m-%d %H:%M:%S)} {h({l}):<5.5} {M}] {f}:{L} {m}{n}"));
// 创建用于文件日志记录的策略
Expand Down Expand Up @@ -135,4 +142,36 @@ fn init_log4rs(log_file_path: String, level: LevelFilter) {
.unwrap()
};
log4rs::init_config(config).unwrap();
*/
}

fn init_tracing(logs_dir: String, log_file: String, level: LevelFilter) {
let format = time::format_description::parse(
"[year]-[month padding:zero]-[day padding:zero] [hour]:[minute]:[second].[subsecond digits:3]",
).unwrap();
// time::format_description::well_known::Rfc3339;

tracing_subscriber::fmt()
.with_file(true)
.with_level(true)
.with_target(true)
.with_line_number(true)
.with_thread_names(true)
.with_thread_ids(true)
.with_test_writer()
.with_max_level(Level::INFO)
.with_timer(tracing_subscriber::fmt::time::OffsetTime::new(
time::macros::offset!(+8), format,
))
.with_ansi(false)
.with_writer(
Mutex::new(tracing_appender::rolling::daily(logs_dir.clone(), log_file.clone())).and(
//将 ERROR 及以上级别的日志输出到 stderr, 其他级别日志则输出到 stdout
std::io::stdout
.with_filter(|meta| meta.level() > &Level::ERROR)
.or_else(std::io::stderr)
)
)
.finish()
.init();
}

0 comments on commit 47938a3

Please sign in to comment.