当前位置: 首页 > article >正文

rust log选型

考察了最火的tracing。但是该模块不支持compact,仅支持根据时间进行rotate。

  • daily

    Creates a daily-rotating file appender.

  • hourly

    Creates an hourly-rotating file appender.

  • minutely

    Creates a minutely-rotating file appender. This will rotate the log file once per minute.

  • never

    Creates a non-rolling file appender.

这两点实在在工程上难以使用。因此选择了flexi_logger.该支持的都支持了。将配置如下。 

文档:flexi_logger::code_examples - Rust

flexi_logger::code_examples - Rust

use std::backtrace::Backtrace;
use std::{panic, thread};
use std::thread::sleep;
use std::time::Duration;
use anyhow::anyhow;
use flexi_logger::{writers::FileLogWriter, Cleanup, Criterion, FileSpec, Naming, WriteMode, Age};
use log;
use log::info;
use tracing::instrument;

fn panic_hook(){
    panic::set_hook(Box::new(|_| {
        log::error!("{:?}",anyhow!("panic found:"));
    }));
}
fn test(){
    info!("hello2");
}

fn main() {
    panic_hook();
    let logger = flexi_logger::Logger::try_with_str("info").unwrap()
        .log_to_file(
            FileSpec::default()
                .basename("calculate")
                .directory("./logs")
        ).append().write_mode(WriteMode::Async).rotate(
        Criterion::AgeOrSize(Age::Day,500 * 1024 * 1024), // 每天轮转一次日志
        Naming::Timestamps,
        Cleanup::KeepLogAndCompressedFiles(1,30), // 保留7天的日志
    ).format(flexi_logger::opt_format)
        .start();
    test();

}


http://www.kler.cn/news/336663.html

相关文章:

  • layernorm笔记
  • 富格林:揭晓黑幕躲避交易暗箱
  • Python 语言学习——应用1.2 数字图像处理(第二节,变换)
  • 基于LORA的一主多从监测系统_框架搭建
  • ElasticSearch备考 -- Update by query Reindex
  • 富贵险中求,我推荐你读这4本书
  • HTB:Funnel[WriteUP]
  • 【Ubuntu】PlantUML工具 | 安装 | 语法 | 使用工具画序列图
  • 深度学习应用
  • 基于MySQL生成列实现逻辑删除条件下的字段唯一
  • 【艾思科蓝】Java Web开发实战:从零到一构建动态网站
  • Spring和Spring Boot事务讲解和案例示范
  • Chrome浏览器调用ActiveX控件--allWebOffice控件
  • IO重定向
  • Java 中 MySQL 自增 ID 的与案例分析
  • 【unity进阶知识7】对象池的使用,如何封装一个对象池管理器
  • C#基础语法
  • 如何筛选网站有多少真实ip访问
  • Spring MVC的运行流程详解
  • Stable Diffusion的核心插件—ControlNet!万字长文解读!