#logger #log #logging #moe #log-file

moe_logger

具有各种功能的日志记录器

2个不稳定版本

0.2.0 2021年9月15日
0.1.0 2021年9月14日

#826 in 调试

MIT/Apache

14KB
242

Moe Logger

(>ω<) 基于 pretty-env-loggerenv_logger 的另一个日志记录器。允许以格式化、文件轮转等功能将日志写入文件。

用法

将以下行添加到 Cargo.toml

log = "0.4"
moe_logger = "0.2"

有一个示例

use log::{info, warn, error, debug};
use moe_logger::LogConfig;

fn main() {
    let log_config = LogConfig::builder()
        .env("MOE_LOG_LEVEL")
        .output("run.log")
        .format("{t} {L} {T} > {M}\n")
        .rotation(10000)
        .finish();
    moe_logger::init(log_config);

    info!("Di di ba ba wu~");
    debug!("Debug...");
    warn!("WARNING!");
    error!("Oops >_<");
}

功能

(^ω^) 下面是一些关于提供的功能的说明。

输出

如果您指定了存储日志的路径,Moe Logger将在此路径上写入格式化日志,同时在同时将非格式化日志写入stdout。

(;>△<) 如果日志文件存在,Moe Logger将仅使用stdout!因此,在运行之前将旧日志移动到另一个位置。

格式

我们使用TinyTemplate来格式化写入文件的日志内容。如果您对更复杂的日志感兴趣,您可能应该查看其文档。Moe Logger提供了以下变量:

  • t - RFC3339 日期和时间
  • L - 日志级别
  • T - 日志目标
  • M - 日志消息
  • F - 文件名

默认格式:{L} {T} > {M}\n

(;>△<) 不要忘记 \n

轮转

您可以在写入多少行后指定,Moe Logger将将其重命名如 output.log.x。默认为0表示禁用。

性能

(。・`ω´・)ノ 将日志写入磁盘会降低您代码的效率。但我们始终在尝试优化这个问题。如果您有任何想法,欢迎提交pull requests和issues。

下表显示了启用不同功能时的性能差异。(在我的PC上运行actix-web后端)

功能 每秒请求数
无日志 ~16000
仅输出到stdout ~15000
stdout & 文件 ~5600
stdout & 文件(带轮转) ~5200

许可证

Moe Logger在Apache-2.0和MIT许可证的条款下分发。

依赖项

~7-18MB
~218K SLoC