S_a_k_Uの日記みたいなDB

~サクゥーと呼ばないで~

log4jでログが出力されるファイルのパスを取得する

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において、キレイに世代管理とアーカイブをしようと思えば、拡張(継承)してカスタマイズすべき???