log4rs使用配置文件

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");
    }
}
posted @ 2024-11-06 09:58  朝阳1  阅读(20)  评论(0编辑  收藏  举报