Spring Hibernate日志记录-单独的日志文件

Spring Hibernate日志记录-单独的日志文件,hibernate,log4j,Hibernate,Log4j,我在应用程序中使用Spring和Hibernate,我想设置两个不同的日志文件——一个主日志文件(所有非sql日志记录)和另一个用于编写sql查询的文件。这是我的log4j.properties文件。。但是,当sql日志文件按预期工作时,问题是主日志文件还包含sql查询。。为了停止将sql查询写入主日志文件,我应该在此处进行哪些更改 #application log properties log4j.appender.rollingFile = org.apache.log4j.DailyRol

我在应用程序中使用Spring和Hibernate,我想设置两个不同的日志文件——一个主日志文件(所有非sql日志记录)和另一个用于编写sql查询的文件。这是我的log4j.properties文件。。但是,当sql日志文件按预期工作时,问题是主日志文件还包含sql查询。。为了停止将sql查询写入主日志文件,我应该在此处进行哪些更改

#application log properties
log4j.appender.rollingFile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.rollingFile.File = C:\\myapp\\logs\\app.log
log4j.appender.rollingFile.Threshold = TRACE
log4j.appender.rollingFile.DatePattern = '.'yyyy-MM-dd
log4j.appender.rollingFile.layout = org.apache.log4j.PatternLayout 
log4j.appender.rollingFile.layout.ConversionPattern=%d %5p [%C:%M:%L] - %m%n
log4j.rootLogger = ERROR, rollingFile

#hibernate properties
log4j.appender.file = org.apache.log4j.DailyRollingFileAppender 
log4j.appender.file.File = C:\\myapp\\logs\\sql.log
log4j.appender.file.Threshold = TRACE
log4j.appender.file.DatePattern = '.'yyyy-MM-dd
log4j.appender.file.layout = org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d %5p [%C:%M:%L] - %m%n
log4j.logger.jdbc.sqltiming = DEBUG, file

这是log4j中附加器的可加性行为

给定记录器的每个已启用日志记录请求都将 转发给该记录器中的所有appender以及appender 层次结构中的更高层次

只需将记录器的additivity
jdbc.sqltiming
设置为false,其日志消息将不会传播到其父记录器的appender(即app.log)


参考文献:


谢谢内森和肯。。另外,在我当前的配置日志文件中,直到日期结束,日志文件才附加日期。。我的意思是今天的日志会一直写到“app.log”直到午夜,然后我会看到“app.log.2011-08-12”——根据log4j文档,这实际上是预期的行为。。但是有没有办法改变这种行为,使日志可写到当前日期?我的意思是我应该能够在今天午夜前看到“app.log.2011-08-12”。。我认为通过使用log4jextra,我们可以做到这一点,但我不喜欢XML配置,也不想这样做。。谢谢你advance@rrkwells,您可以尝试使用
DatedFileAppender
。与log4j附带的
dailrollingfileappender
相反,DatedFileAppender生成的日志文件名始终包含今天的日期。
log4j.additivity.jdbc.sqltiming = false