Как удалить и создать журнал в Windows Event Viewer - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть приложение.Я пытаюсь написать логин Windows Event Viewer, когда он падает.Я нашел Запись в журнал событий приложений Windows , и я использую DispatcherUnhandledExceptionEventHandler для перехвата необработанного исключения.Я устанавливаю его в конструкторе приложения, например:

 DispatcherUnhandledException += MyApplication_DispatcherUnhandledException;

и пишу журнал так:

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

Журнал создает, но в Run метод System.Windows.Application происходит другойИсключение и Windows добавляет эту ошибку в окне просмотра событий с другим идентификатором, источником ....

Description: The process was terminated due to an unhandled exception.

Информация об исключении: System.Exception at ServerApp.MainWindow..ctor ()

Информация об исключении: System.Windows.Markup.XamlParseException в System.Windows.Markup.WpfXamlLoader.Load (System.Xaml.XamlReader, System.Xaml.IXamlObjectWriterFactory, Boolean, System.Object, System.Xamb.Wer.Or) .Samв System.Windows.Markup.WpfXamlLoader.LoadBaml (System.Xaml.XamlReader, логический, System.Object, System.Xaml.Permissions.XamlAccessLevel, System.Uri) в System.Windows.Markup.XamlReader.LoadIOam.Поток, System.Windows.Markup.ParserContext, System.Object, Boolean) в System.Windows.Application.LoadBamlStreamWithSyncInfo (System.IO.Stream, System.Windows.Markup.ParserContext) в System.Windows.Application.LoadComponent (System.Uri, Boolean) в System.Windows.Application.DoStartup ()

Как записать только мой журнал в программе просмотра событий?

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Я бы попытался обойти весь процесс, а затем записать исключение в файл, см.

как сохранить исключение в текстовом файле?

Выне всегда нужно писать в файл, а просто чтобы понять, что на самом деле происходит

0 голосов
/ 10 декабря 2018
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);
    }
}

Пользователь, под учетной записью которого будет запускаться это приложение, должен иметь доступ для создания журналов.

Удачи.

...