2010-01-06 2 views

ответ

9
<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> 
+0

Только для заполнения этой записи: Syslog (http://en.wikipedia.org/wiki/Syslog) использует стандартный назначенный порт UDP 514 –

4

Вместо использования младшего UDP-приложения вы можете попробовать log4net.Appender.RemoteSyslogAppender. Вы можете найти пример в записи Simon Whittemore в блоге Centralised Application logging via 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> 
17

я не нашел запись Саймона Whittemore очень полезно, это то, что получил мой Appender производства «правильные» системного журнала удаленных сообщений:

<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> 

«ключ» [так в оригинале] является личность, который производит правильный (или правильно выглядящий) вывод - я использую 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 

Как вы можете видеть, основной формат «Узел службы Дата Время: сообщение» все хорошо, в отличие от

Jun 21 09:38:57 WARN Irc [(null)] - OnQuit#015 

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

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 | | 
+0

Отлично, спасибо за улучшение ответа! –

1

У меня мои серверы регистрируются на сервере 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="&#9;%P{pid}:%logger %m%n"/> 
    <RemotePort value="516" /> 
    </appender> 
3

Вы также могли бы дать syslog4net попробовать. syslog4net работает, создавая собственный макет log4net, который пишет сообщения в Syslog's RFC5424 standard format. Затем вы можете подключить его к любому приложению log4net. Вы можете довольно легко написать демону Syslog, splunk или любой агрегатор машинных данных, подключив наш класс SyslogLayout к пользовательскому TcpAppender для log4net в UdpAppender или syslog4net.

Документация, использование и примеры доступны на сайте github проекта.

Смежные вопросы