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



我想配置jboss 7在不同的文件中保存两个类别,但是当我启动jboss时,这个文件sql_hib.log为空。FILE_SQL处理程序不工作。我不知道为什么……如果我将FILE_SQL放在根日志记录器中,那么sql_hib.log就会开始增长,但在这种情况下,它包含了大量冗余日志。这是standalone.xml

的一部分
<subsystem xmlns="urn:jboss:domain:logging:1.1">
            <console-handler name="CONSOLE">
                ...
            </console-handler>
            <periodic-rotating-file-handler name="FILE">
                ...
            </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">
                <level name="TRACE"/>
                <handlers>
                    <handler name="FILE_SQL"/>
                </handlers>
            </logger>
            <root-logger>
                <level name="TRACE"/>
                <handlers>
                    <handler name="CONSOLE"/>
                    <handler name="FILE"/>
                </handlers>
            </root-logger>
        </subsystem>

我知道这是一个非常古老的线程。但它可能会帮助某些人。Use-parent-handlers可以做到这一点。在这种情况下,它不会通过根日志记录器打印重复的日志。

<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>

我做这个设置是为了调试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,而不是将所有其他类别设置。但我不知道如何过滤。这个设置是有效的。但是休眠日志也是用server.log写的。我不明白为什么

最新更新