启动项目log4j日志文件寻址错误
本文介绍了启动项目log4j日志文件寻址错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
<appender name="BIZ_LOGGER" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="${webapp.root}/logs/biz/biz.log" />
<param name="Append" value="true" />
<param name="DatePattern" value="'.'yyyy-MM-dd-HH'.log'" />
<param name="MaxBackupIndex" value="10" />
<param name="MaxFileSize" value="4096" />
<param name="encoding" value="utf-8"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[date:%d{yyyy-MM-dd HH:mm:ss}] %m%n" />
</layout>
<filter class="com.test.bizlogger.LoggerFilter">
<param name="LevelMin" value="40050" />
<param name="LevelMax" value="40050" />
</filter>
</appender>
以上是我log4j的一个logger的配置
但是启动的时候会报找不到文件
java.io.FileNotFoundException: /logs/biz/biz.log (No such file or directory)
at java.io.FileOutputStream.openAppend(Native Method)
at java.io.FileOutputStream.(FileOutputStream.java:192)
at java.io.FileOutputStream.(FileOutputStream.java:116)
at org.apache.log4j.FileAppender.setFile(FileAppender.java:294)
at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:165)
at org.apache.log4j.DailyRollingFileAppender.activateOptions(DailyRollingFileAppender.java:223)
at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:307)
at org.apache.log4j.xml.DOMConfigurator.parseAppender(DOMConfigurator.java:295)
at org.apache.log4j.xml.DOMConfigurator.findAppenderByName(DOMConfigurator.java:176)
at org.apache.log4j.xml.DOMConfigurator.findAppenderByReference(DOMConfigurator.java:191)
at org.apache.log4j.xml.DOMConfigurator.parseChildrenOfLoggerElement(DOMConfigurator.java:523)
at org.apache.log4j.xml.DOMConfigurator.parseRoot(DOMConfigurator.java:492)
at org.apache.log4j.xml.DOMConfigurator.parse(DOMConfigurator.java:1001)
at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:867)
at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:773)
at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:483)
at org.apache.log4j.LogManager.(LogManager.java:127)
at org.apache.log4j.Logger.getLogger(Logger.java:117)
看起来好像${webapp.root}
这个值没有设置进去 项目是可以正常启动的,然后日志也是正常记录到了${webapp.root}/logs/biz/biz.log
这个文件,就是启动会报错,不知道是为什么,有碰到类似情况的朋友吗
解决方案
自己解决了,日志初始化顺序问题,ContextLoaderListener执行的时候会用到日志,调用日志接口的时候自动进行日志初始化了,这个时候${webapp.root}的值还没有设置。
这篇关于启动项目log4j日志文件寻址错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文