log4net appender中支持的日志类?

我想构建一个将所有消息发送到中央tcp服务器的appender . 但是,我想使用的消息传递框架使用log4net Logger 实例本身来支持调试/跟踪 . 因此,激活调试日志协议化所有即将发送的消息似乎是有问题的,因为此调试消息本身将创建另一个相同类型的消息 .

是否有log4net保护以防止此网站的名称情况?

回答(2)

2 years ago

根据我的理解:您在自定义appender中使用了一个类或框架,它本身使用log4net来编写日志,并且您希望在通过appender传输这些日志时避免循环 .

我可以想到两种可以帮助你避免这种情况的方法:

  • 使用 LogLog 机制

  • 过滤来自框架的消息


使用LogLog

只有您可以访问框架代码:

您可以通过配置更改将使用log4net常规 Logger 或 LogLog logger获得的代码 .

通过 LogLog 记录就像这样:

log4net.Util.LogLog.Error(this.GetType(), "your error here");

使用this link可以阅读有关LogLog的更多信息 .
使用this link可以阅读运行时如何启用LogLog .


过滤消息

如果您的框架具有唯一的 Logger 名称,则可以配置它的日志不会通过您的自定义appender传输 .

通过完全关闭它:

<logger name="Framework.logger.name">
    <level value="OFF" />
</logger>

或者通过自定义appender仅传输特定 Logger

<logger name="specific.logger.name">
    <level value="ALL" />
    <appender-ref ref="MyCustomAppender" />
</logger>

你可以阅读更多here .

2 years ago

您是否自己编写了消息传递框架?如果确实存在跟踪按摩,框架会不断添加跟踪消息,即使您没有自己使用log4net也不会非常有用 . 我想框架不会添加触发它自己的跟踪消息 . 您知道的唯一方法是测试框架并查看它是否正常工作 . 或者发布创建循环的代码 .