log4j 1.2.14
アクセスログ等をファイルに残す場合、
・ファイルのサイズが大きい
・ファイルの数が多くなる
などの対策として、zipでアーカイブするような対応を行う。
その際に、ログが出力されるファイルのパス(FileAppenderの出力先のパス)を取得する。
public class Log4jTest { public static void main(String[] args) { new Log4jTest().testLogger(); } public void testLogger() { try { Log4JLogger log4JLogger = (Log4JLogger) LogFactory.getLog("testLogger"); Enumeration<?> e = log4JLogger.getLogger().getAllAppenders(); while (e.hasMoreElements()) { Appender appeder = (Appender) e.nextElement(); boolean isFile = (appeder instanceof FileAppender); System.out.println(appeder + "\t" + isFile); if (isFile == true) { FileAppender fileAppender = (FileAppender) appeder; // FileAppenderの出力先のパス System.out.println(appeder + "\t" + fileAppender.getFile()); } } } catch (Exception e) { e.printStackTrace(); } } }
RollingFileAppenderあるいはDailyRollingFileAppenderにおいて、キレイに世代管理とアーカイブをしようと思えば、拡張(継承)してカスタマイズすべき???