【问题标题】:Logging Application Block - can't write to Windows Event Log记录应用程序块 - 无法写入 Windows 事件日志
【发布时间】:2011-09-24 03:41:15
【问题描述】:
我正在学习 Ms Enterprise Library 5.0,但应用程序日志记录块存在问题:示例应用程序“Logging”(http://entlib.codeplex.com/releases/view/46741#DownloadId=140302)不写到 Windows 事件日志(记录类别 - “常规”,主菜单功能“SimpleLogWriterWrite”。一次它使用给定名称创建了新的 Windows 事件日志,但另一次 - 没有(使用另一个名称)。一次它写了消息进入现有日志,另一次 - 没有。有什么问题?
谢谢。
【问题讨论】:
标签:
c#
logging
c#-4.0
enterprise-library
【解决方案1】:
当记录到 Windows 事件日志时,必须先向操作系统注册事件源,然后才能使用它成功记录。通常 .NET 框架会在您第一次使用它们时自动创建事件源,但创建事件源需要管理员权限。您可以以管理员身份运行该应用程序并注册它或在 MSDN 中搜索“注册事件源”。
【解决方案2】:
必须先向 Windows 注册事件日志和源名称,然后才能编写事件。任何用户帐户都可以编写事件,但创建事件日志和源名称需要管理员权限。
在生产应用程序中设置事件日志的最佳方式是在安装期间创建事件日志和源名称,此时您可以合法地要求管理员权限。最简单的方法是:
- 将
Installer Class 组件添加到您的应用程序项目中。
- 将
EventLogInstaller 组件添加到安装程序组件的设计图面。这在工具箱中默认不可用,但您可以从工具箱右键菜单中轻松添加。
- 设置
EventLogInstaller 组件的属性以创建所需的事件日志和源名称。
- 配置您的安装项目以调用自定义操作,然后将其指向您应用的安装程序组件。具体如何执行此操作取决于您的安装程序技术。
- 将您的安装项目配置为在运行时请求 UAC 提升。具体如何执行此操作取决于您的安装程序技术。