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

标签 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 文件。

我知道我可以创建如下所示的记录器

<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>

或者有什么办法可以做到这一点吗?

最佳答案

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

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

关于java - Log4j2按模块名称分隔日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22951682/

相关文章:

java - SwingWorker的重复执行

python - 从 Python 发送日志到 Slack

python - 命名与通配符导入为何/如何影响参数?

flash - 可以返回两种类型的方法的 AS3 最佳实践

java - 找不到文件结尾

java - jtable 内的动态 jcombobox 项目

java - 在一行中创建和填充 TreeMap

java - Apache Commons Logging 的运行时发现算法有什么问题

python - 我是否需要在 python 项目中跨模块共享记录器实例?

正则表达式非贪婪地匹配多行直到以特定字符串开头的行