6个版本

0.2.2 2023年2月18日
0.2.1 2023年2月17日
0.1.1 2021年10月31日
0.1.0 2020年6月25日
0.0.0 2020年6月25日

#165调试 中排名

Download history 610/week @ 2024-03-13 673/week @ 2024-03-20 358/week @ 2024-03-27 688/week @ 2024-04-03 640/week @ 2024-04-10 571/week @ 2024-04-17 493/week @ 2024-04-24 409/week @ 2024-05-01 407/week @ 2024-05-08 555/week @ 2024-05-15 622/week @ 2024-05-22 548/week @ 2024-05-29 451/week @ 2024-06-05 386/week @ 2024-06-12 453/week @ 2024-06-19 581/week @ 2024-06-26

每月2,014次下载
用于 4 个Crate(3个直接使用)

MIT/Apache

17KB
250

eventlog

Latest version Documentation

Windows事件日志API的log兼容包装器。

感谢Jeroen C. van Gelderen创建了winlog项目,该项目为此分支提供了代码。

特性

  • 使用RegisterEventSourceWReportEventW API将Rust日志消息写入Windows事件日志。
  • 提供实用函数以在Windows注册表中注册/注销您的事件源
  • 嵌入一个包含必要日志消息模板的小型(120字节)消息资源库到您的可执行文件中。
  • 不会panic。

将五个Rust日志级别映射到以下Windows事件类型

Rust日志级别 Windows事件类型 Windows事件ID
错误 错误 1
警告 警告 2
信息 信息性 3
调试 信息性 4
跟踪 信息性 5

需求

  • Rust 1.29+ on Windows with MSVC toolchain
  • [Windows,可选] mc.exerc.exe(仅在更改eventmsgs.mc时需要)
  • [Windows,可选] PowerShell(用于端到端测试)

使用方法

Cargo.toml

[dependencies]
eventlog = "0.1.0"

在Windows中注册日志源

在Windows注册表中注册日志源

eventlog::register("Example Log").unwrap();

这通常需要管理员权限,因此通常在安装时完成。

如果您的MSI安装程序(或类似程序)注册了您的事件源,则不应调用此操作。

记录事件

eventlog::init("Example Log", log::Level::Trace).unwrap();

info!("Hello, Event Log");
trace!("This will be logged too");

注销日志源

注销日志源

eventlog::deregister("Example Log").unwrap();

这通常在程序卸载期间完成。如果您的MSI安装程序(或类似程序)注销了您的事件源,则不应调用此操作。

内部结构

工件eventmsgs.libeventmsgs.rs受源代码控制,因此用户不需要安装mc.exerc.exe即可进行标准构建。

  1. 如果build.rs确定eventmsgs.mc已更改,则build.rs
    • 调用mc.exe(这将创建eventmsgs.h
    • 调用rc.exe(这将创建eventmsgs.lib
    • eventmsgs.h创建eventmsgs.rs
  2. build.rs发出链接器标志,以便可以找到eventmsgs.lib
  3. 标准cargo build随后。

测试

端到端测试需要对HKLM\SYSTEM\CurrentControlSet\Services\EventLog\Application注册表键的“完全控制”权限。

cargo test

过程

  1. 创建一个唯一的临时事件源名称(eventlog-test-###########)。
  2. 将编译后的测试可执行文件注册为Windows注册表中事件源的EventMessageFile。您可以在HKLM\SYSTEM\CurrentControlSet\Services\EventLog\Application\eventlog-test-###########中看到新键。
  3. 向事件源写入一些日志消息。
  4. 使用PowerShell检索已记录的消息。
  5. 注销我们的事件源。这将删除eventlog-test-##########注册表键。
  6. 断言检索到的日志消息是正确的。

许可协议

根据您的选择,许可协议可以是以下之一

贡献

除非您明确说明,否则任何有意提交以包含在您的工作中的贡献,如Apache-2.0许可协议中定义的,均应按上述方式双重许可,不附加任何额外条款或条件。

依赖关系

~0.6-1.8MB
~33K SLoC