我无法使log4j.properties文件中的设置生效。我已经遵循了以下论坛讨论中的建议:
http://community.jboss.org/message/198690#198690
下面是我的log4j.properties文件(在EAR的根目录中):
#
# The root logger is set to INFO by default.
# This level can be changed programmatically at runtime.
#
log4j.rootLogger=INFO, stdout, file
# use the hibernate appender for audit logs.
log4j.logger.auditLogger.com.anfscd=INFO, hibernate, HBSS
# Console appender.
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-5p %d %c %x - %m %n
log4j.appender.stdout.Threshold=WARN
# Use this ConversionPattern to display thread.
#log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c %x - %m%n
# Daily rolling file appender.
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.File=c:/anfscd/log/anfscd-server.log
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.layout.ConversionPattern=%-5p %d %c %x - %m %n
# Use this ConversionPattern to display thread.
#log4j.appender.file.layout.ConversionPattern=%d [%t] %-5p %c %x - %m%n
# Hibernate appender
log4j.appender.hibernate=com.anfscd.common.util.database.log.HibernateAppender
log4j.appender.hibernate.sessionServiceClass=com.anfscd.cmd.model.util.persistence.HibernateHelper
log4j.appender.hibernate.loggingEventClass=com.anfscd.cmd.model.audit.AuditLogRecord
# direct log messages to windows system logs #
log4j.appender.HBSS=org.apache.log4j.nt.NTEventLogAppender
log4j.appender.HBSS.Source=Project Name
log4j.appender.HBSS.layout=org.apache.log4j.PatternLayout
log4j.appender.HBSS.layout.ConversionPattern=%-5p %d %c %x - %m %n
# suppress org.hibernate messages
log4j.logger.org.hibernate=ERROR, stdout
下面是我的jboss-app.xml (在ear/META-INF中):
<?xml version="1.0" encoding="UTF-8"?>
<jboss-app>
<module-order>strict</module-order>
<loader-repository>
com.anfscd:loader=AnfscdLoader
<loader-repository-config>
java2ParentDelegation=false
</loader-repository-config>
</loader-repository>
</jboss-app>
我们使用Hibernate进行持久化,并且在输出控制台中非常冗长。我不想看到Hibernate控制台的输出,除非有错误。
顺便说一下,我使用的是log4j-1.2.15.jar。
发布于 2010-08-23 22:19:35
哇!说到追你的尾巴!
首先,底线是,在JBoss 5.x中运行的Log4J确实可以看到并处理EAR根目录中的log4j.properties文件。
..。但前提是没有其他东西干扰它。例如,如果要将log4j.xml与log4j.properties一起打包到EAR的根目录中,则Log4J缺省为.xml文件,而不是.properties文件。它从log4j.xml加载配置,甚至不需要费心去查找log4j.properties。
遗憾的是,那个特殊的场景不是我的问题。
说到底,我的问题是一个包含自己的log4j.properties文件的第三方JAR。与.xml文件一样,如果Log4J偶然发现了一个log4j.properties,它就不会费心去寻找另一个。不管出于什么原因,在JBoss 4.2.x中,Log4J采用了耳朵根部的log4j.properties,而不是JAR中的那个。相反,在JBoss 5.x中,Log4J采用JAR中的log4j.properties文件,而不是EAR根目录中的文件。
我已经从第三方JAR中删除了log4j.properties文件,一切都很顺利。
通过启用Log4J的调试模式,我偶然发现了问题的原因。仅供参考,您可以使用开关-Dlog4j.debug
启动JBoss,或者在jboss-log4j.xml的log4j:configuration
标记中设置debug="false"
。
发布于 2010-08-18 17:04:01
AFAIK是ear的根文件夹,没有添加到类路径中,并且是这样不可见的属性文件。
更好的位置应该放在普通jar文件的根目录中,或者主war文件的WEB-INF/classes中。
https://stackoverflow.com/questions/3514585
复制