Java logback FileAppender文件模式

时间:2010-10-04 11:45:27

标签: java file design-patterns logback fileappender

我有这样的答案。

<appender name="Action.FileAppender" class="ch.qos.logback.core.FileAppender">
<file>logs\\${date}\\${thread}.log</file>
<encoder>
<pattern>%level - %msg%n</pattern>
</encoder>
</appender>

我希望$ {date}和$ {thread}成为当前日期和当前线程名称。我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

SiftingAppender可能就是您所需要的。它旨在根据“鉴别器”分离日志记录事件,在您的情况下,它将是日期和线程名称。

答案 1 :(得分:0)

你的意思是你想在运行时动态设置输出文件名吗? AFAIK直通配置是不可能的。您有两种解决方法:

  • 从代码动态设置输出文件名,或
  • 使用Mapped Diagnostic Context,在同一日志文件中使用特定于线程的数据添加日志消息。

第一种方式将是相当繁琐和浪费的,因为您需要特定于实例的记录器和appender用于可以从不同线程调用不同实例的类。即便如此,如果多个线程之间共享相同的对象会怎么样?

第二个更自然,更简单。此外,使用例如一些后处理。一个简单的shell脚本,甚至可以将属于不同线程的日志过滤到不同的日志文件中。