Log4j2按模块名称分隔日志文件

时间:2014-04-09 02:25:33

标签: java logging wildcard log4j2

我想根据模块名称编写日志文件。 对于前 用户管理模块的一个日志文件和 一个用于产品模块等。

我的项目包结构如下所示;

com.mycompany.service.user
com.mycompany.service.product
com.mycompany.controller.user
com.mycompany.controller.product
...

我想写来自的日志消息 com.mycompany.*.user (com.mycompany.service.user和com.mycompany.controller.user)com.mycompany.user.log文件, 和com.mycompany.*.productcom.mycompany.user.log档案。

我知道我可以创建像bellow

这样的记录器
<logger name="com.mycompany.service.user" level="INFO">
  <AppenderRef ref="AppenderUsers" />
</logger>
<logger name="com.mycompany.controller.user" level="INFO">
  <AppenderRef ref="AppenderUsers" />
</logger>
...

但是这样我必须添加这么多记录器。 我不能使用通配符***或正则表达式来记录这样的名字吗?

<logger name="com.mycompany.*.user" level="INFO">
  <AppenderRef ref="AppenderUsers" />
</logger>

或者有没有办法做到这一点?

2 个答案:

答案 0 :(得分:4)

最后,我通过编写自定义过滤器插件解决了这个问题。 我使用了Regex过滤器中使用的相同方法。但正则表达式过滤,匹配给定正则表达式与消息内容。但是我编写了一个过滤器来匹配正则表达式和类名。

我在博客文章中对此进行了描述。 http://rohithag.blogspot.com/

答案 1 :(得分:1)

我建议您在log4j2 Jira问题跟踪器中将其作为功能请求提出。