??? 不同的服務器對于使用
log4j
是有些不同的,實際使用中主要是用
tomcat
和
jboss
兩類,對于
tomcat,
它本身是沒有配置
log4j
的,所以使用起來和常規(guī)的一樣;而在
jboss
中它是本身配置了
log4j
的,所以有時候在看項目代碼時,其整個項目并沒有
log4j
的配置文件,而在一些類中仍然定義了
Logger,
例如
static Logger log = org.apache.log4j.Logger.getLogger(UserDaoImple.class);
,這就表明開發(fā)者打算使用
jboss
默認的
log4j
的配置,我們可以在
jboss
下的對應的
log
目錄下的
server.log
中看到日志,
jboss
本身的
log4j
的配置是將
debug,info
級的日志寫在
server.log
中,而像
error
等級別比較高的日志打印到控制臺上,而寫到
server.log
中的日志比較多,并不方便查看。于是我們想到使用自己的
log4j
配置寫到某個具體的文件中(注意文件要先建立,才能忘里面寫東西,
log4j
自己不能建立文件),但這里因為
jboss
有它自己的
log4j
配置,所以如果我們配置的
log4j
包含
Console
的
Appender
時,就會出錯,錯誤類似于
ERROR: invalid console appender config detected, console stream is looping.
解決方法一是不用
Console
的
Appender,
或者改
jboss
的配置文件,在
jboss-service.xml
文件里
,
把
<mbean code="org.jboss.logging.Log4jService" name="jboss.system:type=Log4jService,service=Logging">
????????<attribute name="ConfigurationURL">resource:log4j.xml</attribute>
????????<attribute name="CatchSystemOut">false</attribute>
????????<attribute name="Log4jQuietMode">true</attribute>
</mbean>
。
我建議不用
Console
的
Appender
,當然這是對
jboss3.2.x
是這樣,對于
jboss4.0.x
如果我們要用自己的
log4j
配置照上述改還是會有問題,會有類似于
log4j:ERROR A "org.jboss.logging.util.OnlyOnceErrorHandler" object is not assignable to a "org.apache.log4j.spi.ErrorHandler" variable
的異常,解決方法是把
/server/default/jbossweb-tomcat55.sar/META-INF/jboss-service.xml
中的以下兩個熟悉改成
true
<attribute name="Java2ClassLoadingCompliance">true</attribute>
<attribute name="UseJBossWebLoader">true</attribute>
以上就是使用
jboss
服務器可能出現(xiàn)的問題,解決了這些再來使用
log4j
就比較簡單了。
posted on 2007-03-07 21:35
小虎(年輕) 閱讀(2493)
評論(0) 編輯 收藏 所屬分類:
STRUTS