首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不同级别的Backlog多附加器

不同级别的Backlog多附加器
EN

Stack Overflow用户
提问于 2016-11-16 02:04:16
回答 1查看 279关注 0票数 0

我如何才能将所有要警告的内容记录到文件和控制台,而将my.package记录到只针对文件进行调试?

我试过了:

代码语言:javascript
复制
<configuration>
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
        </encoder>
        <File>target/log/test-log</File>
        <append>false</append>
    </appender>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="my.package" level="WARN">
        <appender-ref ref="STDOUT"/>
    </logger>

    <logger name="my.package" level="DEBUG">
        <appender-ref ref="FILE" />
    </logger>

    <root level="WARN">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root>
</configuration>

但它也会在控制台中记录所有要调试的内容。

这也不起作用:

代码语言:javascript
复制
<configuration>
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
        </encoder>
        <File>target/log/test-log</File>
        <append>false</append>
    </appender>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="io.chumps">
        <appender-ref ref="STDOUT" level="WARN"/>
        <appender-ref ref="FILE" level="DEBUG" />
    </logger>

    <root>
        <appender-ref ref="STDOUT" level="WARN" />
        <appender-ref ref="FILE" level="WARN" />
    </root>
</configuration>
EN

回答 1

Stack Overflow用户

发布于 2016-11-16 05:31:13

使用带有自定义Groovy脚本的GEventEvaluator解决了这个问题:http://logback.qos.ch/manual/filters.html#GEventEvaluator

代码语言:javascript
复制
<configuration>
    <property name="LAYOUT" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n" />

    <root>
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
                <evaluator class="ch.qos.logback.classic.boolex.GEventEvaluator">
                    <expression>e.level.toInt() >= WARN.toInt()</expression>
                </evaluator>
                <OnMatch>ACCEPT</OnMatch>
                <OnMismatch>DENY</OnMismatch>
            </filter>
            <encoder>
                <pattern>${LAYOUT}</pattern>
            </encoder>
        </appender>

        <appender name="FILE" class="ch.qos.logback.core.FileAppender">
            <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
                <evaluator class="ch.qos.logback.classic.boolex.GEventEvaluator">
                    <expression>
                        e.level.toInt() >= WARN.toInt() ||
                        (e.level.toInt() >= TRACE.toInt() &amp;&amp; e.getLoggerName().startsWith("my.package"))
                    </expression>
                </evaluator>
                <OnMatch>ACCEPT</OnMatch>
                <OnMismatch>DENY</OnMismatch>
            </filter>
            <encoder>
                <pattern>${LAYOUT}</pattern>
            </encoder>
            <File>target/log/test-log</File>
            <append>false</append>
        </appender>
    </root>
</configuration>

我真不敢相信,默认情况下不支持这么简单的用法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40616717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档