如何在Windows Event Viewer中删除和创建日志

时间:2018-12-10 14:21:24

标签: c# event-log event-viewer

我有一个应用。我尝试在Windows Event Viewer崩溃时写日志。我发现了Write to Windows Application Event Log,并且正在使用DispatcherUnhandledExceptionEventHandler来捕获未处理的异常。我在应用的构造函数中设置它,例如:

 DispatcherUnhandledException += MyApplication_DispatcherUnhandledException;

并这样写日志:

using (EventLog eventLog = new EventLog("Application"))
        {
            eventLog.Source = "Application";
            eventLog.WriteEntry(exceptionMessage, EventLogEntryType.Error);
        }

创建日志,但是在Run的{​​{1}}方法中发生另一个异常,并且Windows在事件查看器中使用另一个ID,源添加了此错误。

System.Windows.Application
  

异常信息:System.Exception      在ServerApp.MainWindow..ctor()

     

异常信息:System.Windows.Markup.XamlParseException      在System.Windows.Markup.WpfXamlLoader.Load(System.Xaml.XamlReader,System.Xaml.IXamlObjectWriterFactory,布尔值,System.Object,System.Xaml.XamlObjectWriterSettings,System.Uri)中      在System.Windows.Markup.WpfXamlLoader.LoadBaml(System.Xaml.XamlReader,布尔值,System.Object,System.Xaml.Permissions.XamlAccessLevel,System.Uri)      在System.Windows.Markup.XamlReader.LoadBaml(System.IO.Stream,System.Windows.Markup.ParserContext,System.Object,布尔值)      在System.Windows.Application.LoadBamlStreamWithSyncInfo(System.IO.Stream,System.Windows.Markup.ParserContext)      在System.Windows.Application.LoadComponent(System.Uri,布尔)      在System.Windows.Application.DoStartup()

如何只写我的登录事件查看器?

2 个答案:

答案 0 :(得分:3)

using System;
using System.Diagnostics;

...
...

public void WriteToEventLog(EventLogEntryType eventLogType, string message, string logSourceName)
{
    if (!EventLog.SourceExists(logSourceName))
    {
        EventLog.CreateEventSource(logSourceName, "Application");
    }
    using (var eventLog = new EventLog { Source = logSourceName })
    {
        const int maxLength = 31000;
        if (message.Length > maxLength)
        {
            message = message.Substring(0, maxLength);
        }
        eventLog.WriteEntry(message, eventLogType);
    }
}

要使用此应用程序运行帐户的用户必须具有访问权限才能创建日志。

祝你好运。

答案 1 :(得分:0)

我会尝试整个过程,然后将异常写入文件 参见:

how to save exception in txt file?

您不必总是写文件,而只是了解实际情况