多个RollingFileAppender写入同一个文件

时间:2013-02-11 14:28:55

标签: java tomcat logging slf4j logback

我有两个在同一个JVM和Tomcat实例中运行的上下文,我想使用logback RollingFileAppender写入同一个日志文件。如果我使用相同的文件,是否同步回滚RollingFileAppender以防止出现任何问题?我担心文件的翻转将无法正常工作,以及一些日志被覆盖。

logback docs mention a prudent mode,但这表示性能受到影响,仅指从不同JVM登录到同一文件。我将在同一个JVM中运行。

以下是我的logback.xml示例。我想在每个上下文的两个单独的WAR文件中有这个:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${catalina.base}/logs/portal.log</file>
      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <fileNamePattern>portal.%d.log</fileNamePattern>
    <maxHistory>30</maxHistory>
  </rollingPolicy>
  <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
        <maxFileSize>100MB</maxFileSize>
      </triggeringPolicy>  
      <encoder>
        <pattern>%d [%t] %-5p %c - %m%n</pattern>
      </encoder>
  </appender>

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

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

我以这种方式使用RollingFileAppender并面临与您相同的问题。如果从配置中删除<file>元素,它似乎才有用。但是,所有文件都被命名为例如portal.2013-12-03.log等等。如果你可以忍受,那就去吧。

但是,对于活动日志,我需要一个像portal.log这样的常量文件名,因为在这些日志文件上运行了一些监视。但我还没有发现这是怎么可能的。我想Windows在这里也会造成一些麻烦......