使用EventLog
使用的代码:
string cs = "LoggingService";
EventLog elog = new EventLog();
if (!EventLog.SourceExists(cs))
{
EventLog.CreateEventSource(cs, cs);
}
elog.Source = cs;
elog.EnableRaisingEvents = true;
elog.WriteEntry(message);
堆栈追踪:
System.ComponentModel.Win32Exception (0x80004005): The file size exceeds the limit allowed and cannot be saved
at System.Diagnostics.EventLogInternal.get_OldestEntryNumber()
at System.Diagnostics.EventLogInternal.StartRaisingEvents(String currentMachineName, String currentLogName)
at System.Diagnostics.EventLogInternal.set_EnableRaisingEvents(Boolean value)
事情尝试了:
当我在elog.Clear()
之前发表此声明时elog.EnableRaisingEvents = true;
我得到了不同的异常
System.ComponentModel.Win32Exception(0x80004005):访问被拒绝 在System.Diagnostics.EventLogInternal.Clear()
上述代码由在 LocalSystem 下运行的Web服务执行,该服务在计算机上具有完全权限。
操作系统:Windows Server 2008R2和.NET 4.0
答案 0 :(得分:1)
有一种修改日志策略的方法EventLog.ModifyOverflowPolicy。 我相信EventLog.ModifyOverflowPolicy(OverflowAction.OverwriteAsNeeded,0)可能会有所帮助。
答案 1 :(得分:-1)
事件查看器 - 属性 - 最大日志大小为1028.我碰到它并且它开始正常工作。
但在我做出上述更改之前,相同的代码正在使用另一个窗口服务。 这让我想到可能发生的事情
我尝试记录的消息只是一行(少于255个字符)