2017-11-02 11 views
0

myLoggerとして静的なjava.util.logging.Logger変数があります。 現在のところ、コンソールにのみ出力するので、FileHandlerを追加する必要があります。 プロジェクトはプロファイルベースなので、コンパイル時に指定されたプロファイルに応じて、適切なapplication- {profile} .propertiesファイルがロードされます。このファイルには、各プロファイルのログファイルの場所が異なります。設定可能なFileHandlerをj​​ava.util.logging.Loggerに追加

FileHandlerをapplication.propertiesの値でインスタンス化するにはどうすればよいですか?

コードスニペット:静的ブロックの初期化とのFileHandlerを追加したとき

private static String logFileName; 
@Value("${loggingSftp.logFileName}") 
public void setLogFileName(String logFileName) { 
    SftpConfiguration.logFileName = logFileName; 
} 

private static final Logger LOGGER = Logger.getLogger(SftpConfiguration.class.getPackage().getName()); 

private static FileHandler fileHandler; 

static { 
    try { 
     LOGGER.info("log file name: " + logFileName); 
     fileHandler = new FileHandler(LoggingFileHandler.getLogFileName() 
       + LocalDate.now().format(DateTimeFormatter.ofPattern("yyMMdd"))); 
     LOGGER.addHandler(fileHandler); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

を今、LOGFILENAMEは 'NULL' です。

答えて

0

何が起こっているかは、プロパティがロードされる前にスタティックブロックが実行されることです。

あなたのinjected values are presentのすべてが含まれるように、静的ブロックを@PostConstructメソッドに移動する必要があります。次に、あなたの検索をproperty values from within that @PostConstruct method.

+0

ありがとう@jmehrens、これは期待どおりに動作します。 – Nets

関連する問題