我们在下面复制了一个简单的Logback配置。我的期望是应用程序将在启动时继续写入(即追加)日志文件。但是,当我们重新启动应用程序时,将丢弃现有文件,并且记录器会创建一个新文件。我的理解是默认情况下FileAppender会附加到日志文件中。甚至添加" true"并没有什么区别。我错过了什么吗?
<configuration>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<append>true</append>
<File>${logDir}/${filename}.log</File>
<encoder>
<pattern>%d{yyyyMMdd-HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="FILE" />
</appender>
<root level="INFO">
<appender-ref ref="ASYNC"/>
</root>
</configuration>
答案 0 :(得分:0)
Luhar,
我不确定你是否还在为此寻找答案,因为我发现问题已经被问了很久。但我最近做了一些logback的工作,偶然发现了这个未解决的问题。你想要做的事情看起来非常简单,所以我想我会给它一个旋转,看看发生了什么。
使用以下logback配置和附带的代码,我能够很好地附加到日志文件。
<configuration>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<File>test.log</File>
<encoder>
<pattern>%d{yyyyMMdd-HH:mm:ss.SSS} [%thread] %-5level %logger{36} -
%msg%n</pattern>
</encoder>
</appender>
<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="FILE" />
</appender>
<root level="INFO">
<appender-ref ref="ASYNC" />
</root>
</configuration>
使用上述配置的简单Java类:
public class App {
static Logger logger = LoggerFactory.getLogger("SimpleTest");
public static void main(String[] args) {
logger.info("This is an INFO statement");
logger.warn("This is a WARN statement");
logger.error("This is an ERROR statement");
try {
Thread.sleep(2000);
// make sure the AsyncAppender queue is flushed
// before program exits
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
以下是程序运行3次后的日志文件。
20141222-22:32:10.391 [main] INFO SimpleTest - 这是一个INFO声明
20141222-22:32:10.393 [main] WARN SimpleTest - 这是一个WARN声明
20141222-22:32:10.393 [main] ERROR SimpleTest - 这是一个错误陈述
20141222-22:32:18.558 [main] INFO SimpleTest - 这是一个INFO声明
20141222-22:32:18.560 [main] WARN SimpleTest - 这是一个WARN声明
20141222-22:32:18.560 [main] ERROR SimpleTest - 这是一个错误陈述
20141222-22:32:23.192 [main] INFO SimpleTest - 这是一个INFO声明
20141222-22:32:23.194 [main] WARN SimpleTest - 这是一个WARN声明
20141222-22:32:23.194 [main] ERROR SimpleTest - 这是一个错误陈述
所以我认为logback配置工作正常。希望这可以帮助!