记录应用程序阻止 - 无法写入Windows事件日志

时间:2011-06-28 09:12:23

标签: c# logging c#-4.0 enterprise-library

我正在学习Enterprise Library 5.0,并且遇到应用程序日志记录阻塞问题:示例应用程序“Logging”(http://entlib.codeplex.com/releases/view/46741#DownloadId=140302)不写到Windows事件日志(日志类别 - “常规”,主菜单功能“SimpleLogWriterWrite”。有一次它创建了具有给定名称的新Windows事件日志,但是另一次 - 没有(使用其他名称)。有一次它写了消息进入exisitng日志,另一次 - 没有。问题是什么?

感谢。

2 个答案:

答案 0 :(得分:3)

登录到Windows事件日志时,必须先在操作系统中注册事件源,然后才能成功使用它。通常,.NET框架将在您第一次使用时自动创建事件源,但创建事件源需要管理员权限。您可以以管理员身份运行应用程序并将其注册或搜索MSDN以“注册事件源”。

答案 1 :(得分:1)

在编写事件之前,必须先在Windows中注册事件日志和源名称。编写事件可以由任何用户帐户完成,但创建事件日志和源名称需要管理员权限。

在生产应用中设置事件日志记录的最佳方法是在安装期间创建事件日志和源名称,此时您可以合法地要求管理员权限。最简单的方法是:

  1. Installer Class组件添加到您的应用程序项目中。
  2. EventLogInstaller组件添加到安装程序组件的设计图面。默认情况下,这在工具箱中不可用,但您可以从工具箱右键单击菜单轻松添加它。
  3. 设置EventLogInstaller组件的属性以创建所需的事件日志和源名称。
  4. 配置您的安装项目以调用自定义操作,然后将其指向应用的安装程序组件。具体如何执行此操作取决于您的安装程序技术。
  5. 配置您的安装项目以在运行时请求UAC提升。具体如何执行此操作取决于您的安装程序技术。