2016-04-06 7 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

2つの(MyFile&Technical)ログファイルは両方とも存在しますか?これにより、エラーを絞り込むのに役立ちます。 – StaticBR

+0

はい、2つのファイルが存在します。遅い応答のため申し訳ありません – user6006748

答えて

2

あなたのconfig設定<Appenders><Loggers>が内にネストされなければならないことを、外側<Configuration>要素が欠落している。例えば、マニュアルを見てみましょう。

また、なぜLogManageからロガーを取得する前に、システムのプロパティを設定していませんr?

+0

私が提供したコードを詳しく見てみると、 ''要素があります – user6006748

+0

ああそうです。私の電話では、それは要素の後ろに隠れています。しかし、私は終了タグが表示されません... –

+0

そこに私はちょうどそれをコンパイルし、結果を生成するはずですそれ以外のそれを編集する必要がありますか? :)私は秒でそれを修正します。 – user6006748

関連する問題