首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Log4j 2:不能在RollingFileAppender fileName和filePattern中使用ContextMapLookup

Log4j 2:不能在RollingFileAppender fileName和filePattern中使用ContextMapLookup
EN

Stack Overflow用户
提问于 2014-10-16 13:16:40
回答 1查看 1.7K关注 0票数 3

我正在使用log4j 2.0.2进行日志记录。我正在尝试将ContextMapLookup应用到RollingFileAppender的fileName和filePattern属性中,但我无法使它工作。

以下是REST外观中的(简化) Map初始化:

代码语言:javascript
复制
@GET
public Response logSomething(@QueryParam("param") String param) {
    ThreadContext.put("someName", "default");
    LOGGER.info("Param from query: {}", param);
    ThreadContext.clearMap();
    return Response.ok().build();
}

下面是我的(简化为)配置文件:

代码语言:javascript
复制
<?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中,我尝试了不同的语法,但没有一种有效:

  • ${ctx:someName} (如上面的示例所示)
  • $${ctx:偏名}
  • %X{someName}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-16 21:13:56

RoutingAppender可以做你想做的事。有关log4j2 FAQ页面,请参阅详细实例

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26405456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档