Log4net: пример приложения SysLog - PullRequest
17 голосов
/ 06 января 2010

Я ищу пример конфигурации для получения регистрации Log4net на сервере Syslog. Любая помощь приветствуется.

Ответы [ 5 ]

19 голосов
/ 21 июня 2012

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

<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 Time: сообщение" хорош, в отличие от

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 |  | 
10 голосов
/ 06 января 2010
<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>
5 голосов
/ 19 января 2012

Вместо использования 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>
3 голосов
/ 28 февраля 2014

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

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

2 голосов
/ 23 октября 2013

Мои серверы регистрируются на сервере 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>
...