问题描述:
前一段时间电脑第一次导入Maven项目,又是pom文件错,改好后又是运行Tomcat报Log4j错误,一直倒腾了近一个月程序才成功跑起来,太不容易。
也上网查了很长时间,没一个方法能解决我的问题的。特记下解决方法,希望能帮到像我这样的web刚入门者。
(刚入门,肯定有说的不对的地方,有错也希望能指出来,我改正)
前期操作:导入项目后clean,install,update,中会报错(因为我已经解决了,所以没有×)。
两问题对应解决方法:
1.pom文件第一行大红叉,说明是项目的文件指向不正确,看中error的Path,比如../webapp/..的错不用看,这些都是框架中的错,而框架不会错的,所以不用管,除去这些错,看项目本身的错误的地址,并找到这些有错误的文件,将其删掉(不用担心,这些在后期更新时会自动生成,而这些自动生成的就是正确的),除去框架的错的文件全部删完后,再update,再删除,多重复几次上述步骤,pom就不会报错了,成功解决~!
2.启动tomcat,跑不起来,总是有这个
然后卡住,翻译一下就是log4j没有初始化的意思,上网查错误信息,说是没有log4j配置文件,(前提:有log4j包,若没有log4j包,也有可能是缺包的原因,上网下载并添加即可),因此需要在类似如下目录下conf中新建文件,名为log4j.properties
并在其中添加内容
log4j.rootLogger=DEBUG , stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss} [%c]-[%p] %m%n
log4j.appender.stdout.Target = System.out
### Output to the log file ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = ${scores.root}/WEB-INF/logs/error.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = ERROR
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
log4j.appender.ServerDailyRollingFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.ServerDailyRollingFile.DatePattern='.'yyyy-MM-dd
log4j.appender.ServerDailyRollingFile.File=${scores.root}/WEB-INF/logs/error.log
log4j.appender.ServerDailyRollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.ServerDailyRollingFile.layout.ConversionPattern= %-d{yyyy-MM-dd HH\:mm\:ss} [ %t\:%r ] - [ %p ] %m%n
log4j.appender.ServerDailyRollingFile.Append=true
log4j.logger.com.ibatis=debug
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug
log4j.logger.org.mybatis=DEBUG
log4j.logger.java.sql.Connection=debug
log4j.logger.java.sql.Statement=debug
log4j.logger.java.sql.PreparedStatement=debug,stdout
com.ng.mapper=DEBUG
创建完成后,在类似如下目录中找到web.xml
查找是否有以下语句
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:conf/log4j.properties</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>60000</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.util.Log4jConfigListener
</listener-class>
</listener>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
如果有的话,首先查看语句是否完整,监听与声明顺序不能反,不然会报错;其次,查看代码其中的地址有没有错,地址一定是刚才添加log4j.properties配置文件的地址,否则会报Not Found log4j.properties的错误。
如果没有这些代码,就把上述代码加到web.xml中,保存,update,启动tomcat,终于运行成功!!