Java 如何在log4j2.12中的日志文件路径中创建缺少的目录

Java 如何在log4j2.12中的日志文件路径中创建缺少的目录,java,log4j2,Java,Log4j2,我正在我的应用程序中将log4j从1.2版升级到2.12版。我有一段代码需要编写,但我不知道如何编写 我读过关于随机访问文件appender和抽象appender的文章,但我不知道用哪一个来创建丢失的目录 /* * Created on Jan 10, 2006 * * To change the template for this generated file go to * Window>Preferences>Java>Code Gener

我正在我的应用程序中将log4j从1.2版升级到2.12版。我有一段代码需要编写,但我不知道如何编写

我读过关于随机访问文件appender和抽象appender的文章,但我不知道用哪一个来创建丢失的目录

/*
 * Created on Jan 10, 2006
 *
 * To change the template for this generated file go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
package com.sbc.swat.logging;

import java.io.Serializable;
import java.io.File;
import java.io.IOException;

//import org.apache.log4j.FileAppender;
//import org.apache.log4j.helpers.LogLog;

//import org.apache.logging.log4j.core.appender.FileAppender;
import org.apache.logging.log4j.core.appender.AbstractAppender;
import org.apache.logging.log4j.status.StatusLogger;

/**
 * @author js5396
 *
 * log4j Appender that extends FileAppender to create any
 * missing directories in the log file path.
 */
//public class MkDirFileAppender extends FileAppender
public class MkDirFileAppender extends AbstractAppender
{
    public synchronized void setFile(String fileName,
                                     boolean append,
                                     boolean bufferedIO,
                                     int bufferSize)
    throws IOException
    {
        //LogLog.debug("MkDirFileAppender fileName [" + fileName + "]");
        StatusLogger.getLogger().debug("MkDirFileAppender fileName ["+ fileName + "]");     
        File file = new File(fileName);     
        File parent = file.getAbsoluteFile().getCanonicalFile().getParentFile();
        /*LogLog.debug("MkDirFileAppender parent [" + parent + "] " +
                     "exist [" + (parent == null ? "null" : parent.exists() + "") + "]");*/
        StatusLogger.getLogger().debug("MkDirFileAppender parent ["+ parent + "] "+"exist ["+ (parent == null ? "null": parent.exists()+"")+ "]");      
        try
        {
            if (parent != null && !parent.exists())
                parent.mkdirs();
        }
        catch (Throwable e)
        {
            //LogLog.error("MkDirFileAppender could not create path for: " + fileName, e);
            StatusLogger.getLogger().error("MkDirFileAppender could not create path for: "+ fileName, e);           
            //Fall through, super.setFile will probably fail
        }

        super.setFile(fileName, append, bufferedIO, bufferSize);
    }

}

早些时候,该类扩展了FileAppender并调用了该类的setFile方法,但在log4j2中,FileAppender是最后一个类,我不确定扩展抽象appender是否正确。注释代码是我试图更改的旧代码