企业库无法记录日志

3
我正在使用Ent Lib 5记录事件日志。当我在Windows 7机器上运行应用程序时,一切正常。但是当我将其部署到Windows Server 2008上时,它就停止记录日志了。它不会写任何内容到事件日志中。在两台机器上都安装了Ent Lib 5。
你认为可能是什么问题?
2个回答

7
这是在登录Windows事件日志时常见的情况。可能是因为事件源未在您的Windows Server 2008上注册。当您在开发机上运行它时,您(像大多数开发人员一样)可能具有管理员权限,.NET框架会自动创建事件源,第一次使用它们。没有管理员权限的任何应用程序都无法创建事件源,因此记录失败。应用程序继续运行,因为Logging块的哲学是不分心,但没有任何日志记录。
在部署应用程序时,您应该包含一个安装程序类来创建您的事件源。对于开发,快速解决方案是使用Windows PowerShell。运行升级版PowerShell进程,并使用此命令:
[System.Diagnostics.EventLog]::CreateEventSource(sourceName, logName)

创建给定日志的事件源。

或者,对EntLib程序集运行InstallUtil。 EntLib中附带了一个InstallServices.bat可以为您执行此操作。

详见Codeplex讨论


1
我创建了一个PowerShell脚本来完成这个任务。
  • 检查它们是否正在运行为高级权限 - 如果不是,则警告用户
  • 检查事件日志是否存在
  • 如果不存在,则创建事件日志
  • 向用户显示结果的消息
https://gist.github.com/3668859:RegisterEventLog.ps1
- Dan

0

你也可以使用regedit手动添加事件源。

请参阅此MSDN文章


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接