Hibernate Tomcat catalina.out文件正在快速增长!如何防止冬眠';是否将添加到catalina.out文件中的s信息和调试语句?

Hibernate Tomcat catalina.out文件正在快速增长!如何防止冬眠';是否将添加到catalina.out文件中的s信息和调试语句?,hibernate,logging,tomcat5.5,catalina,Hibernate,Logging,Tomcat5.5,Catalina,我的Java应用程序(Spring、Hibernate、MySQL)正在Tomcat5.5中运行 在对我的应用程序进行最后一组更改之后,Tomcat的catalina.out文件增长非常快。每次查询都会向文件中添加几MB的信息和调试语句 日志文件包含大量信息和调试语句,例如: 01:52:45.412 [main] INFO o.hibernate.cfg.annotations.Version - Hibernate Annotations 3.5.6-Final 01:52:45.465

我的Java应用程序(Spring、Hibernate、MySQL)正在Tomcat5.5中运行

在对我的应用程序进行最后一组更改之后,Tomcat的catalina.out文件增长非常快。每次查询都会向文件中添加几MB的信息和调试语句

日志文件包含大量信息和调试语句,例如:

01:52:45.412 [main] INFO  o.hibernate.cfg.annotations.Version - Hibernate Annotations 3.5.6-Final
01:52:45.465 [main] INFO  org.hibernate.cfg.Environment - Hibernate 3.5.6-Final
01:52:45.468 [main] INFO  org.hibernate.cfg.Environment - hibernate.properties not found
01:52:45.473 [main] INFO  org.hibernate.cfg.Environment - Bytecode provider name : javassist
01:52:45.479 [main] INFO  org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling
01:52:45.629 [main] DEBUG o.h.i.f.DefaultIdentifierGeneratorFactory - Registering IdentifierGenerator strategy [uuid] -> [class org.hibernate.id.UUIDHexGenerator]
01:52:45.635 [main] DEBUG o.h.i.f.DefaultIdentifierGeneratorFactory - Registering IdentifierGenerator strategy [hilo] -> [class org.hibernate.id.TableHiLoGenerator]
01:52:45.636 [main] DEBUG o.h.i.f.DefaultIdentifierGeneratorFactory - Registering IdentifierGenerator strategy [assigned] -> [class org.hibernate.id.Assigned]
01:52:45.639 [main] DEBUG o.h.i.f.DefaultIdentifierGeneratorFactory - Registering IdentifierGenerator strategy [identity] -> [class org.hibernate.id.IdentityGenerator]
01:52:45.640 [main] DEBUG o.h.i.f.DefaultIdentifierGeneratorFactory - Registering IdentifierGenerator strategy [select] -> [class org.hibernate.id.SelectGenerator]


01:52:45.668 [main] INFO  o.h.annotations.common.Version - Hibernate Commons Annotations 3.2.0.Final
01:52:45.719 [main] DEBUG o.h.cfg.AnnotationConfiguration - Execute first pass mapping processing
01:52:45.780 [main] DEBUG o.h.cfg.AnnotationConfiguration - Process hbm files
01:52:45.780 [main] DEBUG o.h.cfg.AnnotationConfiguration - Process annotated classes
01:52:45.791 [main] INFO  org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: com.knownomy.scl.appcommon.domain.Language
01:52:45.805 [main] INFO  o.h.cfg.annotations.QueryBinder - Binding Named query: language.id => from Language language where language.id = ?
01:52:45.821 [main] DEBUG org.hibernate.cfg.Ejb3Column - Binding column: Ejb3DiscriminatorColumn{logicalColumnName'DTYPE', discriminatorTypeName='string'}
01:52:45.824 [main] DEBUG org.hibernate.cfg.AnnotationBinder - no value specified for 'javax.persistence.sharedCache.mode'; using UNSPECIFIED
01:52:45.843 [main] DEBUG o.h.cfg.annotations.EntityBinder - Import with entity name Language
01:52:45.849 [main] INFO  o.h.cfg.annotations.EntityBinder - Bind entity com.knownomy.scl.appcommon.domain.Language on table language

