2016-04-06 48 views
2

當我嘗試從log4j2獲取日誌時,我得到一個額外的空文件。文件名是「$(SYS」,它包含絕對沒有,但它創建的每個我在這裏運行我的程序時間,我的Java文件,其中我登錄:Android:使用log4j2創建日誌時獲取額外的空文件

public static void main(String[] args){ 

    Logger logger = LogManager.getLogger(); 

    final Calendar cal = Calendar.getInstance(); 
    cal.setTimeInMillis(System.currentTimeMillis()); 
    Date date = cal.getTime(); 
    int mHour = date.getHours(); 
    int mMinute = date.getMinutes(); 

    String filenameWE = String.valueOf(mHour) + "_" + String.valueOf(mMinute)+"_WarErr"; 
    String filenameFull = String.valueOf(mHour) + "_" + String.valueOf(mMinute)+"_Full_Log"; 

    System.setProperty("WarErrFilename", filenameWE); 
    System.setProperty("FullLogFilename", filenameFull); 

    LoggerContext ctx = (LoggerContext) LogManager.getContext(false); 
    ctx.reconfigure(); 

    logger.debug("Hello world - debug log"); 
    logger.debug("Hello world - debug log"); 
    logger.debug("Hello world - debug log"); 
    logger.info("Hello world - info log"); 
    logger.info("Hello world - info log"); 
    logger.info("Hello world - info log"); 

    logger.warn("Hello world - warn log");   
    logger.warn("I farted!"); 
    logger.error("Hello world - error log"); 
    logger.error("Error please insert brain!"); 
    logger.error("Error cant poop!"); 
} 

而且我log4j2.xml

<?xml version="1.0" encoding="UTF-8"?><Configuration status="INFO"> 
<Appenders> 
    <Console name="Console" target="SYSTEM_OUT"> 
     <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> 
    </Console> 

    <File name="MyFile" fileName="logs/${date:yyyy}/${date:MM}/${date:dd}/${sys:WarErrFilename}.log" immediateFlush="false" append="false"> 
     <PatternLayout pattern="%d %p %c{1.} [%t] %m%n" /> 
     <Filters> 
      <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="NEUTRAL" /> 
      <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="NEUTRAL" /> 
      <ThresholdFilter level="info" onMatch="DENY" onMismatch="DENY" /> 
     </Filters> 
    </File> 
    <File name="Technical" 
      fileName="logs/${date:yyyy}/${date:MM}/${date:dd}/${sys:FullLogFilename}.log"> 
     <PatternLayout pattern="%d %p %c{1.} [%t] %m%n" /> 
    </File> 
</Appenders> 

<Loggers> 
    <Root level="debug"> 
     <AppenderRef ref="Console" /> 
     <AppenderRef ref="MyFile"/> 
     <AppenderRef ref="Technical"/> 
    </Root> 
</Loggers> 
</Configuration> 
+0

兩個(MyFile&Technical)日誌文件都存在嗎?這將有助於縮小您的錯誤。 – StaticBR

+0

是的,這兩個文件確實存在。對於延遲響應 – user6006748

回答

2

你的配置缺少外<Configuration>元素,你<Appenders><Loggers>必須嵌套在。看看手冊中的一個例子。

還有,爲什麼從LogManage得到記錄器之前未設置系統屬性R'

+0

抱歉,如果仔細查看我提供的代碼,那麼''元素有 – user6006748

+0

哦,我明白了。在我的手機上,它隱藏在元素後面。但我沒有看到一個結束標記... –

+0

它那裏我只需要編輯它否則它不會編譯併產生任何結果現在呢? :)我會在幾秒鐘內修復它。 – user6006748