我想配置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
写的。我不明白为什么