我想创建多个服务,并且我希望它们在我指定的同一目录/文件夹下的日志条目中记录每个服务,因此当我打开Windows事件查看器时,我可以看到它们都放在一个文件夹中。例如,service1将登录到service1_log,service2将登录到service2_log,service1_log和service2_log都将驻留在名为Myservices的一个文件夹中。 我没有在Windows事件日志API或任何其他适合此问题的API中找到任何内容。我可以在Windows事件查看器中看到有文件夹,但我只能在日志层次结构的根目录中创建日志。
提前致谢 托马斯
答案 0 :(得分:4)
Windows事件日志不会登录目录。但是,事件日志会分成几个日志(应用程序,系统,安全等),这些日志在事件查看器中显示为文件夹。您可以通过调用EventLog.CreateEventSource
创建自己的日志,该日志将在应用程序和服务日志(假设Windows Vista或更高版本)中显示为单独的文件夹。
但是,我不建议您创建自己的日志。相反,您可以让您的服务登录到应用程序日志。通过让每个服务使用单独的事件源,您可以轻松过滤应用程序日志,仅显示有趣的日志消息。再次假设Windows Vista或更高版本,您可以在自定义视图节点下创建自定义视图并按源过滤它。然后,此文件夹将仅显示来自您服务的日志消息。
快进五年:现在,通过使用允许您为EventSource
创建事件的Event Tracing for Windows (ETW)类,可以很容易地在Application and Services Logs
中创建自己的日志。 。 ETW具有高度可配置性,性能非常好,但最初也可能有点难以使用。邮件大小有限,安装新清单需要管理权限,而诊断等渠道正在收集您无法查看日志等的数据。但总而言之,ETW是一个很好的替代登录到< em>应用程序事件日志。
答案 1 :(得分:1)
简而言之,使用.NET 4框架并不容易实现。看起来.NET 4.5为此提供了更好的支持,但并不是非常简单。您可以将它们放入每个应用程序的文件夹中,但将这些文件夹放在一个公共文件夹中会复杂得多。
在另一个帖子上查看以下答案: https://stackoverflow.com/a/10528920/848419