0

我有这样的附加程序。

<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} 是当前日期和当前线程名称。我该怎么做?

4

2 回答 2

2

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

于 2010-10-04T13:09:28.933 回答
0

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

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

第一种方法会相当乏味和浪费,因为您需要特定于实例的记录器和附加器用于可以从不同线程调用不同实例的类。即便如此,如果同一个对象在多个线程之间共享怎么办?

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

于 2010-10-04T11:52:30.497 回答