NLog: невозможно записать в журнал событий - PullRequest
14 голосов
/ 02 июля 2010

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

Вот мой NLog.config:

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      throwExceptions="true">
    <targets>
        <target name="console" xsi:type="Console" layout="${message}" />
        <target xsi:type="EventLog" name="eventlog" layout="${message}" log="Application" source="aaaTest"/>
        <target xsi:type="File" fileName="log.txt" name="file"/>
    </targets>

    <rules>
        <logger name="*" minlevel="Debug" writeTo="eventlog,console,file" />
    </rules>
</nlog>

В окне просмотра событий я просматриваю «Просмотр событий (локальный)»> «Журналы Windows»> «Приложение».Однако я не вижу в журнале экземпляров «aaaTest» (мой определенный источник).

1 Ответ

18 голосов
/ 13 января 2011

Из nlog сообщения на форуме

Чтобы иметь возможность писать в EventLog, приложение должно быть зарегистрировано в качестве источника события.Если вы запускаете VS от имени администратора, это происходит автоматически.Если вы создаете установщик и устанавливаете приложение, оно регистрируется.

Чтобы зарегистрировать приложение вручную в качестве источника событий, я использую следующий скрипт:

Set Args = WScript.Arguments
If Args.Count < 1 then
    WScript.Echo "USAGE: CreateEventSource.vbs <EventSourceName>"
    WScript.Quit
End If
EventSourceName = Args(0)

Set WshShell = WScript.CreateObject("WScript.Shell")

'Create event source
KeyName = "HKLM\SYSTEM\CurrentControlSet\Services\Eventlog\Application\" & EventSourceName & "\EventMessageFile"
'Change path to .NET Framework version used
WshShell.RegWrite KeyName,"%windir%\Microsoft.NET\Framework64\v2.0.50727\EventLogMessages.dll", "REG_EXPAND_SZ" 
...