3

尝试从控制台应用程序写入事件日志时,我不断收到此错误消息。这是我写它的方式

public static void WriteToEventLog(Exception ex)
    {
        string mySource = "Export Task";
        if (!EventLog.SourceExists(mySource))
            EventLog.CreateEventSource(mySource, "Application");

        EventLog myLog = new EventLog();
        myLog.Source = mySource;

        myLog.WriteEntry(ex.ToString());

    }

有谁知道为什么会发生这种情况以及我该如何解决?

4

7 回答 7

12

对我来说,这听起来像:

  • 发生这种情况是因为事件日志已满。
  • 通过清空事件日志来修复它。

如果不是这种情况,请编辑您的问题以明确表明您认为事件日志未满,以及您如何得出此结论的。

于 2009-08-19T14:11:17.160 回答
9

我在使用 Visual C# 2010 Express 的 Windows XP 上遇到了同样的错误,这对我有用:

转到开始->控制面板->管理工具->事件查看器

然后选择 Action->Properties 并选择“Overwrite Events as Needed”

您还可以增加日志的最大大小。

于 2012-12-13T20:45:46.983 回答
6

如果您打开事件查看器,右键单击有问题的事件日志并选择“属性”,您可以看到事件日志的大小。您可以将其放大或将其下方的选项更改为“根据需要覆盖事件”。

于 2009-08-19T14:22:48.877 回答
3

最有可能的情况是,您使用的是默认应用程序日志,该日志通常由您机器上的几乎所有应用程序写入(就像您编写的应用程序一样)。随着时间的推移,事件日志会填满并达到最大值

所以我的建议是创建一个新的自定义事件日志,而不是重用“应用程序”日志。这样,您可以捕获此异常(这是一个有效的情况)并通过调用EventLog.Clear 并重试写入事件操作来处理它。还要检查您是否正在淹没事件日志,负责任地记录。

另一方面,您也可以更改应用程序日志的事件日志属性。(事件查看器,在应用程序日志节点上显示属性) - 您可以指定日志的最大大小 (512 KB) 以及如何处理包装,例如在达到最大大小时覆盖超过 7 天的条目。(这似乎是我的 WinXP 机器上的默认设置)。但是您必须在每台机器上都这样做……但是您可以尝试一下

于 2009-08-19T14:21:59.813 回答
2

自定义事件日志源的默认大小为 512k。这让我咬了好几次。您可以覆盖它以使其大小更加合理(特别是如果您正在为调试目的编写信息日志)。

于 2009-08-19T14:21:07.053 回答
0

您是否尝试过以下代码?

log.ModifyOverflowPolicy(OverflowAction.OverwriteAsNeeded, log.MinimumRetentionDays);
于 2013-01-23T12:50:34.420 回答
0

启动事件查看器 选择您的事件日志并右键单击,点击“属性”以 KB 为单位提高最大日志大小(这必须是 64 KB 的倍数,但如果您输入一个数字,如果不是这种情况,则会更正是一个倍数,生产中的声音值可以是100MB,比如这里可以输入100,000。

请注意,在生产中,如果日志仍然已满,您可能不想覆盖事件。这表示错误的日志记录或经常记录和发生的错误。

事件日志属性

于 2022-01-18T15:49:34.377 回答