Журнал событий Windows Forms - PullRequest
       13

Журнал событий Windows Forms

3 голосов
/ 03 апреля 2010

Я пишу в журнал событий из моего приложения Windows Forms, работающего в Windows 7, и получаю это сообщение в журнале событий :

Описание для идентификатора события X из исходного приложения не найдено. Либо компонент, который вызывает это событие, не установлен на локальном компьютере, либо установка повреждена. Вы можете установить или восстановить компонент на локальном компьютере.

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

Следующая информация была включена в событие:

Сведения об исключении

ресурс сообщения присутствует, но сообщение не найдено в таблице строк / сообщений

Мой код регистрации:

public void Log(Exception exc)
{
    EventLog.WriteEntry(
        "Application", 
        exc.ToString(), 
        EventLogEntryType.Error, 
        100);
}

Моя регистрация в Windows Forms обычно ведется в БД, но в этом случае решили использовать журнал событий. Я обычно использую журнал событий в приложениях ASP.NET, но они находятся в XP Pro локально и Windows Server 2003 в веб-блоках.

Это Windows 7 или Windows Forms, и что мне делать, чтобы это исправить? Спасибо.

Ответы [ 3 ]

2 голосов
/ 03 апреля 2010

См. http://support.microsoft.com/kb/307024,, в частности, не забудьте создать свой источник событий.

0 голосов
/ 03 мая 2012

Это решение работало для меня:

В реестре Windows 7 или Win 2008 R2 есть ключ HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ eventlog \ CustomEventLog под этим ключом - все зарегистрированные действительные источники для этого журнала событий.

Когда вы пытаетесь записать в журнал событий источник, который не является допустимым (это не ключ в HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ eventlog \ CustomEventLog), он перечисляет другие ключи журналов событий, чтобы увидеть там существует источник.

Я добавил все отсутствующие источники в ключ HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ eventlog \ CustomEventLog. Просто создайте копию существующих ключей под этим ключом и переименуйте ее в свой EventSource.

0 голосов
/ 03 апреля 2010

Первый параметр в этой перегрузке - «Источник, с помощью которого приложение зарегистрировано на указанном компьютере». задокументировано здесь Если этот источник, как в вашем случае, «Приложение», вы получаете такое поведение. (Может быть, вы ошибочно думаете, что 1-й параметр относится к журналу Windows: приложение, безопасность и т. Д.?)

Чтобы зарегистрировать свой источник, сделайте это:

public void Log(Exception exc){
    if(!EventLog.SourceExists("MySource"))
    {
        EventLog.CreateEventSource("MySource", "MyNewLog");
        return ;
    }
    EventLog.WriteEntry(
     "MySource", 
     exc.ToString(), 
     EventLogEntryType.Error, 
     100); }  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...