spring中log4j的配置问题

wzlnew 2008-04-18 10:35:17
我的这个项目已经结束了(spring+webwork),但是以前可能太忙,前天早上的时

候我和往常一样打开tomcat发现项目中的log4j 的配置发现
log4j:WARN No appenders could be found for logger

(org.apache.commons.digester.Digester.sax).
log4j:WARN Please initialize the log4j system properly.

这个警告一直都有,我没有在意,没有在意的原因是项目可以启动并正常运行,

并且日志的信息也能正常的输入到指定的文件,这两天我没有什么事,所以我就

开始解决这个警告,在网上看了很多文章,说是什么classpath下没有

log4j.properties 配置啊,还有web-inf下的classes下没有log4j.properties

等等。然后我开始动手自己写一个最简单的一个web应用,主要是解决这个log4j

的问题,两天的时间一无所获(我从事j 2ee开发不到一年,经验太肤浅了),

问题还是依旧,无奈公司太小,两天的时间也没有解决问题,我用的是webwork

没有用spring,出现的问题是一样的 web.xml 如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>JspSupportServlet</servlet-name>
<servlet-class>
com.opensymphony.webwork.views.JspSupportServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<filter>
<filter-name>webwork</filter-name>
<filter-class>
com.opensymphony.webwork.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>webwork</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>

</web-app>
log4j.properties 如下

log4j.logger.com.test=DEBUG,stdout,A1

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n


log4j.appender.A1=org.apache.log4j.RollingFileAppender
log4j.appender.A1.File=c:/test.log
log4j.appender.A1.MaxFileSize=1MB
log4j.appender.A1.MaxBackupIndex=5
log4j.appender.A1.Append=true
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{ISO8601} - [%p] [%C{1}] - %m%n

相关的action如下:
package com.test;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.opensymphony.xwork.ActionSupport;


public class LoginAction extends ActionSupport {
private Log log= LogFactory.getLog(getClass());
public String login(){
log.debug("ok-----------------");
return SUCCESS;
}

}
action-servlet.xml 如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">

<beans default-lazy-init="true">
<bean id="loginAction" class="com.test.LoginAction" singleton="false">
</bean>
</beans>
xwork.xml 如下:
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.1//EN"
"http://www.opensymphony.com/xwork/xwork-1.1.dtd">
<xwork>
<include file="webwork-default.xml"/>
<package name="default" extends="webwork-default">
<action name="login" class="com.test.LoginAction" method="login">
<result name="success">/aa.jsp</result>
</action>
</package>

</xwork>

index.jsp如下
<html>
<head>

</head>
<body>

<form action ="login.action" method="post">
<a href="login.action">adf</a>
<input type="text" name="name" id="name">
<input type="submit" name="submit" value="submit"/>

