Go标准库中也自带了log库。该库是一个非常有争议的记录器,它的日志记录缺乏日志记录级别和上下文感知值之类的功能。
package main import ( "log" ) func init() { log.SetPrefix("TRACE: ") log.SetFlags(log.Ldate | log.Lmicroseconds | log.Llongfile) } func main() { log.Println("message") log.Fatalln("fatal message") log.Panicln("panic message") } ------------------------------- TRACE: 2020/09/09 14:24:32.868375 TestLog.go:15: message TRACE: 2020/09/09 14:24:32.962329 TestLog.go:18: fatal message Process finished with exit code 1在Rust中,有一个板条箱,这是一个非常简单的包,它使用error!,warn!,info!,debug!和trace!宏分别关联到最高和最低日志打印水平。同样要使用log板条箱,先要增加的项目中,即添加到Cargo.toml的依赖部分。
[dependencies]
log = "0.4"
然后,就可以使用了:
use log::{error, warn, info, debug, trace}; fn main() { trace!("starting main"); debug!("debug message"); info!("this is some information"); warn!("oh no something bad is about to happen"); error!("oh no it's an error"); }注意,默认该库日志记录是不会记录到本地文件中的。要记录日志还需要其他库。
pretty_env_logger是和log买一送一,最常搭配使用的板条箱。同样,先添加项目依赖:
[dependencies] log = "0.4" pretty_env_logger = "0.4"然后,在代码中使用:
use log::{error, warn, info, debug, trace}; fn main() { pretty_env_logger::init(); trace!("这是一个示例程序。"); debug!("调试信息xxx。"); info!("程序正在运行中。"); warn!("[WARN]程序有些参数配置有问题。"); error!("[ERROR]程序发生严重错误!");
然后在启动时候增加,日志级别参数RUST_LOG=trace 运行:
env RUST_LOG=trace cargo run Compiling errex v0.1.0 (/home/lz/test/rust/commoncrate/errex) Finished dev [unoptimized + debuginfo] target(s) in 1.32s Running `target/debug/errex` TRACE errex > 这是一个示例程序。 DEBUG errex > 调试信息xxx。 INFO errex > 程序正在运行中。 WARN errex > [WARN]程序有些参数配置有问题。 ERROR errex > [ERROR]程序发生严重错误!