-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Closed
Closed
Copy link
Labels
appendersAffects one or more Appender pluginsAffects one or more Appender pluginsbugIncorrect, unexpected, or unintended behavior of existing codeIncorrect, unexpected, or unintended behavior of existing coderuntimeSpecific to the runtime environmentSpecific to the runtime environment
Milestone
Description
Description
My application is running on SpringBoot 2.7.13. I have an appender defined like
Configuration:
status: warn
appenders:
RollingFile:
- name: LogToRollingFileWithPattern
filePattern: application-%i.log
PatternLayout:
Pattern: "%level %d{DEFAULT_MICROS} [%t] %c{1} %X{AWS-XRAY-TRACE-ID} - %msg%n"
Policies:
SizeBasedTriggeringPolicy:
size: 1MB
DirectWriteRolloverStrategy:
maxFiles: 5
Loggers:
Root:
level: info
AppenderRef:
- ref: LogToRollingFileWithPattern
Once I start the application the exception is printed in console and file are not created.
Everything works with DefaultRolloverStrategy and files are created as expected
Configuration
Version: 2.17.2
Operating system: Windows 10
JDK: JDK 17
Logs
2023-07-31 18:35:38,086 main ERROR An exception occurred processing Appender LogToRollingFileWithPattern java.lang.NullPointerException: Cannot invoke "java.io.File.mkdirs()" because the return value of "java.io.File.getParentFile()" is null
at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.createParentDir(RollingFileManager.java:253)
at org.apache.logging.log4j.core.appender.FileManager.createOutputStream(FileManager.java:191)
at org.apache.logging.log4j.core.appender.OutputStreamManager.getOutputStream(OutputStreamManager.java:165)
at org.apache.logging.log4j.core.appender.OutputStreamManager.writeToDestination(OutputStreamManager.java:250)
at org.apache.logging.log4j.core.appender.FileManager.writeToDestination(FileManager.java:277)
at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.writeToDestination(RollingFileManager.java:275)
at org.apache.logging.log4j.core.appender.OutputStreamManager.flushBuffer(OutputStreamManager.java:283)
at org.apache.logging.log4j.core.appender.OutputStreamManager.flush(OutputStreamManager.java:294)
at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.directEncodeEvent(AbstractOutputStreamAppender.java:217)
at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.tryAppend(AbstractOutputStreamAppender.java:208)
at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:199)
at org.apache.logging.log4j.core.appender.RollingFileAppender.append(RollingFileAppender.java:312)
at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:161)
at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:134)
at org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:125)
at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:89)
at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:675)
at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:633)
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:616)
at org.apache.logging.log4j.core.config.LoggerConfig.logParent(LoggerConfig.java:666)
at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:635)
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:616)
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:552)
at org.apache.logging.log4j.core.config.DefaultReliabilityStrategy.log(DefaultReliabilityStrategy.java:63)
at org.apache.logging.log4j.core.Logger.log(Logger.java:161)
at org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2205)
at org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2159)
at org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2142)
at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2022)
at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1875)
at org.apache.commons.logging.LogAdapter$Log4jLog.log(LogAdapter.java:266)
at org.apache.commons.logging.LogAdapter$Log4jLog.info(LogAdapter.java:230)
at org.springframework.boot.SpringApplication.logStartupProfileInfo(SpringApplication.java:637)
at org.springframework.boot.SpringApplication.prepareContext(SpringApplication.java:378)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:306)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292)
at com.example.Application.main(Application.java:21)
Reproduction
Errors appears right after application start. It happens during creation a directory for logs
However if we replace file.getParentFile()
with file.getAbsoluteFile().getParentFile()
it returns a correct non null File
Metadata
Metadata
Assignees
Labels
appendersAffects one or more Appender pluginsAffects one or more Appender pluginsbugIncorrect, unexpected, or unintended behavior of existing codeIncorrect, unexpected, or unintended behavior of existing coderuntimeSpecific to the runtime environmentSpecific to the runtime environment