事件日志文件已满。

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());

    }

有人知道为什么会出现这种情况,以及我该如何解决吗?

请查看此页面:http://www.howtogeek.com/howto/windows/fixing-the-event-log-is-full-error-on-windows-xp/ - RajeshKdev
7个回答

12

对我来说,听起来像是:

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

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


我认为他可能希望有一种编程方式来清空它,而不是通过事件查看器手动清空。 - Vinko Vrsalovic
另一个解决方案是增加事件日志的容量。 - Jeff Sternal
@Vinko:鉴于“有人知道为什么会发生这种情况吗”,我不确定...肯定需要更多信息。 - Jon Skeet
它满的原因可以在日志文件中找到。只需查看占据如此多条目的内容以及它们所涉及的事情。这就是根本原因。 - Christophe De Troyer

9

我在使用Visual C# 2010 Express时,在Windows XP上遇到了同样的错误,以下是我解决问题的方法:

进入开始菜单->控制面板->管理工具->事件查看器

然后选择“操作”->“属性”,并选择“根据需要覆盖事件”

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


6

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


3
最有可能的情况是,您正在使用默认的应用程序日志,该日志通常由计算机上几乎所有应用程序写入(就像您编写的应用程序一样)。随着时间的推移,事件日志会填满并达到其最大容量。
因此,我的建议是创建一个新自定义事件日志,而不是重复使用“应用程序”日志。这样,您可以捕获此异常(这是一种有效的情况),通过调用EventLog.Clear并重试写入事件操作来处理它。还要检查是否在泛滥事件日志,并负责记录。
另一方面,您还可以更改应用程序日志的事件日志属性。(事件查看器,在应用程序日志节点上呈现属性)-您可以指定日志的最大大小(512 KB),以及如何处理换行符,例如超过7天时覆盖旧条目当达到最大尺寸时。(这似乎是我WinXP机器上的默认设置)。但您必须在每台机器上执行此操作...但这是您可以尝试的内容。

2

自定义事件日志源的默认大小为512k。这在多次使用中给我带来了麻烦。您可以覆盖此设置,以使其更加合理(特别是如果您正在编写用于调试目的的信息日志)。


0

你尝试过以下代码吗?

log.ModifyOverflowPolicy(OverflowAction.OverwriteAsNeeded, log.MinimumRetentionDays);

0

打开事件查看器 选择您的事件日志,右键单击,点击“属性” 将最大日志大小增加到KB(必须是64 KB的倍数,但如果您输入一个数字,它将被更正为多个。例如,在生产中,一个合理的值可以是100 MB,因此可以在此处输入100,000。

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

Event log properties


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接