jboss standalone.xml记录器类别到不同的文件

时间:2016-08-08 16:04:43

标签: java logging jboss jboss7.x

我想配置jboss 7以在不同的文件中保存两个类别,但是当我启动jboss时,此文件sql_hib.log为空。 FILE_SQL处理程序不起作用。我不知道为什么...... 如果我将FILE_SQL放置到根记录器 - 然后sql_hib.log开始增长,但在这种情况下它包含许多冗余日志。 这是standalone.xml的一部分

th {
/* not applied successfully */
color: red; 
}

2 个答案:

答案 0 :(得分:0)

我已经设置了这个设置来调试sql查询和参数。 这就是为什么我决定使用单独的文件。此外,我制作了更多类别,因为一个班级制作的文字过多。 AbstractResultSetProxyHandler 正如我之前提到的 - 设置刚开始工作......我稍微改变它们 - 以避免海洋不必要的文本。 结果设置:

<subsystem xmlns="urn:jboss:domain:logging:1.1">
    <console-handler name="CONSOLE">
        <level name="INFO"/>
        <formatter>
            <pattern-formatter pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p [%c] (%t) %s%E%n"/>
        </formatter>
    </console-handler>
    <periodic-rotating-file-handler name="FILE">
        <formatter>
            <pattern-formatter pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p [%c] (%t) %s%E%n"/>
        </formatter>
        <file relative-to="jboss.server.log.dir" path="server.log"/>
        <suffix value=".yyyy-MM-dd"/>
        <append value="true"/>
    </periodic-rotating-file-handler>
    <periodic-rotating-file-handler name="FILE_SQL" autoflush="true">
        <level name="TRACE"/>
        <formatter>
            <pattern-formatter pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p [%c] (%t) %s%E%n"/>
        </formatter>
        <file relative-to="jboss.server.log.dir" path="sql_hib.log"/>
        <suffix value=".yyyy-MM-dd"/>
        <append value="true"/>
    </periodic-rotating-file-handler>
    <logger category="org.hibernate.SQL">
        <level name="TRACE"/>
        <handlers>
            <handler name="FILE_SQL"/>
        </handlers>
    </logger>
    <logger category="org.hibernate.type">
        <level name="TRACE"/>
        <handlers>
            <handler name="FILE_SQL"/>
        </handlers>
    </logger>
    <logger category="org.hibernate.loader">
        <level name="TRACE"/>
        <handlers>
            <handler name="FILE_SQL"/>
        </handlers>
    </logger>
    <logger category="org.hibernate.persister">
        <level name="TRACE"/>
        <handlers>
            <handler name="FILE_SQL"/>
        </handlers>
    </logger>
    <logger category="org.hibernate.hql">
        <level name="TRACE"/>
        <handlers>
            <handler name="FILE_SQL"/>
        </handlers>
    </logger>
    <logger category="org.hibernate.cfg">
        <level name="TRACE"/>
        <handlers>
            <handler name="FILE_SQL"/>
        </handlers>
    </logger>
    <logger category="org.hibernate.dialect">
        <level name="TRACE"/>
        <handlers>
            <handler name="FILE_SQL"/>
        </handlers>
    </logger>
    <logger category="org.hibernate.service">
        <level name="TRACE"/>
        <handlers>
            <handler name="FILE_SQL"/>
        </handlers>
    </logger>
    <logger category="org.hibernate.engine.jdbc.internal.proxy.PreparedStatementProxyHandler">
        <level name="TRACE"/>
        <handlers>
            <handler name="FILE_SQL"/>
        </handlers>
    </logger>
    <root-logger>
        <level name="DEBUG"/>
        <handlers>
            <handler name="CONSOLE"/>
            <handler name="FILE"/>
        </handlers>
    </root-logger>
</subsystem>

我知道最好只过滤一个AbstractResultSetProxyHandler,而不是将每个其他类别过滤到设置中。但我不知道如何过滤。 这些设置有效。 但是hibernate日志也是用server.log编写的。我不明白为什么

答案 1 :(得分:0)

我知道这是一个非常老的线程。但这可能会帮助某人。 use-parent-handlers将解决问题。在这种情况下,它不会通过root-logger打印重复的日志。

<periodic-rotating-file-handler name="FILE_SQL" autoflush="true">
    <level name="TRACE"/>
    <formatter>
        <pattern-formatter pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p [%c] (%t) %s%E%n"/>
    </formatter>
    <file relative-to="jboss.server.log.dir" path="sql_hib.log"/>
    <suffix value=".yyyy-MM-dd"/>
    <append value="true"/>
</periodic-rotating-file-handler>
<logger category="org.hibernate.SQL" use-parent-handlers="false">
    <level name="TRACE"/>
    <handlers>
        <handler name="FILE_SQL"/>
    </handlers>
</logger>