我正在使用log4j 2.0.2进行日志记录。我正在尝试将ContextMapLookup应用到RollingFileAppender的fileName和filePattern属性中,但我无法使它工作。
以下是REST外观中的(简化) Map初始化:
@GET
public Response logSomething(@QueryParam("param") String param) {
ThreadContext.put("someName", "default");
LOGGER.info("Param from query: {}", param);
ThreadContext.clearMap();
return Response.ok().build();
}下面是我的(简化为)配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n" />
</Console>
<RollingFile name="Rolling"
fileName="logs/${ctx:someName}-webapps-metrics.log"
filePattern="logs/archives/${ctx:someName}-webapps-metrics-%i.log" >
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %m%n"/>
<SizeBasedTriggeringPolicy size="5 KB"/>
</RollingFile>
</Appenders>
<Loggers>
<!-- My Logger using rollingFile -->
<Logger name="com.ipanematech.rest.MyRESTFacade" level="info" additivity="false">
<AppenderRef ref="Rolling" />
</Logger>
<Root level="warn">
<AppenderRef ref="STDOUT" />
</Root>
</Loggers>
</Configuration>在目录中创建一个名为"{ctx“的文件。在这些属性中,获取上下文的表达式似乎不起作用。
我尝试在我的附录的PatternLayout中使用上下文,它运行得很好。
在fileName和filePattern中,我尝试了不同的语法,但没有一种有效:
发布于 2014-10-16 21:13:56
RoutingAppender可以做你想做的事。有关log4j2 FAQ页面,请参阅详细实例。
https://stackoverflow.com/questions/26405456
复制相似问题