栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何配置Logback以将记录器的不同级别记录到不同的目的地?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何配置Logback以将记录器的不同级别记录到不同的目的地?

更新:有关使用Groovy的基于所有配置的方法,请参见DeanHiller的答案。

好的,这是我最喜欢的xml方法。我为Eclipse版本执行此操作,因此我可以

单击内容将我带到日志语句,然后
参见信息,以下为黑色,警告/严重为红色
由于某种原因,SO不能正确显示所有内容,但大多数似乎都在那…

<configuration scan="true" scanPeriod="30 seconds">    <appender name="STDOUT" >        <filter >     <evaluator >  <expression>    e.level.toInt() &lt;= INFO.toInt() </expression>          </evaluator>          <OnMismatch>DENY</OnMismatch>          <OnMatch>NEUTRAL</OnMatch>        </filter>        <enprer> <pattern>%date{ISO8601} %X{sessionid}-%X{user} %caller{1} %-4level: %message%n</pattern>        </enprer>    </appender>    <appender name="STDERR" >        <filter >  <level>warn</level>        </filter>        <enprer> <pattern>%date{ISO8601} %X{sessionid}-%X{user} %caller{1} %-4level: %message%n</pattern>        </enprer>        <target>System.err</target>    </appender>    <root>        <level value="INFO" />        <appender-ref ref="STDOUT"/>        <appender-ref ref="STDERR"/>    </root></configuration>

您可以使用Logback过滤器做一些有趣的事情。以下配置仅将警告和错误消息打印到stderr,其他所有内容打印到stdout。

logback.xml

<appender name="stdout" >  <target>System.out</target>  <filter  />   ...</appender><appender name="stderr" >  <target>System.err</target>  <filter  />   ...</appender><logger name="mylogger" level="debug">    <appender-ref ref="stdout" />    <appender-ref ref="stderr" /></logger>

com.foo.StdOutFilter

public class StdOutFilter extends ch.qos.logback.core.filter.AbstractMatcherFilter{    @Override    public FilterReply decide(Object event)    {        if (!isStarted())        { return FilterReply.NEUTRAL;        }        LoggingEvent loggingEvent = (LoggingEvent) event;        List<Level> eventsToKeep = Arrays.asList(Level.TRACE, Level.DEBUG, Level.INFO);        if (eventsToKeep.contains(loggingEvent.getLevel()))        { return FilterReply.NEUTRAL;        }        else        { return FilterReply.DENY;        }    }}

com.foo.ErrOutFilter

public class ErrOutFilter extends ch.qos.logback.core.filter.AbstractMatcherFilter{    @Override    public FilterReply decide(Object event)    {        if (!isStarted())        { return FilterReply.NEUTRAL;        }        LoggingEvent loggingEvent = (LoggingEvent) event;        List<Level> eventsToKeep = Arrays.asList(Level.WARN, Level.ERROR);        if (eventsToKeep.contains(loggingEvent.getLevel()))        { return FilterReply.NEUTRAL;        }        else        { return FilterReply.DENY;        }    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/437438.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号