Java Spring的日志记录问题(核心和jdbc不是MVC)

Java Spring的日志记录问题(核心和jdbc不是MVC),java,spring,logging,jdbc,log4j,Java,Spring,Logging,Jdbc,Log4j,我的应用程序正在使用Spring处理与数据库的交互(sqlserver) 和commons-logging-1.1.1.jar,log4j-1.2.17.jar,slf4j-api-1.6.3.jar和slf4j-log4j12-1.7.6.jar被放入应用程序日志框架的构建路径中 最后两个日志jar(slf4j-api和slf4j-log4j12)供应用程序内的另一个组件使用 以下是我的问题: 当springjdbc运行时异常发生时,该异常仅在eclipse控制台中以红色字体显示。该异常未记录

我的应用程序正在使用
Spring
处理与数据库的交互(
sqlserver

commons-logging-1.1.1.jar
log4j-1.2.17.jar
slf4j-api-1.6.3.jar
slf4j-log4j12-1.7.6.jar
被放入应用程序日志框架的构建路径中

最后两个日志jar(
slf4j-api
slf4j-log4j12
)供应用程序内的另一个组件使用

以下是我的问题:

  • springjdbc
    运行时异常发生时,该异常仅在eclipse控制台中以红色字体显示。该异常未记录到日志文件中。但是普通日志(如
    log.info(…)
    )都在日志文件中。为什么运行时异常不能在日志文件中,以及如何解决此问题

  • 当我使用
    SimpleJdbcCall
    调用带有
    MapSqlParameterSource
    中参数的存储过程时,将显示以下日志:

  • 14:43:30[INFO]添加了名为#update-count-1的默认SqlReturnUpdateCount参数

    14:43:30[INFO]添加了名为#update-count-1的默认SqlReturnUpdateCount参数

    这真的很烦人,因为这条消息的数量太多了。我想关闭此特定日志消息,而不影响具有相同级别的其他日志(
    INFO

    我认为我的log4j.xml很好,因为除了上述问题之外,日志记录基本上都很好

  • Spring在内部使用commons日志记录,这就是为什么您可以在eclipse控制台中看到这些消息。要将commons日志重定向到slf4j/log4j,需要从类路径中删除commons-logging-1.1.jar,并从slf4j版本中添加jcl-over-slf4j.jar。要消除双重红色eclipse消息(jul和jcl),可以在logging.properties中将控制台处理程序的日志记录级别设置为警告:

    java.util.logging.ConsoleHandler.level=警告

  • 第二个问题解决了


  • 若从类路径中删除commons-logging.jar,应用程序将启动时出现错误:找不到类…jcl-over-slf4j.jar是否包含所有必需的类?