我有一个非常烦人的问题,其中 log4j 拒绝在我的新项目中找到属性文件。我正在使用 Hibernate4,它出于某些不虔诚的原因使用 jboss-logging。通过制作资源源文件夹,我的 WEB-INF/classes 中有一个 log4j.properties。我可以在 classes 文件夹中看到 log4j.properties,所以我知道 RAD 正在获取文件作为源。如下所示:
log4j.rootLogger=WARN, stdout
log4j.gov.usdoj=INFO
#Direct log messages to the console
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %c{2}[%M:%L] %p %m%n
# Hibernate logging options(INFO only shows startup messages)
#org.hibernate Log everything. This is a lot of information but it is useful for troubleshooting
log4j.logger.org.hibernate=WARN
#org.hibernate.type Log all JDBC parameters
log4j.logger.org.hibernate.type=WARN
#org.hibernate.SQL Log all SQL DML statements as they are executed (like show_sql setting)
log4j.logger.org.hibernate.sql=WARN
#org.hibernate.tool.hbm2ddl Log all SQL DDL statements as they are executed
log4j.logger.org.hibernate.tool.hbm2ddl=WARN
#org.hibernate.pretty Log the state of all entities (max 20 entities) associated with the session at flush time
log4j.logger.org.hibernate.pretty=WARN
#org.hibernate.cache Log all second-level cache activity
log4j.logger.org.hibernate.cache=WARN
#org.hibernate.transaction Log transaction related activity
log4j.logger.org.hibernate.transaction=WARN
#org.hibernate.jdbc Log all JDBC resource acquisition
log4j.logger.org.hibernate.jdbc=WARN
#org.hibernate.hql.internal.ast.AST Log HQL and SQL ASTs during query parsing
log4j.logger.org.hibernate.hql.internal.ast.AST=WARN
#org.hibernate.secure Log all JAAS authorization requests
log4j.logger.org.hibernate.secure=WARN
但是我已经在其中放入了故意的错误(如 XML)并且它不会“爆炸”,所以我很确定 log4j 甚至没有找到它。启动时指向 (org.hibernate.type.BasicTypeRegistry) 时出现“无附加程序”错误。我在引导区域中有 hibernate-jpa,因为 RAD 有不同版本的它运行的同一个 jar,如果我们不将 hibernate-jpa 放在引导区域中,我们会检查 Orphan ManyToOne 错误。如果有人知道更好的解决方案,我想听听,因为我讨厌这样做。
但是手头的话题是,由于某种原因,在这个项目上我无法让 log4j 找到那个 log4j.properties 文件。我有点怀疑我是休眠的类加载器问题的受害者,但 log4j.jar 在我的 WEB-INF/lib 中。