将事件日志组织到文件夹中

本文关键字:文件夹 事件 日志 | 更新日期: 2023-09-27 17:59:19

我想创建多个服务,并希望它们将每个服务记录在我指定的同一目录/文件夹下的日志条目中,这样当我打开Windows事件查看器时,我可以看到它们都放在一个文件夹中。例如,service1将登录到service1_log,service2将登录到services2_log,service1_log和service2_log都将位于一个名为Myservices的文件夹中。我在Windows事件日志API或任何其他API中找不到任何适合此问题的内容。。我可以在windows事件查看器中看到有文件夹,但我只能在那里的日志层次结构的根目录中创建日志。

提前感谢托马斯

将事件日志组织到文件夹中

Windows事件日志不会登录到目录中。但是,事件日志分为多个日志(应用程序系统安全等),这些日志在事件查看器中显示为文件夹。您可以通过调用EventLog.CreateEventSource创建自己的日志,该日志将作为单独的文件夹显示在应用程序和服务日志中(假设为Windows Vista或更高版本)。

但是,我不建议您创建自己的日志。相反,您可以让您的服务登录到应用程序日志。通过让每个服务使用一个单独的事件源,您可以轻松地过滤Application日志,只显示感兴趣的日志消息。再次假设Windows Vista或更高版本,您可以在自定义视图节点下创建一个自定义视图,并按源进行筛选。然后,此文件夹将只显示来自您的服务的日志消息。


快进五年:现在,通过使用EventSource类可以很容易地创建您自己的日志,该日志可以在Application and Services Logs中看到,该类允许您为Windows事件跟踪(ETW)创建事件。ETW是高度可配置的,具有非常好的性能,但最初使用起来也有点困难。消息大小是有限的,安装新的清单需要管理权限,而诊断等通道正在收集无法查看日志等的数据。但总的来说,ETW是记录到应用事件日志的一个很好的替代方案。

长话短说,使用.NET4框架并不容易实现。看起来.NET 4.5对此提供了更好的支持,但它并不是非常简单。您可以将它们放在每个应用程序的文件夹中,但将这些文件夹放在公用文件夹中会复杂得多。

请参阅另一个线程上的以下answser:https://stackoverflow.com/a/10528920/848419