在其他 .log 文件/Wildfly 11 中记录 org.hibernate.SQL

Log org.hibernate.SQL in other .log file / Wildfly 11

我在子系统中有这个 standalone.xml 配置:

<subsystem xmlns="urn:jboss:domain:logging:3.0">
    <console-handler name="CONSOLE">
        <level name="INFO"/>
        <formatter>
            <pattern-formatter pattern="%d %-5p [%c] (%t) %s%E%n"/>
        </formatter>
    </console-handler>
    <periodic-rotating-file-handler name="FILE">
        <formatter>
            <pattern-formatter pattern="%d %-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="CMP">
        <formatter>
            <pattern-formatter pattern="%d %-5p [%c] (%t) %s%E%n"/>
        </formatter>
        <file relative-to="jboss.server.log.dir" path="CMP.log"/>
        <suffix value=".yyyy-MM-dd"/>
        <append value="true"/>
    </periodic-rotating-file-handler>
    <logger category="org.hibernate.SQL">
        <level name="DEBUG"/>
        <handlers>
            <handler name="CMP"/>
        </handlers>
    </logger>
    <root-logger>
        <level name="INFO"/>
        <handlers>
            <handler name="CONSOLE"/>
            <handler name="FILE"/>
        </handlers>
    </root-logger>
</subsystem>

当我 运行 应用程序时,它会在两个文件中打印 org.hibernate.SQL (例如 SQL 查询),但我只想打印 org.hibernate.SQL在 CMP.log 文件中。

如何从 server.log 中排除 org.hibernate.SQL 写入并仅在 CMP.log 文件中打印?

您需要在 org.hibernate.SQL 记录器上将 use-parent-handlers 设置为 false。使用 CLI,您可以执行以下操作:

/subsystem=logging/logger=org.hibernate.SQL:write-attribute(name=use-parent-handlers, value=false)