Подтвердить что ты не робот

EventLog.CreateEventSource не создает собственный журнал

У меня есть такой код:

EventLog.CreateEventSource("myApp", "myAppLog");
EventLog.WriteEntry("myApp", "Test log message", EventLogEntryType.Error);

Теперь, если мне не хватает чего-то, прочитавшего MSDN, это должно привести к созданию нового журнала 'myAppLog' в средстве просмотра событий, и запись должна быть добавлена ​​в этот новый журнал с именем источника 'myApp'. Но я не могу создать новый журнал. Это всегда просто записывает сообщение журнала ошибок в журнал приложений, а источник "myApp" - "myAppLog" нигде не видно. Что я делаю не так? Я зарегистрирован как администратор.

4b9b3361

Ответ 1

Возможно ли, что вы уже использовали источник "myApp" при записи в стандартный журнал приложений? Если это соответствует MSDN:

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

http://msdn.microsoft.com/en-us/library/2awhba7a.aspx (примерно половина пути вниз по странице)

Ответ 2

Я только что написал небольшой код, чтобы помочь мне в этом. источник, зарегистрированный в другой проблеме журнала, с которой я столкнулся, и не хочу вручную удалять источники из журналов. То, что я решил сделать, это проверить, существует ли источник, если он проверяет, что он связан с правильным журналом, если он не удаляет исходный код, теперь, когда он не существует, или f никогда не создавал новый Log Log.

protected const string EventLogName = "MyLog";

private static bool CheckSourceExists(string source) {
  if (EventLog.SourceExists(source)) {
    EventLog evLog = new EventLog {Source = source};
    if (evLog.Log != EventLogName) {
      EventLog.DeleteEventSource(source);
    }
  }

  if (!EventLog.SourceExists(source)) {
    EventLog.CreateEventSource(source, EventLogName);
    EventLog.WriteEntry(source, String.Format("Event Log Created '{0}'/'{1}'", EventLogName, source), EventLogEntryType.Information);
  }

  return EventLog.SourceExists(source);
}

public static void WriteEventToMyLog(string source, string text, EventLogEntryType type) {      
  if (CheckSourceExists(source)) {          
      EventLog.WriteEntry(source, text, type);          
  }
}

Надеюсь, это поможет:)

Ответ 3

Возможно, вы забыли установить свойство Source в своем EventLog.

Он должен выглядеть примерно так:

        if(!EventLog.SourceExists("MySource"))
        {
            EventLog.CreateEventSource("MySource", "MyNewLog");
        }

        EventLog myLog = new EventLog();
        myLog.Source = "MySource";

        myLog.WriteEntry("Writing to event log.");

Здесь статья MSDN для справки.

Ответ 4

Установили ли вы источник в EventLog?

Из Статья MSDN.

Вы должны установить свойство Source на свой экземпляр компонента EventLog, прежде чем вы сможете записывать записи в журнал. Когда ваш компонент записывает запись, система автоматически проверяет, зарегистрирован ли указанный вами источник в журнале событий, к которому записывается компонент, и при необходимости вызывает CreateEventSource. В общем случае создайте новый источник событий во время установки вашего приложения. Это позволяет время для операционной системы обновлять список зарегистрированных источников событий и их конфигурацию. Если операционная система не обновила список источников событий и вы попытаетесь записать событие с новым источником, операция записи завершится с ошибкой. Если создание источника во время установки не является опцией, попробуйте создать источник задолго до первой операции записи, возможно, во время инициализации вашего приложения. Если вы выберете этот подход, убедитесь, что ваш код инициализации работает с правами администратора на компьютере. Эти права необходимы для создания новых источников событий.

Ответ 5

Если вы проверили все предложения в других ответах, прочитайте следующее

Из MSDN

Операционная система хранит журналы событий в виде файлов. Когда вы используете EventLogInstaller или CreateEventSource для создания нового журнала событий, соответствующий файл хранится в каталоге% SystemRoot%\System32\Config на указанном компьютере. Имя файла устанавливается путем добавления первых 8 символов свойства Log с расширением имени файла .evt.

Убедитесь, что первые 8 символов уникальны.

Ответ 6

В основном, самое простое решение - вам нужно закрыть свою визуальную студию и запустить ее как режим администратора. Затем вы сможете решить эту ошибку.