我正在寻找有关如何将Log4net日志记录到Syslog服务器的示例配置。欢迎任何帮助。
答案 0 :(得分:18)
我没有发现Simon Whittemore的条目非常有帮助,这就是让我的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>
“key”[sic]是 identity 参数,它产生正确的(或正确的)输出 - 我在Debian,YMMV上使用rsyslog。
你绝对不需要或不想发送日期(如Simon Whittemore的博客),因为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
或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 | |
答案 1 :(得分: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>
答案 2 :(得分:5)
您可以尝试log4net.Appender.RemoteSyslogAppender,而不是使用较低级别的UDP appender。您可以在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>
答案 3 :(得分:3)
你也可以试试syslog4net。 syslog4net的工作原理是创建一个自定义的log4net布局,用于在Syslog的RFC5424 standard format中写入消息。然后,您可以将其连接到任何log4net appender。通过将我们的SyslogLayout类连接到log4net的UdpAppender或syslog4net的自定义TcpAppender,您可以非常轻松地写入Syslog守护程序,splunk或任何机器数据聚合器。
项目的github网站上提供了文档,用法和示例。
答案 4 :(得分:2)
我的服务器登录到运行syslog-ng的ubuntu服务器。为了正确显示主机名,我使用了这个:
<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>