Вы можете полностью создать приложение, которое будет хранить и показывать вам все журналы других ваших приложений, но вам может потребоваться расширить NLog, что я сделал для своего рабочего места. Например :
Создайте универсальную базу данных, которая может хранить все журналы из NLog и других типов журналов, если это необходимо.
Создайте собственный модуль рендеринга макета, который создает XML с информацией вашего журнала (я не пытаюсь XmlEncode LayoutRenderer в то время, когда я создаю свою систему, я думаю, что сейчас она будет отличной)
Найдите способ отправить ваш XML через вашу сеть, я использовал Transactionnal MSMQ, но в NLog существует только цель, не связанная с транзакциями, поэтому я создал (= скопировал-вставил оригинал с некоторыми улучшениями) свою собственную цель
Создайте службу, которая будет получать XML вашего журнала и вставлять их в базу данных.
Наконец, создайте приложение, которое использует базу данных, чтобы показать вам, что произошло в вашей среде.
Это сильное решение, если у вас есть на это время. Для нашей производственной среды это спасает нас много раз. Но это зависит от того, что именно вам нужно
* ИЗМЕНИТЬ 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