Log4j在单个Web应用程序中的多个配置

时间:2013-07-30 03:37:51

标签: java logging log4j

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

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

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

    Web-App
       Component1 
       Component2
       Component3
       Component4

1 个答案:

答案 0 :(得分:1)

您需要为每个服务包定义不同的log4j appender。以下是在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的属性文件配置,则可以对属性文件使用相同的方法。