0

获取此异常 文件大小超过允许的限制,使用写入事件查看器时无法保存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)

尝试的事情:

  1. http://support.microsoft.com/kb/328380#top
  2. 当我 在收到不同的异常elog.Clear()之前发表此声明时elog.EnableRaisingEvents = true;

    System.ComponentModel.Win32Exception (0x80004005):访问在 System.Diagnostics.EventLogInternal.Clear() 被拒绝

上面的代码是由运行在LocalSystem下的 Web 服务执行的,该服务对计算机具有完全权限。

操作系统:windows server 2008R2 和 .NET 4.0

4

2 回答 2

1

有一个方法 EventLog.ModifyOverflowPolicy 可以修改日志策略。我相信 EventLog.ModifyOverflowPolicy(OverflowAction.OverwriteAsNeeded,0) 可能会有所帮助。

于 2012-08-30T20:20:13.903 回答
-1

事件查看器 - 属性 - 最大日志大小为 1028。我撞了它,它开始正常工作。

但是在我进行上述更改之前,相同的代码正在另一个窗口服务中工作。这让我想到会发生什么

我试图记录的消息只是一行(少于 255 个字符)

于 2012-08-30T20:35:46.913 回答