yaml
# 检查配置文件变动的时间间隔
refresh_rate: 10 seconds
# appender 负责将日志收集到控制台或文件, 可配置多个
appenders:
stdout:
# 控制台输出
kind: console
encoder:
# 格式可配置,具体格式详见:
# https://docs.rs/log4rs/1.3.0/log4rs/encode/pattern/index.html
pattern: "{d(%Y-%m-%d %H:%M:%S)} - {m}{n}"
#kind: json # 使用json
file:
# 输出到文件
kind: file
path: logs/test.log
append: true
encoder:
#pattern: "{d(%Y-%m-%d %H:%M:%S)} - {m}{n}"
kind: json
rolling_file:
# 输出到滚动文件
kind: rolling_file
# 日志路径
path: logs/test.log
# 追加模式, 即每次在已有文件末尾添加日志, 默认为 true
append: true
encoder:
#pattern: "{d(%Y-%m-%d %H:%M:%S)}-{m}-{l}-{n}" #自定义格式
kind: json # 使用json
policy:
kind: compound # 复合型策略,允许多个条件
# 触发器
# 日志大小分割
#trigger:
# kind: size
# limit: 10 mb #测试日志轮转,可以改成1 kb
# 日期分割
trigger:
kind: time
interval: 1 day
modifier: midnight
# 分割策略
roller:
# 固定窗口
# 每次都往test.log中写入文件,test.log文件达到触发策略时,分割文件后移一位。
# 即触发时,创建test.1.log文件,原test.1.log文件变为test.2.log文件,依次顺延,但只保留设置的日志数量,多余的删除。
kind: fixed_window
# 分割文件名称
pattern: logs/test.{}.log
# 从1开始
base: 1
# 保留五个日志
count: 5
# 对全局 log 进行配置
root:
# 配置输出的日志级别
# trace < debug < info < warn < error
level: info
# 配置输出appender
appenders:
- stdout
# rolling_file和file选一个即可
- rolling_file
rs
use std::{default::Default, thread, time::Duration};
use log::{error, warn};
use log4rs;
fn main() {
log4rs::init_file("src/config/log4rs.yaml", Default::default()).unwrap();
loop {
thread::sleep(Duration::from_secs(1));
warn!("main");
error!("error main");
a::foo();
}
}
mod a {
use log::info;
pub fn foo() {
info!("module a");
}
}