不同的服务器对于使用
log4j
是有些不同的,实际使用中主要是用
tomcat
和
jboss
两类,对于
tomcat,
它本身是没有配置
log4j
的,所以使用起来和常规的一样;而在
jboss
中它是本身配置了
log4j
的,所以有时候在看项目代码时,其整个项目并没有
log4j
的配置文件,而在一些类中仍然定义了
Logger,
例如
static Logger log = org.apache.log4j.Logger.getLogger(UserDaoImple.class);
,这就表明开发者打算使用
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
服务器可能出现的问题,解决了这些再来使用
log4j
就比较简单了。
posted on 2007-03-07 21:35
小虎(年轻) 阅读(2485)
评论(0) 编辑 收藏 所属分类:
STRUTS