2016-05-30 185 views
1

私はlog4j1からlog4j2に移行していますが、多くの人が言っているように、getメソッドのgetAllAppendersはもう存在しません。log4j1からlog4j2への移行

私は交換するコードを2枚持っていますが、私はそれを行うにはかなりWAを見つけられませんでした:秒1である

try { 
     // termination 
     @SuppressWarnings("unchecked") 
     Enumeration<Appender> appenders = Logger.getRootLogger().getAllAppenders(); 
     if(appenders != null) { 
      while (appenders.hasMoreElements()) { 
       Appender appender = appenders.nextElement(); 
       if (appender instanceof AsyncAppender) { 
        appender.close(); 
       } 
      } 
     } 
    } catch(Exception e) { 
     //forget exception 
    } 

Logger rootLogger = Logger.getRootLogger(); 
    FileAppender fileAppender = (FileAppender) ((AsyncAppender) rootLogger.getAppender("ASYNC")).getAppender("file"); 
    mailService.sendAlertForFXTraderSupport(env, user, new File(fileAppender.getFile()),executionFolder); 

私log4j2:

<?xml version="1.0" encoding="UTF-8"?> 

<Appenders> 
    <Console name="stdout" target="SYSTEM_OUT"> 
     <PatternLayout pattern="%-d{yyyy MMM dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n" /> 
    </Console> 

    <RollingFile name="file" 
     fileName="C:/temp/tetrafx-gui-dev-${tetrafx.location}.log" 
     filePattern="C:/temp/$${date:yyyy-MM-dd}/tetrafx-gui-dev-%d{yyyy-MM-dd}-%i.log.gz"> 
     <PatternLayout pattern="%-d{yyyy MMM dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n" /> 
     <Policies> 
      <TimeBasedTriggeringPolicy interval="1" /> 
     </Policies> 
    </RollingFile> 

    <Async name="ASYNC" bufferSize="1000"> 
     <AppenderRef ref="stdout" /> 
     <AppenderRef ref="file" /> 
    </Async> 
</Appenders> 
<Loggers> 
    <Root level="all"> 
     <AppenderRef ref="ASYNC" /> 
    </Root> 
</Loggers> 

お勧めはありますか?

がアペンダを閉じ、あなた

答えて

1

に最初のものをありがとう、あなたのアプリケーションは、Log4jの2は、すべての必要なクリーンアップの面倒をシャットダウンフックを持っているLog4jの2でもう行う必要があるものではありません。 2番目の質問について、あなたはファイルアペンダを入手することができますし、でファイル名を

LoggerContext context = (org.apache.logging.log4j.core.LoggerContext) LogManager.getContext(false); 
Configuration config = context.getConfiguration(); 
RollingFileAppender rfa = (RollingFileAppender) config.getAppender("file"); 
String fileName = rfa.getManager().getFileName(); 
関連する問題