rust库学习-env_logger

打印 上一主题 下一主题

主题 887|帖子 887|积分 2661

介绍

env_logger 配合 log 库使用,
log 是rust日志库的外观库,给日志库提供抽象的记录接口,
log使用宏,如info!() trace!()记录日志
假如需要替换当前使用的日志库,只需将初始化相关的代码和toml文件修改
env_logger 通过配置环境变量中 RUST_LOG 实现日志过滤
实践

Cargo.toml
  1. [dependencies]
  2. log = "0.4"
  3. env_logger = "0.9"
复制代码
main.rs
  1. use std::env::set_var;
  2. use log::{debug, error, log_enabled, info, Level};
  3. fn main() {
  4.    
  5.     set_var("RUST_LOG", "debug");
  6.     env_logger.init();
  7.     //env_logger::builder().format_timestamp(None).init();
  8.     debug!("this is a debug {}", "message");
  9.     error!("this is printed by default");
  10.    
  11.     if log_enabled!(Level::Info) {
  12.         let x = 3 * 4; // expensive computation
  13.         info!("the answer was: {}", x);
  14.     }
  15. }
复制代码
过滤规则

set_var 配置环境变量 RUST_LOG 的过滤规则

  • 过滤日志等级(debug,error...)
    set_var("RUST_LOG", "debug");
  • 过滤哪个文件的日志(工程名::模块::文件名=level),
    1.     .\baseframe\
    2.     |-- Cargo.lock
    3.     |-- Cargo.toml
    4.     |-- diesel.toml
    5.     `-- src
    6.         |-- main.rs
    7.         `-- module
    8.             |-- mod.rs
    9.         `-- test.rs
    复制代码
    打印test文件输出的所有等级的日志
    set_var("RUST_LOG", "baseframe::module::test");
    打印全局 error 日志和 test 中 info 等级以上的日志
    set_var("RUST_LOG", "error,baseframe::module::test=info");
  • 正则表达式过滤日志
    set_var("RUST_LOG", "/正则表达式");
    打印包含"include"的日志
    set_var("RUST_LOG", /include");
    过滤全局 error 日志和 test 中 info 等级以上的日志,打印包含include的日志
    set_var("RUST_LOG", "error,baseframe::module::test=info/include");
自定义输出格式

官方文档

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

缠丝猫

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表