繁体   English   中英

Log4Net不会在事件查看器中创建自定义事件日志

[英]Log4Net won't create custom event log in event viewer

我的WPF应用程序使用Log4Net将消息记录到事件查看器。 这在大多数机器上都很好用。 但是,我的办公室中有两台机器存在问题。 一个是具有2 GB内存的物理Windows 7计算机,另一个是运行XP(也具有2 GB内存)的虚拟机。

问题是,即使用户使用具有管理员权限的帐户登录,系统也不允许他们创建我为应用程序设置的自定义事件日志。 这导致我的程序死亡。

我可以在所有Log调用上添加错误处理,但是我对此并不满意。 消息正在捕获处理程序中记录,因为已经发生了另一个错误。 如果无法记录错误信息,我该怎么办?

无论如何,我昨天试图在XP虚拟机上创建自定义事件日志,但仍未创建。 我究竟需要怎么做才能在这两台计算机上创建自定义事件日志?

托尼

事实证明,问题根本不在记录代码中。 我的程序将WPF用于GUI。 它的启动序列在UI线程上完成的工作量最少,因此可以尽快显示UI。

其余的初始化在后台线程上完成。 我知道发生了错误,但是在事件查看器的日志列表中找不到自定义错误日志。 事实证明,我的代码未在数据库中找到它需要的某些数据,并试图报告该错误。 这是一个两步过程,涉及到首先将错误记录到日志,然后显示自定义MessageBox对话框。 程序尝试显示此对话框时,我收到XamlParseException

简而言之,使程序崩溃的问题是XamlParseException 抛出该错误是因为我在后台线程而不是UI线程上调用自定义MessageBox's Show方法。 因为我无法在事件查看器中找到自定义事件源,所以无法找到错误,因此我认为该错误是一个迁移问题。

顺便说一句,我确实尝试过手动创建事件日志,昨天我检查了注册表,并找到了自定义事件源的条目。

这里还有另一台机器也有同样的问题。 我确定这是完全相同的问题。 我在错误处理中添加逻辑,以确保自定义MessageBox始终在UI线程上被调用,这样,如果再次出现相同的问题,程序就不会像这样轰炸。

我们将需要查看您如何尝试在XP计算机上创建事件日志...

通常,您需要阅读以下内容: http : //msdn.microsoft.com/zh-cn/library/49dwckkz(v=vs.80).aspx

特别是讨论何时创建自定义事件日志的注释:

“通常,请在安装应用程序期间创建新的事件源。这将使操作系统有时间刷新其已注册事件源及其配置的列表。如果操作系统尚未刷新其事件源列表,则您尝试如果要使用新的源编写事件,则写入操作将失败;如果无法在安装过程中创建源,请尝试在首次写入操作之前(可能是在应用程序初始化期间)创建源。这种方法,请确保初始化代码正在计算机上以管理员权限运行。创建新事件源需要这些权限。”

尝试在第一个日志记录事件之前创建自定义日志以使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM