【问题标题】:Log only first N lines with Logback使用 Logback 仅记录前 N 行
【发布时间】:2017-09-21 05:52:02
【问题描述】:

我将https://logback.qos.ch/ 用于长时间运行的Java 程序。 有没有办法配置一些 appender 只记录程序的前 N ​​行?

例如,我的程序在启动时会记录重要信息,但如果我使用滚动文件附加程序,启动时的日志最终会被删除。

我在log4j 中找到了如下方法:

<appender name="StartupAppender" class="org.apache.log4j.RollingFileAppender">
   <param name="File" value="${samza.log.dir}/${samza.container.name}-startup.log" />
   <param name="MaxFileSize" value="256MB" />
   <param name="MaxBackupIndex" value="1" />
   <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} [%p] %m%n" />
   </layout>
</appender>
<logger name="STARTUP_LOGGER" additivity="false">
   <level value="info" />
   <appender-ref ref="StartupAppender"/>
</logger>

如何在 Logback 中执行此操作?

【问题讨论】:

    标签: java logging logback


    【解决方案1】:

    没有预设的、预先存在的 Logback appender,它会“只用 Logback 记录前 N 行”你在 Log4J 中工作的配置。

    您问题中 StartupAppender 的 Logback 等效项是:

    <appender name="StartupAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${samza.log.dir}/${samza.container.name}-startup.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
          <fileNamePattern>${samza.log.dir}/${samza.container.name}-startup.log.%i.log</fileNamePattern>
          <minIndex>1</minIndex>
          <maxIndex>1</maxIndex>
        </rollingPolicy>
    
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
          <maxFileSize>256MB</maxFileSize>
        </triggeringPolicy>
        <encoder>
          <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} [%p] %m%n</pattern>
        </encoder>
    </appender>
    
    <logger name="STARTUP_LOGGER" additivity="false">
       <level value="info" />
       <appender-ref ref="StartupAppender"/>
    </logger>
    

    这将与您的 Log4J StartupAppender 的行为相同,但就像那个 appender 一样,它不能保证保留“程序的前 N ​​行”,因为它会在达到 256MB 时翻转。但是,由于您只是将此附加程序与记录器相关联:STARTUP_LOGGER,因此 256MB 的空间似乎足以保留冗长的“启动日志”历史记录。

    【讨论】:

      猜你喜欢
      • 2016-08-11
      • 2014-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-06
      • 1970-01-01
      • 2016-01-14
      • 2011-12-26
      相关资源
      最近更新 更多