01:52:50.164 [main] DEBUG o.h.hql.ast.QueryTranslatorImpl - parse() - HQL: from com.knownomy.scl.quiz.domain.Question question where question.chapter.id=? and question.questionSource.id=? and question.mcq.questionText=?
01:52:50.177 [main] DEBUG org.hibernate.hql.ast.AST - --- HQL AST ---
 \-[QUERY] Node: 'query'
    +-[SELECT_FROM] Node: 'SELECT_FROM'
    |  \-[FROM] Node: 'from'
    |     \-[RANGE] Node: 'RANGE'
    |        +-[DOT] Node: '.'
    |        |  +-[DOT] Node: '.'
    |        |  |  +-[DOT] Node: '.'
    |        |  |  |  +-[DOT] Node: '.'
    |        |  |  |  |  +-[DOT] Node: '.'
    |        |  |  |  |  |  +-[IDENT] Node: 'com'
    |        |  |  |  |  |  \-[IDENT] Node: 'knownomy'
    |        |  |  |  |  \-[IDENT] Node: 'scl'
    |        |  |  |  \-[IDENT] Node: 'quiz'
    |        |  |  \-[IDENT] Node: 'domain'
    |        |  \-[IDENT] Node: 'Question'
    |        \-[ALIAS] Node: 'question'
    \-[WHERE] Node: 'where'
log4j.properties的内容:

log4j.rootLogger=INFO, stdout, R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%5p] %d{yyyy-MM-dd HH:mm:ss} (%F:%M:%L) - %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=${catalina.home}/logs/SmartCloudLearningMobi.log
log4j.appender.R.MaxFileSize=10MB 
log4j.appender.R.MaxBackupIndex=10 
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=[%5p] %d{yyyy-MM-dd HH:mm:ss} (%F:%M:%L) - %m%n

log4j.logger.org.hibernate=ERROR, stdout, R
log4j.logger.org.hibernate.type=ERROR, stdout, R
log4j.logger.org.hibernate.SQL=ERROR, stdout, R
log4j.logger.org.hibernate.tool.hbm2ddl=ERROR, stdout, R
log4j.logger.org.hibernate.cache=ERROR, stdout, R
log4j.additivity.org.hibernate.SQL=false
log4j.logger.org.springframework=ERROR, stdout, R
log4j.logger.org.springframework.test.context.junit4.SpringJUnit4ClassRunner=ERROR, stdout, R
application.properties文件的内容:

#  Application Properties
path.webinf=webapps/SmartCloudLearningMobi/WEB-INF
# JDBC Connection information
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/databasename?useUnicode=true&characterEncoding=UTF8
jdbc.username=root
jdbc.password=mypassword
###hibernate
hibernate.show_sql=false
hibernate.format_sql=true
hibernate.transaction.factory_class=org.hibernate.transaction.JDBCTransactionFactory
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.c3p0.min_size=1
hibernate.c3p0.max_size=25
hibernate.c3p0.acquire_increment=5
hibernate.c3p0.timeout=1800
hibernate.c3p0.max_statements=50
hibernate.c3p0.idle_test_period=3600
在最后的变化中, 我删除了以下jar文件:

ejb3-persistance.jar
并添加了以下jar文件:

aspectjtools-1.5.4.jar
bval-core-0.3-incubating.jar
hibernate-validator-4.1.0.Final.jar
jackson-core-asl-1.6.4.jar
jackson-mapper-asl-1.6.4.jar
joda-time-1.6.2.jar
joda-time-jsptags-1.0.2.jar
jstl-1.2.jar
validation-api-1.0.0.GA.jar
有人能告诉我如何防止Hibernate的信息和调试语句被添加到catalina.out文件中吗?非常感谢

更新: 根据我在web上找到的内容,我将log4j.properties文件更新为以下内容: log4j.rootLogger=INFO,stdout,R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%5p] %d{yyyy-MM-dd HH:mm:ss} (%F:%M:%L) - %m%n
#log4j.appender.stdout.layout.ConversionPattern=[%5p] %t %d{yyyy-MM-dd HH:mm:ss} (%F:%M:%L) - %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=${catalina.home}/logs/SmartCloudLearningMobi.log
log4j.appender.R.MaxFileSize=10MB 
log4j.appender.R.MaxBackupIndex=10 
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=[%5p] %d{yyyy-MM-dd HH:mm:ss} (%F:%M:%L) - %m%n
#log4j.appender.R.layout.ConversionPattern=[%5p] %t %d{yyyy-MM-dd HH:mm:ss} (%F:%M:%L) - %m%n

log4j.logger.org.hibernate=ERROR, stdout, R

### log HQL parse trees  
log4j.logger.org.hibernate.hql=ERROR, stdout, R

