2017-02-04 135 views
0

我正在嘗試使用log4j來實現一些日誌記錄2.控制檯輸出是可以的,但是當我嘗試將一些日誌寫入文件時,我無法管理它。Log4J 2沒有寫入文件

pom.xml

<dependencies> 
     <dependency> 
      <groupId>org.apache.logging.log4j</groupId> 
      <artifactId>log4j-api</artifactId> 
      <version>2.8</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.logging.log4j</groupId> 
      <artifactId>log4j-core</artifactId> 
      <version>2.8</version> 
     </dependency> 
    </dependencies> 

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration monitorInterval="60"> 
    <Properties> 
     <Property name="log-path">logs</Property> 
     <Property name="archive">${log-path}/archive</Property> 
    </Properties> 
    <Appenders> 
     <Console name="Console-Appender" target="SYSTEM_OUT"> 
      <PatternLayout> 
       <pattern> 
        [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n 
       </pattern>> 
      </PatternLayout> 
     </Console> 
     <File name="File" fileName="${log-path}/xmlfilelog.log" immediateFlush="true" > 
      <PatternLayout> 
       <pattern> 
        [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n 
       </pattern> 
      </PatternLayout> 
     </File> 
    </Appenders> 
    <Loggers> 
     <Logger name="les.dam" level="trace"> 
      <AppenderRef ref="File" level="trace"/> 
     </Logger> 
     <Root level="trace"> 
      <AppenderRef ref="Console-Appender"/> 
     </Root> 
    </Loggers> 
</Configuration> 

我使用log4j的方式如下:

private static Logger logger = LogManager.getLogger(); 
logger.debug("This is a debug message"); 
logger.info("This is an info message"); 
logger.warn("This is a warn message"); 
logger.error("This is an error message"); 
logger.fatal("This is a fatal message"); 

,我使用記錄器正在les.dam包中的類。

xml配置位於src/main/resources下。

日誌文件夾與源文件夾處於同一級別。

回答

0

你的配置看起來不錯。一個可能的原因是找不到配置文件和默認配置(只有控制檯發生錯誤)。

要驗證,請將您的配置更改爲以<Configuration status="trace" monitorInterval="60">開頭。這將打印內部log4j2調試日誌到控制檯。

您的log4j2.xml配置文件位於src/main/resources? - 更新:感謝您的更新,所以這是一個好的,那很好。


你可以嘗試先用絕對路徑配置文件appender嗎?

您可以顯示正在進行日誌記錄的類的完整軟件包名稱嗎?

+0

是的,配置在src/main/resources中。我嘗試調試跟蹤並給你反饋。 –

+0

你可以嘗試先用絕對路徑配置文件appender嗎?還請顯示正在記錄的班級的包名。 –

0

您必須檢查log4j2是否使用您提供的log4j2.xml,而不是默認配置。

  1. 更改log4j2.xml。

配置狀態= 「跟蹤」 則monitorinterval = 「60」

然後檢查控制檯輸出。

  1. 更改Console-Appender的PatternLayout。

%d {YYYY-MM-DD HH:MM:SS.SSS} [%-5level] [%T]%C {1} - %MSG%N

然後檢查控制檯輸出。

如果log4j使用log4j2.xml,請檢查FileAppender配置 https://logging.apache.org/log4j/2.x/manual/appenders.html#FileAppender。如果log4j不使用log4j2.xml,https://logging.apache.org/log4j/2.x/manual/configuration.html。 -Dlog4j.configurationFile = src/main/resources/log4j2。xml