我想根据模块名称写入日志文件。 对于前。 用户管理模块的一个日志文件和 一个用于产品模块等
我的项目包结构如下所示;
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.*.product
到 com.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/