2011-02-16 131 views
3

我使用Ent Lib 5登录到事件日志。当我在Windows 7机器上运行应用程序时,一切正常。但是当我将它部署在Windows Server 2008上时,它只会停止记录。它不会向事件日志写入任何内容。在两台机器上都安装了Ent Lib 5。企业库不记录

那么你怎么看?可能是什么问题?

回答

7

这是登录到Windows事件日志时的常见情况。这很可能是由于事件源未在Windows Server 2008上注册的事实。当您在开发计算机上运行它时,您(像大多数开发人员)可能拥有管理员权限,.NET Framework会在第一次自动创建事件源你使用它们。任何没有管理员权限的应用程序都不能创建事件源,因此记录失败。该应用程序继续运行,因为Logging块的理念是不分心的,但没有记录。

部署应用程序时,应该包含一个安装程序类来创建事件源。对于开发,快速解决方案是使用Windows PowerShell。运行提升的PowerShell进程,并使用以下命令:

[System.Diagnostics.EventLog]::CreateEventSource(sourceName, logName) 

创建给定日志的事件源。

或者,在EntLib程序集上运行InstallUtil。有一个随EntLib一起提供的InstallServices.bat,它将为您执行此操作。

查看更多的Codeplex discussion

+1

我创建了一个PowerShell脚本来做到这一点。 - 检查它们是否以升高的权限运行 - 如果不是用户,则向用户发出警告 - 检查以查看事件日志是否存在 - 创建事件日志(如果不是) - 将消息显示为用户到结果 https://gist.github.com/3668859:RegisterEventLog.ps1 – Dan 2012-09-07 19:23:22