</form>
</body>
</html>
aa.jsp 如下: ok
只是为了解决log4j的问题所以我写的简单,运行的结果和以前的项目是一样的 我今天又运行了一遍在tomcat中的结果如下:
2008-4-18 10:31:04 org.apache.coyote.http11.Http11AprProtocol init
信息: Initializing Coyote HTTP/1.1 on http-8080
2008-4-18 10:31:04 org.apache.coyote.ajp.AjpAprProtocol init
信息: Initializing Coyote AJP/1.3 on ajp-8009
2008-4-18 10:31:04 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 1063 ms
2008-4-18 10:31:05 org.apache.catalina.core.StandardService start
信息: Starting service Catalina
2008-4-18 10:31:05 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/5.5.23
2008-4-18 10:31:05 org.apache.catalina.core.StandardHost start
信息: XML validation disabled
2008-4-18 10:31:06 org.apache.catalina.core.ApplicationContext log
信息: org.apache.webapp.balancer.BalancerFilter: init(): ruleChain: [org.apache.webapp.balancer.RuleChain: [org.apache.webapp.balancer.rules.URLStringMatchRule: Target string: News / Redirect URL: http://www.cnn.com], [org.apache.webapp.balancer.rules.RequestParameterRule: Target param name: paramName / Target param value: paramValue / Redirect URL: http://www.yahoo.com], [org.apache.webapp.balancer.rules.AcceptEverythingRule: Redirect URL: http://jakarta.apache.org]]
2008-4-18 10:31:06 org.apache.catalina.core.ApplicationContext log
信息: ContextListener: contextInitialized()
2008-4-18 10:31:06 org.apache.catalina.core.ApplicationContext log
信息: SessionListener: contextInitialized()
2008-4-18 10:31:06 org.apache.catalina.core.ApplicationContext log
信息: ContextListener: contextInitialized()
2008-4-18 10:31:06 org.apache.catalina.core.ApplicationContext log
信息: SessionListener: contextInitialized()
2008-4-18 10:31:07 org.apache.catalina.loader.WebappClassLoader validateJarFile
信息: validateJarFile(E:\tomcat\apache-tomcat-5.5.23\webapps\log4jtest\WEB-INF\lib\jsp-api-2.0.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/jsp/JspPage.class
2008-4-18 10:31:07 org.apache.catalina.loader.WebappClassLoader validateJarFile
信息: validateJarFile(E:\tomcat\apache-tomcat-5.5.23\webapps\log4jtest\WEB-INF\lib\servlet-api-2.4.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester.sax).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester.sax).
log4j:WARN Please initialize the log4j system properly.
2008-4-18 10:31:08 org.apache.catalina.loader.WebappClassLoader validateJarFile
信息: validateJarFile(E:\tomcat\apache-tomcat-5.5.23\webapps\userPV\WEB-INF\lib\jsp-api-2.0.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/jsp/JspPage.class
2008-4-18 10:31:08 org.apache.catalina.loader.WebappClassLoader validateJarFile
信息: validateJarFile(E:\tomcat\apache-tomcat-5.5.23\webapps\userPV\WEB-INF\lib\servlet-api-2.4.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester.sax).
log4j:WARN Please initialize the log4j system properly.
2008-4-18 10:31:09 org.apache.coyote.http11.Http11AprProtocol start
信息: Starting Coyote HTTP/1.1 on http-8080
2008-4-18 10:31:09 org.apache.coyote.ajp.AjpAprProtocol start
信息: Starting Coyote AJP/1.3 on ajp-8009
2008-4-18 10:31:09 org.apache.catalina.storeconfig.StoreLoader load
信息: Find registry server-registry.xml at classpath resource
2008-4-18 10:31:09 org.apache.catalina.startup.Catalina start
信息: Server startup in 4828 ms
10:34:49,640 DEBUG LoginAction:11 - ok-----------------

可以看到日志输出的信息, 在c盘下的test.log中的信息如下:
2008-04-18 10:34:49,640 - [DEBUG] [LoginAction] - ok-----------------
我也知道我的logger配置的有问题,可我就是不知道那里出问题了

现在贴出来,希望高手指教一下我哪里错了。




...全文
2331 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
香蕉苹果 2009-04-15
  • 打赏
  • 举报
回复
把log4j.properties直接放在src目录下。可解决这个错误。
  • 打赏
  • 举报
回复
log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester.sax).

我也受这个困扰,但是系统都能正常运行,郁闷。。。
wzlnew 2008-04-21
  • 打赏
  • 举报
回复
谢谢tiannet ,不过这样也不行,在加入任何一句话后,警告信息是先出的
南南北北 2008-04-21
  • 打赏
  • 举报
回复
jar包导进去了吗?
tujiyue 2008-04-21
  • 打赏
  • 举报
回复
从spring下载的包中找个配置了log4j.properties的示例,把它复制过来,修改一下不就可以用了嘛?这样的文件没必要自己去写的
yjingoxl 2008-04-21
  • 打赏
  • 举报
回复
把log4j.rootLogger配置一下试试
tiannet 2008-04-19
  • 打赏
  • 举报
回复
log4j:WARN No appenders could be found for logger

(org.apache.commons.digester.Digester.sax).
log4j:WARN Please initialize the log4j system properly.
============================
为org.apache.commons包指定一个appender试试,
如加上一句:
log4j.logger.org.apache.commons=debug,A1

或者指定到更具体的包(即给出警告的包)
wzlnew 2008-04-18
  • 打赏
  • 举报
回复
呵呵,谢谢你们的回复,不过即使按照上面的方法来做,还是不行,我能看到日志输出的内容(c:/test.log ),是不是说明我的classpath的路径是没有问题呢?
我把内容贴出来,这个可以自己建个工程,然后直接加进去就可以看到了,当然还要把包带上就可以了
我还有个想法:就是这个问题是webwork本身的bug,因为从上面的信息可以看出是rootlogger的问题,可是我学j2ee不久,试了2天没有试出来,还希望大家帮帮我,谢谢了
lisl2003 2008-04-18
  • 打赏
  • 举报
回复
等强人……
hynet 2008-04-18
  • 打赏
  • 举报
回复
在 web.xml 里面配置 log4j

<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.properties</param-value>
</context-param>

67,516

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