为什么log4j.xml无法读取自己的属性标记的值

时间:2014-01-15 15:16:31

标签: java logging log4j log4net log4j2

为什么log4j.xml无法读取标记值?

iam低于例外:

log4j:ERROR setFile(null,false) call failed.
java.io.FileNotFoundException: \debug.log (Access is denied)

的log4j.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true"
    xmlns:log4j='http://jakarta.apache.org/log4j/'>

    <Properties>
        <Property name="logging.folder">D:/logs</Property>
    </Properties>


    <appender name="fileAppender" class="org.apache.log4j.RollingFileAppender">
        <param name="append" value="false" />
        <param name="file" value="${logging.folder}/debug.log" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n" />
        </layout>
    </appender>

    <root>
        <level value="INFO" />
        <appender-ref ref="consoleAppender" />
        <appender-ref ref="fileAppender" />
    </root>

</log4j:configuration>
请告诉我出了什么问题?

修改 我很确定问题不是关于权限,因为当我直接使用<param name="file" value="D:/logs/debug.log" />时它对我来说工作正常..现在请告诉我它可能是什么实际问题?使用${somepropertyname}

时,为什么log4j.cml无法读取属性值

2 个答案:

答案 0 :(得分:0)

如果你正在使用某种类型的Linux,那么chmod你的文件是可访问的(&#34; chmod 777 debug.log&#34;例如)。 如果您使用的是Windows,请检查是否可以写入debug.log。 (可悲的是我不知道Mac,但你得到了要点)

答案 1 :(得分:0)

log4j-1.2不支持Properties元素(至少它不在log4j.dtd中)。 但是,Properties元素 supported in log4j-2.0 configuration。是不是有可能让这两个人混淆了?