我想构建一个将所有消息发送到中央tcp服务器的appender。但是,我想使用的消息传递框架使用log4net记录器实例本身来支持调试/跟踪。因此,激活调试日志协议化所有即将发送的消息似乎有问题,因为此调试消息本身将创建另一个相同类型的消息。
是否有log4net保护来阻止此网站名称的情况?
答案 0 :(得分:1)
根据我的理解:您在自定义appender中使用了一个类或框架,它本身使用log4net来编写日志,并且您希望在通过appender传输这些日志时避免循环。
我可以想出两种可以帮助你避免这种情况的方法:
LogLog
机制LogLog
只有您可以访问框架代码:
您可以更改配置获取的代码,无论是使用log4net常规记录器还是LogLog
记录器。
记录LogLog
的方式如下:
log4net.Util.LogLog.Error(this.GetType(), "your error here");
使用this link了解有关LogLog的更多信息 使用this link阅读如何在运行时启用LogLog。
如果您的框架具有唯一的记录器名称,则可以配置它的日志不会通过您的自定义appender传输。
完全关闭它:
<logger name="Framework.logger.name">
<level value="OFF" />
</logger>
或者只通过自定义附加程序传输特定记录器
<logger name="specific.logger.name">
<level value="ALL" />
<appender-ref ref="MyCustomAppender" />
</logger>
您可以阅读更多here。
答案 1 :(得分:0)
您是否自己编写了消息传递框架?如果确实存在跟踪按摩,框架会不断添加跟踪消息,即使您没有自己使用log4net也不会非常有用。我想框架不会添加触发它自己的跟踪消息。您知道的唯一方法是测试框架并查看它是否正常工作。或者发布创建循环的代码。