NLog: не удается записать в журнал событий
Я не могу записать в журнал событий с 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>
В Event Viewer я смотрю "Event Viewer (Local)" > "Журналы Windows" > "Приложение". Тем не менее, я не вижу экземпляров "aaaTest" (мой определенный источник) в журнале.
Ответы
Ответ 1
Из nlog сообщение в форуме
Чтобы иметь возможность писать в EventLog, приложение должно быть зарегистрировано как источник события. Если вы запускаете VS как admin, это происходит автоматически. Если вы создаете установщик и устанавливаете приложение, он регистрируется.
Чтобы зарегистрировать приложение вручную в качестве источника события, я использую следующий script:
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"