【问题标题】:Logback does not write to 3rd party logging serviceLogback 不写入 3rd 方日志服务
【发布时间】:2018-07-12 19:38:43
【问题描述】:

我正在设置更复杂的日志记录,然后是简单的控制台输出。 Logback 通过ConsoleAppender 可以很好地写入日志。但是当我添加额外的RollbarAppender 时,它就不起作用了。

这里是一个 logback.xml 的例子

<?xml version="1.0" encoding="UTF-8"?>
<configuration >
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%highlight([%level]) - [%date] - [%logger]  %msg%n</pattern>
        </encoder>
    </appender>
    <appender name="ROLLBAR" class="com.rollbar.logback.RollbarAppender">
        <accessToken>VERY_SECRET_TOKEN</accessToken>
        <encoder>
            <pattern>%highlight([%level]) - [%date] - [%logger]  %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="akka" level="ERROR" additivity="false">
        <appender-ref ref="ROLLBAR" />
    </logger>
    <logger name="slick" level="ERROR"/>

    <root level="INFO">
        <appender-ref ref="CONSOLE" />
    </root>

</configuration>

同时此配置工作正常并将日志发送到 3rd 方日志服务,但不写入控制台:(

<?xml version="1.0" encoding="UTF-8"?>
<configuration >
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%highlight([%level]) - [%date] - [%logger]  %msg%n</pattern>
        </encoder>
    </appender>
    <appender name="ROLLBAR" class="com.rollbar.logback.RollbarAppender">
        <accessToken>VERY_SECRET_TOKEN</accessToken>
        <encoder>
            <pattern>%highlight([%level]) - [%date] - [%logger]  %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="akka" level="INFO" additivity="false">
        <appender-ref ref="CONSOLE" />
    </logger>
    <logger name="slick" level="ERROR"/>

    <root level="ERROR">
        <appender-ref ref="ROLLBAR" />
    </root>

</configuration>

所以我很困惑。如何使 logback 以这种方式工作:

INFO 级别事件写入控制台

ERROR 级别事件写入控制台 + ROLLBAR

【问题讨论】:

    标签: java scala logging logback slf4j


    【解决方案1】:

    解决方案非常简单。 &lt;filter&gt; 标签解决了这个问题:它的日志级别覆盖了&lt;root&gt; 标签的日志级别

    <appender name="RollBar" class="com.rollbar.logback.RollbarAppender">
      <accessToken> VERY_SECRET_TOKEN </accessToken>
      <environment>PROD</environment>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
          <level>ERROR</level>
        </filter>
    </appender>
        ...
    <root level="INFO">
      <appender-ref ref="CONSOLE" />
      <appender-ref ref="RollBar" />
    </root>
    

    【讨论】:

    • 有没有办法将访问令牌外部化为环境变量?
    猜你喜欢
    • 1970-01-01
    • 2016-06-12
    • 2015-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    相关资源
    最近更新 更多