4个版本
0.0.4 | 2024年5月6日 |
---|---|
0.0.3 | 2024年3月7日 |
0.0.2 | 2023年12月6日 |
0.0.1 | 2023年2月6日 |
#71 in 调试
4,491 每月下载次数
用于 12 个crate(7 直接使用)
52KB
718 代码行
RustLogs (RLG)
A Rust library that implements application-level logging with a simple, readable output format.
概述
RustLogs (RLG) 是一个Rust库,它以简单、易读的格式实现应用程序级别的日志记录。它提供日志API和各种辅助宏,以简化常见的日志任务。
特性
- 支持多种日志级别:
ALL
、DEBUG
、DISABLED
、ERROR
、FATAL
、INFO
、NONE
、TRACE
、VERBOSE
和WARNING
- 提供易于解析和过滤的结构化日志格式
- 与多种输出格式兼容,包括
- 通用事件格式(CEF)
- 扩展日志格式(ELF)
- Graylog扩展日志格式(GELF)
- JavaScript对象表示法(JSON)
- NCSA通用日志格式(CLF)
- W3C扩展日志文件格式(W3C)
- 系统日志格式
- Apache访问日志格式
- Logstash格式
- Log4j XML格式
- NDJSON(换行分隔JSON)
- 等
安装
要在您的Rust项目中使用 rlg
,请将以下内容添加到您的 Cargo.toml
文件中
[dependencies]
rlg = "0.0.4"
要求
rlg
需要 Rust 1.60 或更高版本。
文档
ℹ️ 信息:请访问我们的 网站 获取更多信息,并在 docs.rs、lib.rs 和 crates.io 上找到我们的文档。
用法
基本日志记录
use rlg::log::Log;
use rlg::log_format::LogFormat;
use rlg::log_level::LogLevel;
// Create a new log entry
let log_entry = Log::new(
"12345",
"2023-01-01T12:00:00Z",
&LogLevel::INFO,
"MyComponent",
"This is a sample log message",
&LogFormat::JSON, // Choose from various formats like JSON, Syslog, NDJSON, etc.
);
// Log the entry asynchronously
tokio::runtime::Runtime::new().unwrap().block_on(async {
log_entry.log().await.unwrap();
});
自定义日志配置
use rlg::config::Config;
use rlg::log::Log;
use rlg::log_format::LogFormat;
use rlg::log_level::LogLevel;
// Customize log file path
std::env::set_var("LOG_FILE_PATH", "/path/to/log/file.log");
// Load custom configuration
let config = Config::load();
// Create a new log entry with custom configuration
let log_entry = Log::new(
"12345",
"2023-01-01T12:00:00Z",
&LogLevel::INFO,
"MyComponent",
"This is a sample log message",
&LogFormat::ApacheAccessLog
);
// Log the entry asynchronously
tokio::runtime::Runtime::new().unwrap().block_on(async {
log_entry.log().await.unwrap();
});
配置
默认情况下,RustLogs (RLG) 将日志记录到当前目录中名为 "RLG.log" 的文件。您可以通过设置 LOG_FILE_PATH
环境变量来自定义日志文件路径。
错误处理
在日志操作过程中可能会发生错误,例如文件I/O错误或格式错误。`log()
` 方法返回一个 `Result<(), io::Error>
`,表示日志操作的结果。您应该在代码中适当地处理潜在的错误。
use rlg::log::Log;
use rlg::log_format::LogFormat;
use rlg::log_level::LogLevel;
// Create a new log entry
let log_entry = Log::new(
"12345",
"2023-01-01T12:00:00Z",
&LogLevel::INFO,
"MyComponent",
"This is a sample log message",
&LogFormat::NDJSON, // Using NDJSON format for this example
);
// Log the entry asynchronously and handle potential errors
tokio::runtime::Runtime::new().unwrap().block_on(async {
match log_entry.log().await {
Ok(_) => println!("Log entry successfully written"),
Err(err) => eprintln!("Error logging entry: {}", err),
}
});
宏定义
RustLogs (RLG) 提供了一系列有用的宏来简化日志任务
macro_log!
:创建一个新的日志条目,具有指定的参数。macro_info_log!
:创建一个包含默认会话ID和格式的信息日志。macro_print_log!
:将日志打印到标准输出。macro_log_to_file!
:异步将消息记录到文件。macro_warn_log!
:创建一个警告日志。macro_error_log!
:创建一个包含默认格式的错误日志。macro_set_log_format_clf!
:如果尚未定义,则将日志格式设置为CLF。macro_debug_log!
:根据 `debug_enabled` 功能标志有条件地记录消息。macro_trace_log!
:创建一个跟踪日志。macro_fatal_log!
:创建一个致命日志。macro_log_if!
:根据谓词有条件地记录消息。macro_log_with_metadata!
:记录带有附加元数据的消息。
有关如何使用这些宏的更多详细信息,请参阅文档。
示例
`RLG
` 随附一些示例,您可以从中开始。示例位于项目的 `examples
` 目录中。要运行示例,请克隆存储库,并在项目根目录中从终端运行以下命令
cargo run --example rlg
语义版本策略
为了提高透明度并努力保持向后兼容性,`RLG
` 遵循 语义版本。
许可证
该项目根据MIT许可证和Apache许可证(版本2.0)的条款进行许可。
贡献
除非您明确声明,否则您有意提交以包含在作品中的任何贡献,根据Apache-2.0许可证定义,应按上述方式双许可,而不附加任何其他条款或条件。
致谢
特别感谢Rust Reddit社区为我们提供了大量关于如何改进此项目的有用建议。
依赖关系
~7-33MB
~486K SLoC