2017-11-30 34 views
0

[プロパティ]設定を使用してログインし、ファイルをlog4j2するタイムスタンプを追加するために作成する可能性があります:Log4j2:プログラムのファイル名にタイムスタンプを持つファイルアペンダを作成

appender.FILE.type = FILE 
appender.FILE.name = FILE 
appender.FILE.fileName = file-with-date-${date:yyyy-MM-dd}.log 
appender.FILE.layout.type = PatternLayout 
appender.FILE.layout.pattern =[%p] %m%n 

これはfile-with-date-2017-11-30.logにログファイルを生成します。プログラムの設定を使用して同じ動作を達成するにはどうすればよいですか?これはこれまで試みてきたことです:

PatternLayout layout = PatternLayout.newBuilder() 
      .withConfiguration(ctx.getConfiguration()) 
      .withPattern("%m%n").build(); 

FileAppender fileAppender = FileAppender.newBuilder() 
     .withLayout(layout) 
     .withFileName("file-with-date-${date:yyyy-MM-dd}.log") 
     .withName("pattern") 
     .build(); 

しかし、これは次のファイルを生成します:file-with-date-${date:yyyy-MM-dd}.log。したがって、プロパティの設定を使用する:プログラムで作成されたアペンダ${date:yyyy-MM-dd}.logを使用して、現在の日付のログファイルが作成され、無視されます。

答えて

0

明らかにStrSubstitutorはこの状況で役立ちます。

final LoggerContext ctx = (LoggerContext) LogManager.getContext(false); 
final Configuration config = ctx.getConfiguration(); 
String fileName = config. 
       getStrSubstitutor().replace("file-with-date-${date:yyyy-MM-dd}.log"); 

FileAppender fileAppender = FileAppender.newBuilder() 
     .withLayout(layout) 
     .withFileName(filename) 
     .withName("pattern") 
     .build(); 
関連する問題