【问题标题】:Multiple appender in same Log4net file同一个 Log4net 文件中的多个附加程序
【发布时间】:2017-05-23 19:40:29
【问题描述】:

如何在同一个 log4net 配置文件中使用多个 appender?还提供了如何在 C# 代码中动态选择 appender 来写入日志。

【问题讨论】:

    标签: log4net


    【解决方案1】:

    您可以非常轻松地配置多个附加程序。比如这样:

    <appender name="ConsoleAppender" ...
       ...
    </appender>
    
    <appender name="RollingFileAppender" ...
       ...
    </appender>
    
    <root>
       <level value="ALL" />
       <appender-ref ref="ConsoleAppender" />
       <appender-ref ref="RollingFileAppender" />
    </root>
    

    第二部分更难回答:这个想法不是选择一个 appender 并写入它。通常,您使用记录器并在适当的日志级别简单地编写您认为有用的任何内容。您不关心日志消息的写入位置:这是由系统管理员决定的(恕我直言)。

    实际上可以为不同的记录器使用不同的附加程序。系统管理员可能决定将 YourApp.Security 命名空间中的所有错误记录到 SMTP 附加程序,而其余的则简单地记录到数据库或文件中。关于记录器的更多信息可以在这个优秀的教程中找到: http://www.beefycode.com/post/Log4Net-Tutorial-pt-5-Using-Logger-Objects.aspx

    然而,可以在代码中创建附加程序(示例代码可以在here 找到),但问题是您是否真的想这样做。示例:如果您想在某些情况下发送电子邮件,那么我建议不要使用 log4net。相反,您只需使用自己的代码创建和发送电子邮件。

    【讨论】:

    • 感谢您的回复。但是如果 log4net 支持多个 appender 来登录多个源。那么为什么我们不能决定在运行时使用哪个 appender?我的严重怀疑是第二部分,我已经知道我们可以在同一个文件中有多个附加程序。但我的问题是为什么我们不能在运行时使用 c# 代码选择任何一个?
    • 您可以决定记录器使用哪些附加程序,但我仍然想知道如果没有其他解决方案,您为什么要这样做并且根据您的要求。看看这里(应该让你开始):mail-archives.apache.org/mod_mbox/logging-log4net-user/…
    • 另外,在阅读本文之前,我使用不同的 appender 创建了不同的级别。例如,对于 debug=> fileappender,对于 error=>adoappender。所以根据我的标志,我选择存储位置。 if(flag=="file"){log.debug()} else if(flag=="db"){log.error()}
    猜你喜欢
    • 2011-03-01
    • 1970-01-01
    • 2011-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    相关资源
    最近更新 更多