当前位置: 首页 > 知识库问答 >
问题:

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

梁烨烨
2023-03-14

我想根据模块名编写日志文件。例如,一个日志文件用于用户管理模块,一个日志文件用于产品模块等。

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

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.*. Productscom.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>

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

共有2个答案

田志尚
2023-03-14

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

祁博雅
2023-03-14

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

我已经在我的博客文章中描述了这一点。http://rohithag.blogspot.com/

 类似资料:
  • 我希望由log4j2创建的日志文件在其文件名中包含日期模式,包括当前活动文件。也就是说,如果今天的日期是2016-12-15,我希望当前日志文件是lager-2016-12-15.log。当日期改变时,我希望创建一个名为lager-2016-12-16.log的新文件。 使用,我无法使当前活动日志文件的文件名中具有日期模式。我的log4j2.xml: 使用此配置,翻转时的复制被搞乱了。从fileN

  • 主要内容:1. 概述,2. LogFactory,3. Log1. 概述 无论在开发测试环境中,还是在线上生产环境中,日志在整个系统中的地位都是非常重要的。良好的日志功能可以帮助开发人员和测试人员快速定位 Bug 代码,也可以帮助运维人员快速定位性能瓶颈等问题。目前的 Java 世界中存在很多优秀的日志框架,例如 Log4j、 Log4j2、Slf4j 等。 MyBatis 作为一个设计优良的框架,除了提供详细的日志输出信息,还要能够集成多种日志框架,其日志

  • 我有将日志保存到文件配置,但日志会附加到现有内容。我想创建总是新的文件。我怎么能那样做? 我的log4j2.xml:

  • 我按照这里的教程SpringEureka教程创建了一个基本的Eureka注册表jar应用程序。下一步是将日志记录更改为log4j2,这样我就可以使用Spring log4j2指南中的指南获得一个滚动文件。 我遇到的问题是,当我运行应用程序时,没有抛出错误,但是 eureka服务器日志仍会输出到控制台 已创建自定义日志输出文件“eureka.log”,但该文件为空 我编写的任何自定义日志,例如

  • 我是Log4J2的新手。我正在尝试配置一个使用slf4j和LOG4J2的日志记录系统。

  • 问题内容: 我正在尝试找到一种通过名称访问模块变量的方法,但尚未找到任何东西。我现在使用的是: 但是它很模糊并且破坏了IDE错误检查(即,在eclipse / pydev import中,myModule被标记为未使用,而在上一行中则需要)。有什么更好的方法吗?可能是我不知道的模块内置功能? 问题答案: