【问题标题】:Log4j multiple configurations within a single web-app单个 Web 应用程序中的 Log4j 多个配置
【发布时间】:2013-07-30 03:37:51
【问题描述】:

我有一个我正在尝试使用的网络应用程序。我的网络应用程序中有不同的服务。每个都提供独特的功能,但访问相同的数据库。每个服务都与数据库通信,添加或更新内容,GUI 显示输出。 我正在使用 Spring、maven 并使用 mybatis 进行 SQL 映射。我将所有内容打包成一个战争文件并将其部署到 Tomcat 上。

我希望网络应用程序的每个组件都记录它执行的 SQL 查询。我使用 log4j 作为日志引擎。如何让每个组件使用不同的 log4j 配置? jdbcdslog 可以帮我存储一些与查询相关的元数据吗?

基本上我想将数据记录到每个组件的单独日志文件中。 log4j 只选择它从组件加载的最后一个配置文件。所有其他配置都没有用。所以我试图找到一种方法来分离出每个组件的日志数据。

    Web-App
       Component1 
       Component2
       Component3
       Component4

【问题讨论】:

  • 你直接调用Log4J吗?还是mybatis为你做的?
  • 您好 Thilo,在我的应用程序中,MyBatis 不会将调用委托给 Log4j。我正在使用 jdbcdslog 来记录 SQL,它使用 slf4j 和 Log4j 作为日志引擎。我没有发现 Mybatis 是一个合适的选项,因为我想要纯 SQL 查询,我可以复制粘贴并直接对数据库使用它,并查找填充的值。 MyBatis 确实向我显示了已执行的查询,但这些查询不能直接使用。

标签: java logging log4j


【解决方案1】:

您需要为每个服务包定义不同的 log4j 附加程序。这是在 log4j.xml 中执行此操作的方法:

Appender1

<category name="com.test.project.Component1" additivity="true">
    <priority value="DEBUG"/>
    <appender-ref ref="LOG1"/>
</category>

Appender2

<category name="com.test.project.Component2" additivity="true">
    <priority value="TRACE"/>
    <appender-ref ref="LOG2"/>
</category>

如果您使用 log4j 的属性文件配置,您可以对属性文件使用相同的方法。

【讨论】:

  • 问题是当所有这些组件都使用相同的数据库访问库(大概是做日志记录)时,这是否可能,在这种情况下是 mybatis。
  • @Thilo 我正在尝试回答这部分“基本上我想将数据记录到每个组件的单独日志文件中。并且 log4j 只选择它从组件加载的最后一个配置文件。所有其他配置都去没用。所以我试图找到一种方法来分离每个组件的日志数据。”
  • @JunedAhsan,感谢您的回复。您能否建议我一种获取与查询相关的元数据的方法,例如查询是从哪个包中触发的。我想将关于包的数据存储到日志文件中。部署战争时,所有日志数据都只是转储到日志文件中。我能知道它是从哪里来的吗?
  • @harshalvaidya 您需要使用 %C 打印每个日志行的包和类名。在此处阅读更多信息:logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/… 并关注此:stackoverflow.com/questions/2594818/log4j-show-package-name
  • @JunedAhsan,我尝试使用 %C 参数打印包。但问题是我得到类似 2013-07-30-main--INFO -org.jdbcdslog.StatementLogger:java.sql.Statement.executeQuery: SELECT id, first, last, age FROM Employees;对于我试图记录的 sql 查询。它没有给我触发它的类,因为我使用 jdbcdslog 来记录 SQL。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-12
  • 2018-12-25
  • 1970-01-01
  • 2019-05-30
  • 2013-01-28
相关资源
最近更新 更多