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

本文关键字:事件 创建 自定义 日志 Log4Net | 更新日期: 2023-09-27 18:37:08

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

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

我可以在所有日志调用上添加错误处理,但我对此的感觉是我不应该。 这些消息正在 catch 处理程序中记录,以查找已发生的另一个错误。 如果无法记录错误信息,我将如何处理它?

无论如何,我昨天尝试在XP虚拟机上创建自定义事件日志,但仍未创建。 究竟需要执行哪些操作才能在这两台计算机上创建自定义事件日志?

托尼

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

事实证明,问题根本不在日志记录代码中。我的程序使用 WPF 作为 GUI。 它的启动序列在 UI 线程上执行最少的工作量,以便它可以尽快显示 UI。

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

长话短说,使程序崩溃的问题是 XamlParseException . 之所以会引发此问题,是因为我在后台线程上调用自定义MessageBox's Show方法,而不是在 UI 线程上。 由于我在事件查看器中找不到自定义事件源,因此找不到错误,因此我认为该错误是权限问题。

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

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

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

一般来说,你需要阅读这个:http://msdn.microsoft.com/en-us/library/49dwckkz(v=vs.80).aspx

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

"通常,在安装应用程序期间创建新的事件源。这允许操作系统有时间刷新其已注册的事件源列表及其配置。如果操作系统尚未刷新其事件源列表,并且您尝试使用新源写入事件,则写入操作将失败。如果无法在安装期间创建源,请尝试在第一次写入操作之前(可能在应用程序初始化期间)创建源。如果选择此方法,请确保初始化代码在计算机上以管理员权限运行。这些权限是创建新事件源所必需的。

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