Java 如何在log4j2.12中的日志文件路径中创建缺少的目录
我正在我的应用程序中将log4j从1.2版升级到2.12版。我有一段代码需要编写,但我不知道如何编写 我读过关于随机访问文件appender和抽象appender的文章,但我不知道用哪一个来创建丢失的目录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
/*
* 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是否正确。注释代码是我试图更改的旧代码