启动项目log4j日志文件寻址错误

查看:90
本文介绍了启动项目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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