Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Log4j单个web应用程序中的多个配置_Java_Logging_Log4j - Fatal编程技术网

Java Log4j单个web应用程序中的多个配置

Java Log4j单个web应用程序中的多个配置,java,logging,log4j,Java,Logging,Log4j,我有一个我正在尝试使用的web应用程序。我的web应用程序中有不同的服务。每个都提供一个唯一的功能,但访问相同的数据库。每个服务都与数据库通信,添加或更新内容,GUI显示输出。 我正在使用Spring、maven和mybatis进行SQL映射。我正在将所有内容打包到war文件中,并将其部署到Tomcat上 我希望web应用程序的每个组件都记录它执行的SQL查询。我使用log4j作为日志引擎。如何使每个组件使用不同的log4j配置?jdbcdslog能否帮助我存储一些与查询相关的元数据 基本上,我

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

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

基本上,我希望将数据记录到每个组件的单独日志文件中。log4j只从组件中获取它加载的最后一个配置文件。所有其他配置都将失效。因此,我试图找到一种方法来分离每个组件的日志数据

    Web-App
       Component1 
       Component2
       Component3
       Component4

您需要为每个服务包定义不同的log4j appender。以下是如何在log4j.xml中执行此操作:

附录1

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

附录2

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


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

您需要为每个服务包定义不同的log4j附加器。以下是如何在log4j.xml中执行此操作:

附录1

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

附录2

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


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

问题是,如果所有这些组件都使用相同的数据库访问库(可能会进行日志记录),那么这是否可行?在这种情况下,mybatis。@Thilo我正在尝试回答这一部分“基本上,我希望将数据记录到每个组件的单独日志文件中。log4j只从组件中获取它加载的最后一个配置文件。所有其他配置都将失效。因此,我试图找到一种方法来分离每个组件的日志数据。“@JunedAhsan,谢谢你的回复。您还可以建议我一种获取与查询相关的元数据的方法,比如从哪个包启动查询。我想将有关包的数据存储到日志文件中。部署war时,所有日志数据都会转储到日志文件中。我可以知道它来自哪里吗?@harshalvaidya您需要使用%C打印每个日志行的包和类名。请在此处阅读更多内容:并遵循以下内容:@JunedAhsan,我尝试使用%C参数打印包。但问题是我得到了类似2013-07-30-main--INFO-org.jdbcslog.StatementLogger:java.sql.Statement.executeQuery:SELECT id,first,last,age FROM Employees;对于我尝试记录的sql查询。它没有给我它被激发的类,因为我正在使用jdbcdslog记录SQL。问题是当所有这些组件使用相同的数据库访问库(大概是记录)时,这是否可能,在本例中是mybatis。@Thilo我试图回答这一部分“基本上,我希望将数据记录到每个组件的单独日志文件中。log4j只从组件中获取它加载的最后一个配置文件。所有其他配置都将失效。因此,我试图找到一种方法来分离每个组件的日志数据。“@JunedAhsan,谢谢你的回复。您还可以建议我一种获取与查询相关的元数据的方法,比如从哪个包启动查询。我想将有关包的数据存储到日志文件中。部署war时,所有日志数据都会转储到日志文件中。我可以知道它来自哪里吗?@harshalvaidya您需要使用%C打印每个日志行的包和类名。请在此处阅读更多内容:并遵循以下内容:@JunedAhsan,我尝试使用%C参数打印包。但问题是我得到了类似2013-07-30-main--INFO-org.jdbcslog.StatementLogger:java.sql.Statement.executeQuery:SELECT id,first,last,age FROM Employees;对于我尝试记录的sql查询。它没有给我它被激发的类,因为我使用jdbcdslog来记录SQL。你直接调用Log4J吗?或者mybatis是为你做的?Hi Thilo,在我的应用程序中,mybatis不会将调用委托给Log4j。我使用jdbcdslog来记录SQL,它使用slf4j和Log4j作为日志引擎。我没有发现Mybatis是一个合适的选项,因为我想要纯SQL查询,我可以复制粘贴并直接对数据库使用它,并查找填充的值。MyBatis确实向我显示了执行的查询,但这些查询不能直接使用。您是否直接调用Log4J?或者mybatis是为你做的?Hi Thilo,在我的应用程序中,mybatis不会将调用委托给Log4j。我使用jdbcdslog来记录SQL,它使用slf4j和Log4j作为日志引擎。我没有发现Mybatis是一个合适的选项,因为我想要纯SQL查询,我可以复制粘贴并直接对数据库使用它,并查找填充的值。MyBatis确实向我展示了执行的查询,但这些查询不能直接使用。