我正在尝试通过 .net 将基本日志记录设置到 .net 中的 Windows 事件日志System.Diagnostics.EventLog
,但我没有看到任何实际写入日志的事件。考虑以下代码:
// Elsewhere in the class
private static readonly string EventLogName = "LogName";
private static readonly string EventLogSource = "AppName";
// In the only function that does something
if (!EventLog.Exists(EventLogName))
{
EventLog.CreateEventSource(EventLogSource, EventLogName);
return;
}
else
{
Trace.TraceInformation("Attempting log");
// This doesn't write anything
EventLog.WriteEntry(EventLogSource,
"StaticWriteEntry",
EventLogEntryType.Error);
// Neither does this
using (var log = new EventLog())
{
log.Log = EventLogName;
log.Source = EventLogSource;
log.WriteEntry("WriteEntry?", EventLogEntryType.Error);
}
}
return;
根据 MSDN 示例,我第一次创建日志并退出应用程序。当然,此日志创建最终将进入设置。随后的运行尝试将消息记录到创建的事件日志中。
没有异常被抛出。日志似乎已成功创建(我可以在 Windows 事件查看器中打开它)。没有任何相关内容被记录到安全日志中。
任何一个都不会记录任何消息WriteEntry()
。由于名称不匹配,它们也不会放在应用程序日志中。在这种特殊情况下,我在禁用 UAC 的管理员帐户中在 Server2008 上运行。(这是需要不幸环境的较大遗留产品的一小部分。)我做错了什么?
(我这样做是因为我想EventLogTraceListener
在我的 app.config 中使用 an,而且它没有写任何东西,所以这是解决该问题的一部分。)