### Log HQL and SQL ASTs during query parsing ###  
log4j.logger.org.hibernate.hql.ast.AST=ERROR, stdout, R
log4j.additivity.org.hibernate.hql.ast.AST=false

### log just the SQL  
log4j.logger.org.hibernate.SQL=ERROR, stdout, R
log4j.additivity.org.hibernate.SQL=false

### log JDBC bind parameters. Very userfull, when debug parameterized queries ###  
log4j.logger.org.hibernate.type=ERROR, stdout, R
log4j.additivity.org.hibernate.type=false

### log schema export/update ###
log4j.logger.org.hibernate.tool.hbm2ddl=ERROR, stdout, R

### log cache activity ###
log4j.logger.org.hibernate.cache=ERROR, stdout, R

### log transaction activity  
log4j.logger.org.hibernate.transaction=ERROR, stdout, R

### Log all JDBC resource acquisition  
log4j.logger.org.hibernate.jdbc=ERROR, stdout, R

### enable the following line if you want to track down connection ###  
### leakages when using DriverManagerConnectionProvider ###  
log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=ERROR, stdout, R

log4j.logger.org.hibernate.cfg=ERROR, stdout, R


log4j.logger.org.springframework=ERROR, stdout, R
log4j.logger.org.springframework.test.context.junit4.SpringJUnit4ClassRunner=ERROR, stdout, R

但这没什么区别!我仍然在catalina.out文件中看到相同的日志语句!我如何解决这个问题?有人吗?

最有可能发生的是,不是Log4j在做日志记录。很可能是Tomcat的JULI logger。你应该看看


并确保log4j设置正确(即使用它而不是默认的日志系统)

我也遇到了同样的问题,这就是我如何通过以下步骤修复的:

  • 导航到
    tomcat
    director中的
    conf
    文件夹(按照我设置tomcat的方式,位置是
    /usr/local/tomcat/conf
    。这可能会因tomcat的安装方式而异)
  • 编辑
    logging.properties
    文件(需要root访问:
    vim sudo logging.properties
    或使用
    sudo su-
    以root身份登录,然后执行
    vim logging.properties
  • 更改
    .handlers=1catalina.org.apache.juli.AsyncFileHandler,java.util.logging.ConsoleHandler


    .handlers=1catalina.org.apache.juli.AsyncFileHandler
  • 保存并重新启动tomcat(
    /usr/local/tomcat/bin/shutdown.sh
    ,然后
    /usr/local/tomcat/bin/startup.sh
  • 我还注意到我的tomcat日志文件夹(
    /usr/local/tomcat/logs
    )相当大。要检查日志文件夹的大小,请执行以下操作
    du-hs/usr/local/tomcat/logs/
    。为了解决这个问题,我设置了一个cron,它可以每晚清理文件,或者您可以手动运行这些命令。下面是一个shell脚本,它将删除5天以前的文件

    #!/bin/sh
    find /usr/local/tomcat/logs -name 'catalina.*.log' -mtime +5 -print0 | xargs -0 rm -f
    find /usr/local/tomcat/logs -name 'localhost_access_log.*.txt' -mtime +5 -print0 | xargs -0 rm -f
    

    亚当,谢谢你的建议。随着我对日志记录做了更多的阅读,似乎我需要为我添加到应用程序中的新jar文件添加日志记录语句,就像我在log4j.properties中有“log4j.logger.org.hibernate=ERROR,stdout,R”一样,将org.hibernate的日志记录级别限制为ERROR。它看起来像是一个值得探索的好角度吗?如果你要编写新代码考虑把SLF4J当成记录器。我已经让Slf4j使用一些最困难的平台(websphere),因此它应该可以与Tomcat5.5一起使用。你应该考虑的另一个选项是升级到Tomcat 6,因为它非常稳定,并且做得更好。现在我将研究JULI log4j.logger.org.hibernate.cfg=ERROR,stdout,R log4j.logger.org.hibernate.hql.ast=ERROR,stdout,R log4j.logger.o.h.cfg.annotations=ERROR,stdout,R log4j.o.h.hql.antlr=ERROR,stdout,R log4j.logger.o.hibernate.hql.ast.tree=ERROR,stdout,R我在这里面临的问题与此类似,但只发生在CentOS 7.6上。相同的tomcat包在CentOS 6上运行良好,其中catalina.out文件不显示http日志。你知道CentOS 7.6有什么问题吗?