在 server.log 中抑制服务器抛出的警告

supress warnings thrown by server in server.log

我正在使用 Wildfly 8 进行部署。我们的应用程序使用 JDBC 访问数据库。 Java 代码中的数据库资源管理不正确,比如当一个连接关闭时,它的许多关联语句或结果集都没有关闭。因此,当我关闭连接时,服务器会抛出以下警告:

21:52:35,702 WARN  [org.jboss.jca.adapters.jdbc.WrappedConnection] (EJB default - 1) Closing a statement you left open, please do your own housekeeping: java.lang.Throwable: STACKTRACE
    at org.jboss.jca.adapters.jdbc.WrappedConnection.registerStatement(WrappedConnection.java:1677)
    at org.jboss.jca.adapters.jdbc.WrappedStatement.<init>(WrappedStatement.java:105)
    at org.jboss.jca.adapters.jdbc.WrappedPreparedStatement.<init>(WrappedPreparedStatement.java:69)
    at org.jboss.jca.adapters.jdbc.jdk6.WrappedPreparedStatementJDK6.<init>(WrappedPreparedStatementJDK6.java:52)
    at org.jboss.jca.adapters.jdbc.jdk6.WrappedConnectionJDK6.wrapPreparedStatement(WrappedConnectionJDK6.java:79)
    at org.jboss.jca.adapters.jdbc.WrappedConnection.prepareStatement(WrappedConnection.java:405)

如何抑制此类警告消息,使其不出现在 Wildfly 的 server.log 中?

您应该修复您的代码,而不仅仅是抑制告诉您您编写了错误代码的日志

假设您使用的是默认配置,那么 $JBOSS_HOME/standalone/configuration/standalone.xml 是一个 XML 文件,其中包含您的服务器的日志记录配置。 XPATH /jboss:server/jboss:profile/logging:subsystem 会将您带到一个包含多个 logger 元素的元素,每个元素都有一个 category 和一个 level。类别是正在配置的记录器的名称,例如 org.jboss.jca.adapters.jdbc.WrappedConnection,级别名称是在该记录器上设置的阈值。如果您将日志记录级别设置为 ERROR,如以下配置,那么任何 WARN 日志都将被抑制。

<logger category="org.jboss.jca.adapters.jdbc.WrappedConnection">
    <level name="ERROR"/>
</logger>

实际解决错误代码更好,但这将完成您的要求。