【问题标题】:SLF4J-Logback : Multiple Pattern based on Log LevelSLF4J-Logback : 基于日志级别的多种模式
【发布时间】:2018-10-30 06:22:16
【问题描述】:

使用 Logback 是因为我们需要一些 log4j 不提供的 Appender。

要求:对于日志级别错误,我们希望使用自定义模式,该模式将根据堆栈跟踪添加信息。

对于所有其他日志级别,它应该使用简单模式。

所有的日志输出都应该放在同一个文件中。

尝试了以下方法: 创建了两个 Appender,一个用于错误日志级别,另一个用于其他日志级别。 当两个 Appender 使用相同的目标文件时,错误日志不会被写入文件。 当两个附加程序使用不同的目标文件时,将创建两个文件,一个具有错误日志级别,另一个具有所有其他日志级别

使用 log4j2 找到了一些指针,但 logback 到目前为止无法找到解决方案。

有人可以建议一些方法

【问题讨论】:

    标签: java logback slf4j


    【解决方案1】:

    在 appender 配置中,将 prudent 设置为 true。这将允许多个 appender 写入同一个文件。

    【讨论】:

    • 这将解决我的问题,但我仍然不想使用此解决方案,因为它有性能开销。
    【解决方案2】:

    探索 Prasanth Nair 的答案。在logbackhttps://logback.qos.ch/manual/appenders.html的手册中可以找到

    prudent模式下,FileAppender会安全地写入指定文件, 即使存在其他正在运行的 FileAppender 实例 不同的 JVM,可能在不同的主机上运行。默认 谨慎模式的值为 false。

    这是一个示例配置:

    <configuration>
      <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- Support multiple-JVM writing to the same log file -->
        <prudent>true</prudent>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
          <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
          <maxHistory>30</maxHistory> 
          <totalSizeCap>3GB</totalSizeCap>
        </rollingPolicy>
    
        <encoder>
          <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
        </encoder>
      </appender> 
    
      <root level="DEBUG">
        <appender-ref ref="FILE" />
      </root>
    </configuration>
    

    【讨论】:

      猜你喜欢
      • 2015-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-11
      • 1970-01-01
      • 2022-12-16
      • 2020-07-31
      • 1970-01-01
      相关资源
      最近更新 更多