Log4net: пример SysLog Appender
Я ищу пример конфигурации о том, как запустить Log4net на сервере Syslog. Любая помощь приветствуется.
Ответы
Ответ 1
<appender name="UdpAppender" type="log4net.Appender.UdpAppender">
<param name="RemoteAddress" value="127.0.0.1" />
<param name="RemotePort" value="514" />
<layout type="log4net.Layout.PatternLayout, log4net">
<conversionPattern value="%-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
Ответ 2
Я не нашел запись Саймона Уиттемора очень полезной, вот что заставило мой appender создавать "правильные" удаленные сообщения syslog:
<appender name="RemoteSyslogAppender" type="log4net.Appender.RemoteSyslogAppender">
<identity value="HepeManok" />
<layout type="log4net.Layout.PatternLayout" value="%-5p %type: %m%n"/>
<remoteAddress value="syslog.lameserver.net" />
</appender>
"ключ" [sic] - это параметр identity, который выдает правильный (или правильно выглядящий) вывод - я использую rsyslog на Debian, YMMV.
Вам определенно не нужно или хотите отправить дату (как в блоге Саймона Уиттемора), так как syslogd добавит вам дату, используя часовой пояс сервера.
Здесь получено сообщение из моего включенного приложения log4net, за которым следует реальное сообщение:
Jun 21 09:58:40 vs2008.local HepeManok: INFO Irc: irc_OnConnected
Jun 21 09:42:45 chips30 kernel: [10210014.974069] device eth0 entered promiscuous mode
Как вы можете видеть, основной формат "Date Host Host Service: message" - это все хорошо, в отличие от
Jun 21 09:38:57 WARN Irc [(null)] - OnQuit#015
или пример того, что создало конфигурацию Simon:
Jun 21 09:56:42 Hepe Manok.vshost.exe: 21/06/2012 07:54:44,828 | 6 | INFO | Irc | WIN-2008-DEV\Administrator | WIN-2008-DEV | dev | irc_OnConnecting | |
Ответ 3
Вместо использования младшего UDP-приложения вы можете попробовать log4net.Appender.RemoteSyslogAppender. Вы можете найти пример в запись в блоге Simon Whittemore Централизованное ведение журнала приложений через Log4Net.
<appender name="RemoteSyslogAppender" type="log4net.Appender.RemoteSyslogAppender">
<layout type="log4net.Layout.PatternLayout" value="%date{dd/MM/yyyy hh:mm:ss,fff} | %thread | %level | %logger | %username | %P{log4net:HostName} | dev | %message | %exception | "/>
<remoteAddress value="LOGSERVER" />
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ALL" />
</filter>
</appender>
Ответ 4
Вы также можете попробовать syslog4net. syslog4net работает, создавая собственный макет log4net, который пишет сообщения в Syslogs стандартный формат RFC5424. Затем вы можете подключить его к любому приложению log4net. Вы можете легко записать на демона Syslog, splunk или любой агрегатор машинных данных, подключив наш класс SyslogLayout к log4nets UdpAppender или пользовательскому TcpAppender syslog4net.
Документация, использование и примеры доступны на сайте github проекта.
Ответ 5
У меня мои серверы регистрируются на сервере ubuntu, на котором запущен syslog-ng. Чтобы правильно отобразить имя хоста, я использовал это:
<appender name="RemoteSyslogAppender" type="log4net.Appender.RemoteSyslogAppender">
<facility value="local7" />
<identity value=" %date{yyyy-MM-ddTHH:mm:ss.ffffffzzz} %P{log4net:HostName} %P{app}" />
<RemoteAddress value="192.168.1.248" />
<layout type="log4net.Layout.PatternLayout" value="	%P{pid}:%logger %m%n"/>
<RemotePort value="516" />
</appender>