rust log选型

news/2024/10/6 17:52:18 标签: rust

考察了最火的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

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.niftyadmin.cn/n/5691952.html

相关文章

EXCEL_光标百分比

Public Sub InitCells()Dim iSheet As LongFor iSheet Sheets.Count To 1 Step -1Sheets(iSheet).ActivateActiveWindow.Zoom 85ActiveWindow.ScrollRow 1ActiveWindow.ScrollColumn 1Sheets(iSheet).Range("A1").ActivateNext iSheetEnd Sub对日项目中的文档满天…

多文件并发多线程MD5工具(相对快速的MD5一批文件),适配自定义MD5 Hash I/O缓存。

自己写的多文件 MD5校验工具,一个文件开一个线程,有最大I/O 缓存设置,兼容读写MD5后缀文件。 共计91个文件,合计180G左右 12分钟左右,UI基本卡废,但程序没蹦,属于正常。 卡的原因是基本是用 I/O…

Leetcode 第 417 场周赛题解

Leetcode 第 417 场周赛题解 Leetcode 第 417 场周赛题解题目1:3304. 找出第 K 个字符 I思路代码复杂度分析 题目2:3305. 元音辅音字符串计数 I思路代码复杂度分析 题目3:3306. 元音辅音字符串计数 II思路代码复杂度分析 题目4:33…

k8s 之安装helm服务

helm安装包下载helm官网_zh 作者:程序那点事儿 日期:2024/01/30 00:51 下载安装包 wget https://get.helm.sh/helm-v3.2.3-linux-amd64.tar.gz 解压安装包 tar -zxcf helm-v3.2.3-linux-amd64.tar.gz 进入到解压目录 cd linux-amd64 将helm目录拷贝…

python交互式命令时如何清除

在交互模式中使用Python,如果要清屏,可以import os,通过os.system()来调用系统命令clear或者cls来实现清屏。 [python] view plain copy print? >>> import os >>> os.system(clear) 但是此时shell中的状态是:…

LeetCode hot100---二叉树专题(C++语言)

1、中序遍历 (1)题目描述以及输入输出 (1)题目描述: 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。(2)输入输出描述: 输出节点值到一个数组关键思路: 左中右遍历(2)代码块 class Sol…

【C语言】基础篇

简单输出“helloword” #include<stdio.h> int main(){printf("hello world!");return 0; } 和与商 #include<stdio.h> int main(){int a,b,sum,quotient;printf("Enter two numbers:");scanf("%d %d",&a,&b);sum a b…

力扣刷题 | 两数之和

目前主要分为三个专栏&#xff0c;后续还会添加&#xff1a; 专栏如下&#xff1a; C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读&#xff01; 初来乍到&#xff0c;如有错误请指出&#xff0c;感谢&#xff01; 给定一个整数数组 nums 和…