c# - 如何配置 log4net consoleappender 以根据 Level 写入 Console.Err 和 Console.Out?

标签 c# .net vb.net log4net

当我在 logger.Warn 下面做任何事情时,我想写信给 Console.Out 然后我想写信给 Console.Err 当我记录任何 logger.Error 及以上的内容时。我将如何编写我的 log4net 配置文件?

到目前为止我有:

<?xml version="1.0" encoding="utf-8"?>
<log4net>
      <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
        </layout>
      </appender>

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

最佳答案

您可以创建两个附加程序,并以不同方式配置它们。像(未经测试):

<log4net>
<appender name="ConsoleOutAppender" type="log4net.Appender.ConsoleAppender">
    <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="DEBUG" />
        <levelMax value="WARN" />
    </filter>       
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="..."  />
    </layout>
</appender>
<appender name="ConsoleErrorAppender" type="log4net.Appender.ConsoleAppender">
    <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="ERROR" />
        <levelMax value="FATAL" />
    </filter>       
    <target value="Console.Error" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="..." />
    </layout>
</appender>
<root>
    <level value="DEBUG" />
    <appender-ref ref="ConsoleOutAppender" />
    <appender-ref ref="ConsoleErrorAppender" />
</root>
</log4net>

编辑:更正了 levelMinlevelMax 的逻辑错误。

关于c# - 如何配置 log4net consoleappender 以根据 Level 写入 Console.Err 和 Console.Out?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22363033/

相关文章:

c# - 如何让 LinqPad 与 "Dynamic Query"一起工作?

c# - 在 asp.net 中更新 UpdatePanel 中的图像 url

.NET 的 Version 类的 Java 等价物?

c# - 在文档中查找 HTML 字符串

c# - 从字符串中删除所有特殊字符

c# - 代码在 Windows 服务项目中不起作用

javascript - 如果由 javascript 提供服务,如何使用 WebClient 下载文件

javascript - 外部脚本在 Windows Phone App 8.1 中不起作用

c# - System.Diagnostics Traces 源名称的通配符

vb.net - 这个 for 循环中是否有一个隐藏的迭代计数器?