log4j怎么能成功解析log4j.xml中的变量?

时间:2016-04-02 09:34:30

标签: maven log4j jetty

在我的maven网络项目中,资源文件夹中有一个log4j.xml

    <appender name="App" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="File" value="${merchant.log.dir}/sys.log" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d - %c -%-4r [%t] %-5p %x - %m%n" />
    </layout>
   </appender>

并且在根目录中有一个application.properties

ls
application.properties  pom.xml  src  target
application.properties文件中的

具有此键值

merchant.log.dir=/foo/logs/merchant

和pom.xml

        <filters>
            <filter>application.properties</filter>
        </filters>
        <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
        </resources>

当我开始使用jetty项目时,它输出以下异常

java.io.FileNotFoundException: /foo/logs/merchant/sys.log (No such file or directory)

我很困惑log4j.xml成功解决${merchant.log.dir}的方式? log4j自己做这项工作吗?或者Jetty在第一次阅读pom.xml而不是用${merchant.log.dir}

替换/foo/logs/merchant

1 个答案:

答案 0 :(得分:0)

pom.xml

的下方评论之后

<!--         <filters> -->
<!--             <filter>application.properties</filter> -->
<!--         </filters> -->

然后启动项目,输出文件为/sys.log。因此,必须在jetty开始时将${merchant.log.dir}替换为merchant.log.dirapplication.properties的值。

BTW修改pom.xml后你必须明确执行maven --> Update Project,否则它不会生效。