2010-01-06 18 views

Respuesta

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

Solo para completar esta entrada: Syslog (http://en.wikipedia.org/wiki/Syslog) usa un puerto UDP asignado estándar 514 –

4

lugar de utilizar el UDP appender de nivel inferior, podría intentar log4net.Appender.RemoteSyslogAppender. Puede encontrar un ejemplo en la entrada del blog Simon WhittemoreCentralised 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

No he encontrado la entrada de Simon Whittemore muy útil, esto es lo que tiene mi appender producir "adecuados" mensajes remotos de registro del sistema:

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

La "clave" [sic] es el identidad parámetro, que produce la salida correcta (o correcta) - Estoy usando rsyslog en Debian, YMMV.

definitivamente no necesita o desea enviar la fecha (como en el blog de Simon Whittemore), ya que syslogd agregará la fecha para usted, utilizando la zona horaria del servidor.

Aquí hay un mensaje recibido de mi log4net aplicación activada, seguido de un mensaje real:

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 

Como se puede ver, el formato básico de "Fecha Hora de host del servicio: mensaje" está todo bien, a diferencia de

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

o un ejemplo de lo que produciría configuración de 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 | | 
+0

Excelente, gracias por mejorar mi respuesta! –

1

Tengo mis servidores iniciando sesión en un servidor ubuntu que ejecuta syslog-ng. Con el fin de obtener el nombre de host mostrando correctamente, he usado esto:

<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

También podría dar syslog4net intentarlo. syslog4net funciona creando un diseño de log4net personalizado que escribe mensajes en RFC5424 standard format de Syslog. A continuación, puede conectarlo a cualquier apéndice log4net. Puede escribir fácilmente en un daemon de Syslog, splunk o cualquier agregador de datos de máquina conectando nuestra clase SyslogLayout con UdpAppender de log4net o TcpAppender personalizado de syslog4net.

La documentación, el uso y los ejemplos están disponibles en el sitio github del proyecto.

Cuestiones relacionadas