2014-01-15 41 views
0

爲什麼log4j.xml無法讀取標記的值?爲什麼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" />然後對我來說它的做工精細..現在請告訴我,這可能是實際的問題呢?爲什麼log4j.cml在使用時無法讀取屬性值${somepropertyname}

+0

很清楚,'(訪問被拒絕)'。檢查文件的位置和權限。 –

+0

@SotiriosDelimanolis我在上面添加'編輯',請檢查。 – user3128668

+0

您是否在某處設置了$ {logging.folder}變量。它看起來像權限問題是,它試圖寫入名爲debug.log的文件在根目錄中,而不是/ logs中的文件 – Goibniu

回答

0

如果您正在使用某種Linux,那麼請將您的文件chmod設置爲可訪問(例如,「chmod 777 debug.log」)。 如果您正在使用Windows,請檢查debug.log是否可以寫入。 (可悲的是,我不知道Mac的,但你得到的要點)

+1

OS X是UNIX(具有修改MACH微內核的BSD),所以chmod也會在那裏工作。 – Goibniu

0

該log4j-1.2(至少它不是在log4j.dtd)不支持Properties元素。 但是,Properties元件supported in log4j-2.0 configuration。不知怎的,你有可能把這兩個混在一起嗎?