我想使用log4net的UdpAppender和Apache Chainsaw来记录来自我的ASP.NET Web应用程序的消息。 我按照log4net网站上的说明进行操作,但没有发送Udp数据包(防火墙已关闭,我尝试使用TcpView监控我的机器 - 根本没有生成udp数据包;其他appender重新开始工作)。 Log4net调试没有给出任何错误,UdpAppender被添加到记录器。我不知道我错过了什么。
我的配置文件是:
<log4net debug="true">
<renderer renderingClass="Logging.HttpContextRenderer" renderedClass="System.Web.HttpContext" />
<appender name="UdpAppender" type="log4net.Appender.UdpAppender">
<localPort value="8080" />
<remoteAddress value="127.0.0.1" />
<remotePort value="8080" />
<layout type="log4net.Layout.XmlLayoutSchemaLog4j">
<locationInfo value="true" />
</layout>
</appender>
<root>
<priority value="ALL"/>
<appender-ref ref="UdpAppender"/>
</root>
</log4net>
答案 0 :(得分:1)
这是使用log4net udp appender的类似问题的人的存档: http://www.mail-archive.com/log4net-user@logging.apache.org/msg03906.html
如果更容易(使用VFSLogFilePatternReceiver),您可以将Chainsaw V2与常规文本文件一起使用。
新版本的Chainsaw将很快发布,并有很多增强功能。此处提供预发布版本和屏幕截图:
答案 1 :(得分:1)
我也有同样的问题,发现删除了
<localPort value="8080" />
解决了它。
我使用log4net UdpAppender页面上的示例测试了appender:http://logging.apache.org/log4net/release/sdk/log4net.Appender.UdpAppender.html
但我不得不更改行
IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0);
到
IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 8080);
如果你使用它,你可以使用log4net简单地将收到的消息重写为滚动日志文件,我相信Chainsaw可以读取它。
这可能也有效:http://devintelligence.com/log4netviewer/
如果这不起作用,您可以调试log4net,或使用本文中提到的内部记录器机制: Log4Net works on Dev machine, fails when deployed to shared host (using same db/connstring)解决任何其他问题。