vb.net 如何配置 log4net consoleappender 以根据级别写入 Console.Err 和 Console.Out?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/22363033/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-17 17:03:39  来源:igfitidea点击:

How do I configure log4net consoleappender to write to Console.Err and Console.Out based on Level?

c#.netvb.netlog4net

提问by Denis

I would like to write to Console.Outwhen I do anything below logger.Warnand then I would like to write to Console.Errwhen I log anything logger.Errorand above. How would I write my log4net config file?

我想写信给Console.Out当我做任何事以下logger.Warn,然后我想写信给Console.Err当我登录任何logger.Error以上。我将如何编写我的 log4net 配置文件?

So far I have:

到目前为止,我有:

<?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>

回答by Joe

You can create two appenders, and configure them differently. Something like (untested):

您可以创建两个 appender,并以不同的方式配置它们。类似的东西(未经测试):

<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>

EDIT: Corrected logic error with levelMinvs. levelMax.

编辑:更正了与levelMinvs. 的逻辑错误levelMax