【问题标题】:Logback failsafe to console loggingLogback 故障安全到控制台日志记录
【发布时间】:2012-05-28 21:05:13
【问题描述】:

我正在迁移旧版应用程序以使用 logback,在此过程中,我试图保持所有旧功能以相同的方式工作。如果无法写入日志文件(由于空间不足、权限错误等),旧版应用程序所做的一件事是登录到控制台

使用 logback 似乎 StatusListener 应该处理这个问题,我可以使用 getOrigin 来获取 sifted appender,但我不知道如何获取与 origin appender 关联的记录器。有可能吗?

logback.xml:

<statusListener class="com.example.LogStatusListener"/>

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
  <encoder>
    <pattern>WARNING: %logger is only being logged to CONSOLE!%n%msg%n</pattern>
  </encoder>
</appender>

<appender name="FILE-SIMPLE" class="ch.qos.logback.classic.sift.SiftingAppender">
  <discriminator class="com.example.CustomDiscriminator"/>
  <sift>
    <appender name="FILE-${logfile}" class="ch.qos.logback.core.rolling.FileAppender">
      <file>${logfile}.log</file>
      <encoder>
        <pattern>%msg%n</pattern>
      </encoder>
    </appender>
  </sift>
</appender>

<logger name="debug">
  <appender-ref ref="FILE-SIMPLE" />
</logger>

听众:

public class LogStatusListener implements StatusListener {
    @Override
    public void addStatusEvent(Status status) {
        if (status instanceof ErrorStatus) {
            System.err.println(status);
            if (status.getOrigin() instanceof Appender) {
                Appender origin = (Appender) status.getOrigin();
                if (!origin.isStarted()) {
                    // find the logger associated with origin, and add ConsoleAppender
                }
            }
        }
    }
}

【问题讨论】:

    标签: java logging logback


    【解决方案1】:

    状态消息可以由任何 组件生成,而不仅仅是附加程序。状态消息没有与之关联的记录器,因此您无法获取状态消息的记录器。顺便说一下,logback 实现了从 I/O 错误中优雅的恢复。例如,如果磁盘已满,logback 将停止记录,并在磁盘上有可用空间时自动重新开始记录。请注意,在此期间发生的日志记录事件会丢失。

    【讨论】:

    • 很高兴知道,但在此期间日志会发生什么情况?它们是否被缓冲直到它再次开始?因为我使用的是 log-sift,所以当我尝试发送日志时会发生此附加程序错误,我如何确保日志到达某个地方并且不会丢失?
    • 在此期间发生的日志记录事件会丢失。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多