2013-11-25 153 views
0

我嘗試使用log4j爲我的簡單項目。log4j不創建日誌文件

所有輸出到控制檯都可以。但是通過創建日誌文件輸出到文件不起作用。

的log4j.xml

<!-- Appenders --> 
    <!-- Loggin into console --> 
    <appender name="console" class="org.apache.log4j.ConsoleAppender"> 
     <param name="Target" value="System.out" /> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%-5p: %c - %m%n" /> 
     </layout> 
    </appender> 

    <appender name="file" class="org.apache.log4j.RollingFileAppender"> 
     <param name="append" value="false" /> 
     <param name="file" value="demoApplication.log" /> 
     <param name="DatePattern" value="'.'yyyy-MM-dd" /> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d [%t] %-5p (%F:%L:%M) %c{1} - %m%n" /> 
     </layout> 
    </appender> 

    <!-- Root logger --> 
    <root> 
     <priority value="info" /> 
     <appender-ref ref="file" /> 
     <appender-ref ref="console" /> 
    </root> 

    <!-- Application Loggers --> 
    <logger name="com.softserve.edu"> 
     <level value="info" /> 
    </logger> 

</log4j:configuration> 

這裏是我的項目struckture:

enter image description here

爲什麼會出現這種情況?對我而言,所有人都應該可以工作。

有什麼建議嗎?

+0

嘗試刷新您的項目。另外,你是通過Eclipse來運行它嗎? –

+0

@SotiriosDelimanolis當然在日食之下。清爽不起作用。 –

回答

0

由於您使用的是相對路徑,

<param name="file" value="demoApplication.log" /> 

搜索在以下位置的文件:

System.out.println(System.getProperty("user.dir") + File.separator + 
        "demoApplication.log"); 

你也可以使用絕對路徑。此外,請驗證您是否擁有目標文件夾的寫入權限。

+0

它在Windows下都應該使用默認權限。 'user.dir'究竟意味着什麼?我爲了簡化而出去了,但是最好把記錄器放到'logs'文件夾中。 –

+0

通過'System.getProperty(「user.dir」)'你可以得到Java的工作目錄。請參見[系統屬性](http://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html)。 –