【问题标题】:Setting up a default log when Logger not found in Log4Net在 Log4Net 中找不到 Logger 时设置默认日志
【发布时间】:2013-04-28 08:18:43
【问题描述】:

我正在使用 Log4Net 作为我们的应用程序的日志记录机制。我们的配置包含在一个配置文件中,在我们的代码中,我们以编程方式调用我们想要调用的几个记录器(主要使用FileAppenders)中的哪一个。最近我意识到我们的一个日志文件没有被填充,我追踪到一个字符串不匹配,在我们的配置文件中的名称和我们在代码中以编程方式调用的名称之间。因为LogManager 找不到指定的记录器,所以返回了根目录,因为我们的配置没有设置为在任何地方进行有意义的记录。

我的问题是,有没有办法设置 log4net 以允许使用特定的 loggers,但如果找不到指定的 logger,那将退回到一般的 logger

例如使用这样的配置文件

<configuration>
<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>

<log4net>
    <root>
        <level value="ALL" />
        <appender-ref ref="ConsoleAppender" />
    </root>

    <logger name="TestFileLogger">
        <level value="ALL" />
        <appender-ref ref="TestFileAppender" />
    </logger>

    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
        <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p [%x] - %m%n" />
        </layout>
    </appender>

    <appender name="TestFileAppender" type="log4net.Appender.RollingFileAppender">
        <param name="File" value="TestLog" />
        <param name="DatePattern" value=".yyyyMMdd&quot;.log&quot;" />
        <param name="AppendToFile" value="true" />
    </appender>

</log4net>
</configuration>

并像这样在 C# 中调用记录器

var fileLogger = LogManager.GetLogger("TestFileLogger");
fileLogger.Info("This logs appropriately.");

var bogusLogger = LogManager.GetLogger("Bogus");
bogusLogger.Info("This should go to a general log. Bogus is not a recognized appender");

有没有一种好方法可以将来自bogusLogger 的消息记录到某种通用日志文件中?我最初的想法是创建一个作为根节点一部分的通用文件附加程序,但这非常嘈杂,因为所有日志消息都将被路由到该文件。有没有办法只路由未在另一个日志文件中捕获的消息?

【问题讨论】:

    标签: c# .net logging log4net


    【解决方案1】:

    您可以使用LogManager.Exists("Bogus") 来确定是否应该使用虚假记录器或您的默认实现。

    您可以在 LogManager 上创建一个可以为您处理它的扩展方法。

    【讨论】:

    • 感谢您的建议! LogManager.Exists 是确定记录器是否实际存在的好方法,因为如果找不到指定的记录器,LogManager.GetLogger 将始终返回 root。小提示:LogManager 是静态的,因此不能有扩展方法,但包装类效果很好!
    猜你喜欢
    • 1970-01-01
    • 2021-09-21
    • 2016-04-18
    • 2018-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    • 2014-04-17
    相关资源
    最近更新 更多