2个不稳定版本
使用旧的Rust 2015
0.1.0 | 2016年4月27日 |
---|---|
0.0.1 | 2016年4月24日 |
#109 in #log-file
275KB
5K SLoC
flexi_config
Rust包,提供flexi_logger的配置文件
lib.rs
:
此包允许程序从配置文件配置flexi_logger。为此,您首先需要创建配置文件。这可以通过读取Cargo.toml动态完成。以下代码展示了从Cargo.toml文件创建log.toml文件
use flexi_config::FlexiConfig;
// Read the Cargo.toml file for the project
let mut config = FlexiConfig::from_cargo_file("Cargo.toml").unwrap();
// Change the default directory to "logs" for the log files
config.disk_dir = Some(String::from("logs"));
// Create a config file named log.toml
config.to_toml_file("log.toml").unwrap();
然后当您的程序真正运行时,您将加载配置文件并使用它初始化flexi_logger。以下代码是示例:
use flexi_config::{FlexiConfig, Target};
// Load the log.toml configuration file
let mut config = FlexiConfig::from_toml_file("log.toml").unwrap();
// Force the logging to a file instead of stderr (ignoring the config file settings).
// Then applies the configuration to flexi_logger.
config.target(Target::Disk).apply();
配置文件
如果需要修改配置,可以通过调用各种方法和访问结构体的字段以程序方式完成。或者您可以手动编辑配置文件。
配置文件分为三个部分:[common]、[disk]和[depends]。
[common]
本节处理配置flexi_logger的一般设置。
application
此值不应更改。它必须与Cargo.toml文件中定义的应用程序内部名称匹配,该名称是“name”属性。
disk_format & stderr_format
这些设置定义了将日志记录到磁盘或stderr时的日志消息格式。有三个预定义的格式,这些格式实际上由flexi_logger定义。
- "default" - 使用
flexi_logger::default_format
函数来格式化日志消息。更多信息可以在这里找到。 - "detailed" - 使用
flexi_logger::detailed_format
函数来格式化日志消息。更多信息可以在这里找到。 - "opt" - 使用
flexi_logger::opt_format
函数来格式化日志消息。更多信息可以在这里找到。
此外,您还可以为日志消息定义自定义格式。自定义格式可以按照您希望的方式定义,并在{}字符之间插入特殊控制代码。以下代码是支持的:
f
- 插入生成日志消息的源文件名称。p
- 插入优先级(错误、警告、信息、调试、跟踪)作为一个单个小写字母。'e'代表错误,'w'代表警告,'i'代表信息,'d'代表调试,'t'代表跟踪。P
- 与p
相同,但使用大写字母。pp
- 以5个字符小写单词的形式插入优先级(错误、警告、信息、调试、跟踪)。'error' 表示错误,'warn' 表示警告,'info' 表示信息,'debug' 表示调试,'trace' 表示跟踪。'warn' 和 'info' 后会附加一个空格,使它们成为5个字符。PP
- 与pp
相同,但使用大写字母。l
- 插入源文件中日志消息的行号。m
- 插入文件所属的模块。c
- 插入文件所属的crate。t
- 插入当前时间。e
- 插入事件或实际的日志消息。
因此,自定义格式可以是:"{PP} | {c} | {f}:{l} | {e}",这将输出优先级,然后是crate,然后是带有行号的文件,最后是日志消息。如果您想输出大括号,则需要用反斜杠转义,如"\{ {e} \}"。
此外,在显示 'f'、'l'、'm'、'c' 或 'e' 时,您可以指定宽度以执行左对齐、右对齐或截断。
element := '{' type:[[align]width[trim]] '}'
align := '<' | '>'
width := integer
trim := '-' | ''
如果您想将文件名右对齐到20个字符,则指定 "{f:>20}"。如果文件名(包括路径)小于20个字符,则在名称之前插入空格,直到长度为20个字符。如果您想确保长度不超过20个字符,则可以添加 trim。
"{c:>20-}" 会输出crate,如果长度小于20个字符,则会在前面添加空格,如果长度较长,则显示crate名称的最后20个字符。当启用trim时,如果元素右对齐,则从值的开始删除,如果左对齐,则从字符串的末尾删除。
Trim也可以不进行对齐使用,因此您可以定义:"{e:64-}",这将显示最多64个字符的日志消息,然后丢弃任何剩余的字符。
要输出时间,您必须指定它应该显示。在 '{' 和 '}' 字符内,您需要添加冒号(:)后跟时间格式,即 "{t:<时间格式>}"。时间格式有其自己的特殊代码
%b
- 插入3个字符的月份名称小写,例如jan、feb、mar。%B
- 与 '%b' 相同,但使用大写字母。%d
- 插入月份中的天,为两位数,从01到31。%f
- 插入分数秒(毫秒),为3位数,从000到999。%H
- 插入一天中的小时(24小时制),从00到23。%I
- 插入一天中的小时(12小时制),从01到12。%m
- 插入月份的数字格式,为两位数,从01到12。%M
- 插入小时中的分钟,为两位数,从0到59。%p
- 根据当前时间插入 'am' 或 'pm'。%P
- 与%p
相同,但使用大写字母。%S
- 插入秒,为两位数,从00到59。%y
- 插入年份的最后两位数字,从00到99。%Y
- 插入完整的4位年份。%%
- 插入一个百分号(%)。
您可以使用 "{t:%d/%m/%Y %H:%M:%S.%f}" 来显示日期/月份/年份 小时:分钟/秒.毫秒的时间格式。
将这些组合在一起,以下格式字符串基本上可以复现 flexi_logger 的详细格式
[{t:%Y-%m-%d %H:%M:%S.%f}] {PP} [{m:32}] {f:32}:{l:>4}: {e}
优先级
这定义了最低优先级的日志消息。此处的有效值包括
- trace - 最低级别的日志消息。
- debug - 仍为低级别,但低于 trace。
- info - 提供信息性日志消息,高于 trace 和 debug。
- warn - 警告潜在问题,这是第二高的日志消息。
- error - 最高优先级,报告错误情况。
目标
标识消息要记录的位置。此选项只有两个值:“stderr”或“disk”。
[disk]
本节定义了一些只在记录到磁盘时使用的设置。
dir
标识要写入日志文件的目录。此值也可以为 false,如果您希望文件在当前目录中创建。
dup_err
Flexi_logger 可以将任何“error”消息复制到磁盘和 stdout。如果您希望“error”日志消息也写入 stdout,请将其设置为“true”。
dup_info
Flexi_logger 可以将任何“info”消息复制到磁盘和 stdout。如果您希望“info”日志消息也写入 stdout,请将其设置为“true”。
extension
为创建的日志文件提供扩展名。默认为“log”,但可以根据需要更改。
max_size
默认值为“false”,表示不限制日志文件大小,只需每天创建一个新文件。如果设置为 true,则指定文件在创建新文件之前可以增长的兆字节数。
name_suffix
默认值为“false”。如果您希望向文件名添加自定义后缀,则可以使用此参数指定。这对应于 flexi_logger 的 LogConfig 结构的区分字段。
timestamp
此值控制文件创建时是否将时间戳添加到文件名中。
[depends]
本节定义了应用程序任何依赖包的日志优先级。如果您的应用程序依赖于“rand”和“time”包,可以添加以下内容
[depends]
rand = "warn"
time = "trace"
以启用“rand”的警告消息及以上,并启用“time”的所有日志消息。优先级定义方式与[common]部分相同,因此有
- trace - 最低级别的日志消息。
- debug - 仍为低级别,但低于 trace。
- info - 提供信息性信息,高于 trace 和 debug。
- warn - 警告潜在问题,这是第二高的日志消息。
- error - 最高优先级,报告错误情况。
依赖关系
~7MB
~130K SLoC