java - 如果日志文件不存在,则阻止 log4j2 创建该日志文件的父文件夹

标签 java log4j2

正如问题标题所述,如果 log4j2 File Appender 日志文件不存在,是否可以避免创建它们的父文件夹? 实际上,当我传递文件附加器日志的不存在的父文件夹时,log4j2 将自动创建它。 我已经尝试查看 File 标记上是否有属性,但什么也没有。

https://logging.apache.org/log4j/2.x/manual/appenders.html

<Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout
                pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
        </Console>
        <File name="File" fileName="${sys:app.home}/app.log"
            ignoreExceptions="false">
            <PatternLayout
                pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
        </File>
</Appenders>

最佳答案

没有这样的选项。这是 FileAppender 的源代码,您可以在其中看到父文件夹的创建。如果您想避免创建文件夹,那么您可以创建自己的 FileAppender 继承者并重写 setFile 方法。

public synchronized void setFile(String fileName, boolean append, boolean bufferedIO, int bufferSize)
                                                        throws IOException {
....
FileOutputStream ostream = null;
try {
      ostream = new FileOutputStream(fileName, append);
} catch(FileNotFoundException ex) {
   String parentName = new File(fileName).getParent();
      if (parentName != null) {
         File parentDir = new File(parentName); 
         if(!parentDir.exists() && parentDir.mkdirs()) { //This is were parent folders are created
            ostream = new FileOutputStream(fileName, append);
         } else {
            throw ex;
         }
      } else {
         throw ex;
      }
}
....

关于java - 如果日志文件不存在,则阻止 log4j2 创建该日志文件的父文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53974434/

相关文章:

java - 自动将 Scala 代码转换为 Java 代码

java - 如何解决此 Log4J 导入错误(也与类路径有关)?

java - 了解异步记录器中的环形缓冲区

java - LOGGER.error(exception.getMessage()) 和 LOGGER.error(exception.getMessage(), exception) 有什么区别

Java 序列化 - java.io.InvalidClassException 本地类不兼容

java - 设置 JFrame 在屏幕上的位置并存储属性

java - RegEx - HTML anchor 元素中的组之间不捕获的任何内容

java - 如何使 spring @ManagedOperationParameter 与 scala 一起工作

java - 为什么只有根记录器在具有 JSON 配置的 Log4j 2 中工作?

java - Java EE 项目中的 Log4j2 配置文件