2016-05-22 99 views
1

我有以下log4j2配置:log4j2沒有輸出文件?

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="WARN"> 
<Properties> 
    <Property name="LOG_DIR">${sys:web.root}/logs</Property> 
    <Property name="ARCHIVE">${LOG_DIR}/archive</Property> 
</Properties> 
<Appenders> 
    <Console name="console-log" target="SYSTEM_OUT"> 
     <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/> 
    </Console> 
    <RollingFile name="paypal-log" 
       fileName="${LOG_DIR}/paypal.log" 
       filePattern="${ARCHIVE}/paypal.log.%d{yyyy-MM-dd-hh-mm}.gz"> 
     <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/> 
     <Policies> 
      <TimeBasedTriggeringPolicy interval="5" modulate="true"/> 
     </Policies> 
    </RollingFile> 
</Appenders> 
<Loggers> 
    <Logger name="com.retailstore.paypal" level="info" additivity="false"> 
     <appender-ref ref="paypal-log" level="info"/> 
    </Logger> 
    <Root level="error" additivity="false"> 
     <AppenderRef ref="console-log"/> 
    </Root> 
</Loggers> 

在我的(Eclipse中)Web應用程序我有,我有一個類com.retailstore.paypal.paypalfunctions

private static final Logger logger = LogManager.getLogger(paypalfunctions.class.getName()); 
... 

logger.error("paypal error"); 

但Webcontent文件夾下沒有logs/paypal.log。它應該出現在哪裏?如果我刪除記錄器控制檯輸出似乎工作。

OUTPUT與TRACE:

2016年5月23日19:24:03231的HTTP-NIO-8080-EXEC-2 TRACE PatternProcessor.getNextTime返回2016/05/23-19:25:00.000,nextFileTime = 2016/05/23-19:24:00.000,prevFileTime = 2016/05/23-19:14:00.000,當前= 2016/05/23-19:24:03.230,頻率= EVERY_MINUTE 2016-05-23 19 :24:03,247 http-nio-8080-exec-2調用RollingFileManager執行同步FileRenameAction [$ {0}:24:03,247 http-nio-8080-exec-2 TRACE DefaultRolloverStrategy.purge()花費15.0毫秒 2016-05-23 19:24:03,254 sys:web.root} /logs/paypal.log to $ {sys:web.root} /logs/archive/paypal.log.2016-05-23-07-14,renameEmptyFiles = false] 2016-05-23 19:24:03,256 http-nio-8080-exec-2調試RollingFileManag呃執行異步GzCompressAction [$ {sys:web.root} /logs/archive/paypal.log.2016-05-23-07-14 to $ {sys:web.root} /logs/archive/paypal.log.2016 -05-23-07-14.gz,deleteSource = true]

回答

2

嘗試設置<Configuration status="trace">。 這將顯示log4j內部調試語句,讓您深入瞭解如何配置log4j。

這裏是你如何定義的情況下,系統屬性設置不正確的默認值:

<Properties> 
    <Property name="web.root">/path/to/web/root</Property> 
    <Property name="LOG_DIR">${sys:web.root}/logs</Property> 
    <Property name="ARCHIVE">${LOG_DIR}/archive</Property> 
</Properties> 

LOG_DIR現在看在系統屬性,但如果沒有找到,將回落到價值在配置中定義。

+0

謝謝,我會嘗試並回復 – user2908112

+0

還不知道它在哪裏? – user2908112

+0

我試過〜/日誌,但沒有出現在我的家庭目錄中。 – user2908112

0

什麼是web.root系統屬性設置爲?該文件應顯示在該目錄所指向的任何位置的日誌目錄下。如果未定義,Log4j將創建一個名爲$ {sys:web.root}的目錄,該文件將位於該目錄下的日誌目錄中。

正如Remko所建議的,啓用跟蹤會明確告訴您它創建的位置。

+0

在tomcat下對嗎? – user2908112

+0

我不確定你的意思。是的,只要你定義web.root系統屬性,這個技術就可以在tomcat下工作。在tomcat下,如果你想讓文件位於tomcat運行的地方,你也可以使用$ {sys:catalina.home}或$ {sys:catalina.base}。 – rgoers

+0

謝謝,不知道放置日誌的最佳位置 – user2908112