将服务器日志记录到一个文件,将SQL日志记录到另一个文件

时间:2014-08-20 21:56:59

标签: hibernate log4j

我想使用Log4J将所有与服务器相关的日志(如启动和关闭)记录到一个文件,并将所有与Hibernate SQL相关的日志记录到另一个文件。我试图过滤所有不相关的日志,只看到SQL查询。有任何想法或建议,如果我们有办法实现它吗?

感谢。

1 个答案:

答案 0 :(得分:0)

如果您使用两个不同的appender,则可以这样做,如以下配置文件(XML)中所示: 1

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    <!-- DEFAULT appender -->
    <appender name="DEFAULT" class="org.apache.log4j.FileAppender">
        <param name="file" value="default.log" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="conversionPattern"
                   value="%d{yyyyMMdd-HHmmss.SSS} %-5p (%c.java:%L).%M - %m%n" />
        </layout>
    </appender>

    <!-- HIBERNATE appender -->
    <appender name="HIBERNATE" class="org.apache.log4j.FileAppender">
        <param name="file" value="hibernate.log" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="conversionPattern" 
                   value="%d{yyyyMMdd-HHmmss.SSS} %m%n" />
        </layout>
    </appender>

    <!-- categories -->
    <category name="org.hibernate.SQL" additivity="false">
        <priority value="DEBUG" />
        <appender-ref ref="HIBERNATE" />
    </category>

    <!-- root -->
    <root>
        <priority value="INFO" />
        <appender-ref ref="DEFAULT" />
    </root>

</log4j:configuration>

使用类别(category),您可以轻松配置appender目标(appender-ref)以及是否要登录默认的appenders(additivity="false")。


备注

  1. log4j在应用程序的类路径中自动查找log4j.xml文件(默认包或resources目录)