2010-08-18 23 views
2

我無法讓我的log4j.properties文件中的設置生效。我已經遵循下面的論壇討論中建議:JBoss 5.0.1:log4j.properties文件在EAR中不起作用

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(在[耳朵]/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。

回答

4

哇!談論追逐你的尾巴!

首先,底線是JBoss 5.x中運行的Log4J在EAR的根目錄中查看並處理log4j.properties文件。

......但只有在沒有別的事情可以干涉它的時候。例如,如果要將log4j.xml與log4j.properties一起打包到EAR的根目錄中,那麼Log4J默認使用.properties文件的.xml文件。它從log4j.xml加載配置,甚至不費心尋找log4j.properties。

唉,那個特定的場景不是我的問題。

當這一切都說完了,我的問題是第三方JAR包含自己的log4j.properties文件。和.xml文件一樣,如果Log4J在一個log4j.properties上絆倒,它不會去尋找另一個log4j.properties。那麼,無論出於何種原因,在JBoss 4.2.x中,Log4J將EAR根目錄中的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"來完成此操作。

0

AFAIK是未添加到類路徑中的耳朵的根文件夾,並且屬性文件是不可見的。

一個更好的地方應該放在一個普通的jar文件的根目錄下,或者放在主war文件的WEB-INF/classes中。

+0

我有一個jndi.properties在EAR的根,它正在處理。這就是我如此困惑。爲什麼一個屬性文件正在處理,另一個被忽略? – 2010-08-18 17:22:25

+0

我很抱歉:我現在和你一樣困惑...... FWIW我也花了很多時間試圖弄清楚log4j使用哪個配置文件......祝你好運! – 2010-08-18 18:10:16

+0

沒有汗水。感謝分享。 – 2010-08-19 20:06:48