NLog: Создание журнала программы или службы

Я использую NLog уже пару месяцев, просто регистрируясь в журнале событий, однако это не идеально в любом сценарии, imho.

Мне интересно, можно ли создать собственный журнал программ или услуг с помощью NLog? Это не похоже на список поддерживаемых целей на http://nlog-project.org/wiki/Targets

Кто-нибудь может пролить свет на это?


person Maritim    schedule 23.01.2013    source источник
comment
Можете ли вы предоставить дополнительную информацию о том, что вы пытаетесь сделать?   -  person Joe    schedule 23.01.2013


Ответы (1)


Вы можете полностью создать приложение, которое будет хранить и показывать вам все журналы других ваших приложений, но вам может потребоваться расширить NLog, что я сделал для своего рабочего места. Например :

  1. Создайте универсальную базу данных, которая может хранить все журналы из NLog и других типов журналов, если это необходимо.

  2. Создайте собственный модуль рендеринга макета, который создает XML с информацией вашего журнала (я не пытаюсь XmlEncode LayoutRenderer в то время, когда я создаю свою систему, я думаю, что сейчас она будет отличной)

  3. Найдите способ отправить ваш XML через вашу сеть, я использовал Transactionnal MSMQ, но в NLog существует только цель, не связанная с транзакциями, поэтому я создал (= скопировал-вставил оригинал с некоторыми улучшениями) свою собственную цель

  4. Создайте службу, которая будет получать XML вашего журнала и вставлять их в базу данных.

  5. Наконец, создайте приложение, которое использует базу данных, чтобы показать вам, что произошло в вашей среде.

Это сильное решение, если у вас есть на это время. Для нашей производственной среды это спасает нас много раз. Но это зависит от того, что именно вам нужно

* ИЗМЕНИТЬ 2013-01-25: *

Для создания собственного журнала в дереве журналов приложений и служб: См. этот пост, в котором объясняется, как создать собственный журнал и источник событий, связанный с

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

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Eventlog \ Security

Или вы можете просто запустить приложение от имени администратора.

После того, как вы создали свой собственный журнал и его источник событий, теперь вы можете использовать Nlog в обычном режиме с такой конфигурацией:

<targets>
  <target xsi:type="EventLog" name="event" layout="${message}"
          machineName="." log="myLog" source="myEventSource"/>
</targets>
<rules>
  <logger name="myLogger" writeTo="event"/>
</rules>

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

person rootoz    schedule 24.01.2013
comment
Я просто хотел, чтобы NLog создавал журнал в категории «Программы и службы» в средстве просмотра событий Windows. - person Maritim; 24.01.2013
comment
Извините, я не поняла ваш вопрос. Вы пытались создать личное представление в дереве Приложения и службы и использовать имя представления с параметром log в целевой конфигурации EventLog? - person rootoz; 24.01.2013
comment
Да, я сделал это с помощью библиотеки System.Diagnostiscs, но я хочу добиться того же, используя NLog, а не System.Diagnostics. - person Maritim; 25.01.2013