I could reproduce the problem wiht some test code:
```
import java.util.Properties;
import org.apache.logging.log4j.core.Logger;
import org.apache.logging.log4j.core.LoggerContext;
import
org.apache.logging.log4j.core.config.properties.PropertiesConfiguration;
import
org.apache.logging.log4j.core.config.properties.PropertiesConfigurationBuilder;
import org.junit.jupiter.api.Test;
public class RollingTest {
@Test
public void streamClosedError() throws Exception {
Properties log4j2Properties = new Properties();
log4j2Properties.put("appender.localmsglog.type", "RollingFile");
log4j2Properties.put("appender.localmsglog.name", "localmsglog");
log4j2Properties.put("appender.localmsglog.filePattern",
"C:/dev/tmp/log/%d{yyyy_MM_dd-mm}/messages-$${date:yyyy_MM_dd_HH_mm_ss}.log");
log4j2Properties.put("appender.localmsglog.policies.type",
"Policies");
log4j2Properties.put("appender.localmsglog.policies.1.type",
"TimeBasedTriggeringPolicy");
log4j2Properties.put("rootLogger.level", "info");
log4j2Properties.put("rootLogger.appenderRef.1.ref", "localmsglog");
PropertiesConfiguration config = new
PropertiesConfigurationBuilder()
.setRootProperties(log4j2Properties)
.build();
org.apache.logging.log4j.core.config.Configurator.reconfigure(config);
LoggerContext context = LoggerContext.getContext(false);
Logger log = context.getRootLogger();
while(true) {
log.info("AAA");
Thread.sleep(15000);
}
}
}
```
Greetings
Benjamin
On 2020-06-18 05:05, Ralph Goers wrote:
You don’t have a filename specified so it is trying to use
DirectWriteRolloverStrategy. You are using SizeBasedTriggeringPolicy
and don’t have %I in the pattern, which is normally required for a
size based rollover. However, that doesn’t seem to be a problem here.
I notice that the previous file was in the directory named 2020_06_17
while the new file is supposed to go in 2020_06_18. I have a
suspicion it isn’t creating the directory for some reason.
Ralph
On Jun 17, 2020, at 6:09 PM, Benjamin Asbach <contact-...@impl.it>
wrote:
Hi,
every night after rolling we experience IOExceptions when our logger
tries to log. So after midnight there's no logging to that log file at
all. The application is running on four WebLogic12 nodes. All nodes
are running on the same machine. All logs are going to the same
directory. The log files are separated by the server id.
Looking forward for any input.
## Config
appender.localmsglog.type = RollingFile
appender.localmsglog.name = localmsglog
# NOTE: %d is needed for TimeBasedTriggeringPolicy
appender.localmsglog.filePattern =
/LOG/%d{yyyy_MM_dd}/messages-$${date:yyyy_MM_dd_HH_mm_ss}-${serverinstance:}.log
appender.localmsglog.layout.type = CustomXMLLayout
appender.localmsglog.policies.type = Policies
appender.localmsglog.policies.1.type = SizeBasedTriggeringPolicy
appender.localmsglog.policies.1.size = 250MB
appender.localmsglog.policies.2.type = TimeBasedTriggeringPolicy
## Error
TRACE StatusLogger PatternProcessor.getNextTime returning
2020/06/19-00:00:00.000, nextFileTime=2020/06/18-00:00:00.000,
prevFileTime=2020/06/17-00:00:00.000, current=2020/06/18-02:37:49.794,
freq=DAILY
DEBUG StatusLogger Rolling
/LOG/2020_06_17/messages-2020_06_17_19_52_34-1.log
DEBUG StatusLogger Formatting file name. useCurrentTime=false.
currentFileTime=1592440669794, prevFileTime=1592344800000
DEBUG StatusLogger Found 0 eligible files, max is 2147483647
TRACE StatusLogger DirectWriteRolloverStrategy.purge() took 0.0
milliseconds
DEBUG StatusLogger OutputStream closed
DEBUG StatusLogger Formatting file name. useCurrentTime=false.
currentFileTime=1592440669794, prevFileTime=1592344800000
DEBUG StatusLogger Formatting file name. useCurrentTime=true.
currentFileTime=1592440669794, prevFileTime=1592344800000
DEBUG StatusLogger Now writing to
/LOG/2020_06_18/messages-2020_06_18_02_37_49-1.log at
2020-06-18T02:37:49.804+0200
ERROR StatusLogger RollingFileManager
/LOG/%d{yyyy_MM_dd}/messages-${date:yyyy_MM_dd_HH_mm_ss}-1.log Failed
to create file after rollover: java.io.FileNotFoundException:
/LOG/2020_06_18/messages-2020_06_18_02_37_49-1.log (No such file or
directory)
java.io.FileNotFoundException:
/LOG/2020_06_18/messages-2020_06_18_02_37_49-1.log (No such file or
directory)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(FileOutputStream.java:270)
at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
at
org.apache.logging.log4j.core.appender.FileManager.createOutputStream(FileManager.java:191)
at
org.apache.logging.log4j.core.appender.rolling.RollingFileManager.createFileAfterRollover(RollingFileManager.java:351)
at
org.apache.logging.log4j.core.appender.rolling.RollingFileManager.rollover(RollingFileManager.java:343)
at
org.apache.logging.log4j.core.appender.rolling.RollingFileManager.checkRollover(RollingFileManager.java:273)
at
org.apache.logging.log4j.core.appender.RollingFileAppender.append(RollingFileAppender.java:311)
at
org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:156)
at
org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:129)
at
org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:120)
at
org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:84)
at
org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:543)
at
org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:502)
at
org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:485)
at
org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:460)
at
org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:82)
at org.apache.logging.log4j.core.Logger.log(Logger.java:161)
at
org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2198)
at
org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2152)
at
org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2135)
at
org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2011)
at
org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1983)
at
org.apache.logging.log4j.spi.AbstractLogger.info(AbstractLogger.java:1320)
...
at
weblogic.ejb.container.internal.MDListener.execute(MDListener.java:453)
at
weblogic.ejb.container.internal.MDListener.transactionalOnMessage(MDListener.java:376)
at
weblogic.ejb.container.internal.MDListener.onMessage(MDListener.java:311)
at
weblogic.jms.client.JMSSession.onMessage(JMSSession.java:4855)
at weblogic.jms.client.JMSSession.execute(JMSSession.java:4529)
at
weblogic.jms.client.JMSSession.executeMessage(JMSSession.java:3976)
at
weblogic.jms.client.JMSSession.access$000(JMSSession.java:120)
at
weblogic.jms.client.JMSSession$UseForRunnable.run(JMSSession.java:5375)
at
weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:553)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:311)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:263)
ERROR StatusLogger Unable to write to stream
/LOG/%d{yyyy_MM_dd}/messages-${date:yyyy_MM_dd_HH_mm_ss}-1.log for
appender localmsglog
org.apache.logging.log4j.core.appender.AppenderLoggingException: Error
writing to stream
/LOG/%d{yyyy_MM_dd}/messages-${date:yyyy_MM_dd_HH_mm_ss}-1.log
at
org.apache.logging.log4j.core.appender.OutputStreamManager.writeToDestination(OutputStreamManager.java:252)
at
org.apache.logging.log4j.core.appender.FileManager.writeToDestination(FileManager.java:273)
at
org.apache.logging.log4j.core.appender.rolling.RollingFileManager.writeToDestination(RollingFileManager.java:240)
at
org.apache.logging.log4j.core.appender.OutputStreamManager.flushBuffer(OutputStreamManager.java:282)
at
org.apache.logging.log4j.core.appender.OutputStreamManager.flush(OutputStreamManager.java:291)
at
org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.directEncodeEvent(AbstractOutputStreamAppender.java:199)
at
org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.tryAppend(AbstractOutputStreamAppender.java:190)
at
org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:181)
at
org.apache.logging.log4j.core.appender.RollingFileAppender.append(RollingFileAppender.java:312)
at
org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:156)
at
org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:129)
at
org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:120)
at
org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:84)
at
org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:543)
at
org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:502)
at
org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:485)
at
org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:460)
at
org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:82)
at org.apache.logging.log4j.core.Logger.log(Logger.java:161)
at
org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2198)
at
org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2152)
at
org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2135)
at
org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2011)
at
org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1983)
at
org.apache.logging.log4j.spi.AbstractLogger.info(AbstractLogger.java:1320)
...
at
weblogic.ejb.container.internal.MDListener.execute(MDListener.java:453)
at
weblogic.ejb.container.internal.MDListener.transactionalOnMessage(MDListener.java:376)
at
weblogic.ejb.container.internal.MDListener.onMessage(MDListener.java:311)
at
weblogic.jms.client.JMSSession.onMessage(JMSSession.java:4855)
at weblogic.jms.client.JMSSession.execute(JMSSession.java:4529)
at
weblogic.jms.client.JMSSession.executeMessage(JMSSession.java:3976)
at
weblogic.jms.client.JMSSession.access$000(JMSSession.java:120)
at
weblogic.jms.client.JMSSession$UseForRunnable.run(JMSSession.java:5375)
at
weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:553)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:311)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:263)
Caused by: java.io.IOException: Stream Closed
at java.io.FileOutputStream.writeBytes(Native Method)
at java.io.FileOutputStream.write(FileOutputStream.java:326)
at
org.apache.logging.log4j.core.appender.OutputStreamManager.writeToDestination(OutputStreamManager.java:250)
... 39 more
ERROR StatusLogger An exception occurred processing Appender
localmsglog
org.apache.logging.log4j.core.appender.AppenderLoggingException: Error
writing to stream
/LOG/%d{yyyy_MM_dd}/messages-${date:yyyy_MM_dd_HH_mm_ss}-1.log
at
org.apache.logging.log4j.core.appender.OutputStreamManager.writeToDestination(OutputStreamManager.java:252)
at
org.apache.logging.log4j.core.appender.FileManager.writeToDestination(FileManager.java:273)
at
org.apache.logging.log4j.core.appender.rolling.RollingFileManager.writeToDestination(RollingFileManager.java:240)
at
org.apache.logging.log4j.core.appender.OutputStreamManager.flushBuffer(OutputStreamManager.java:282)
at
org.apache.logging.log4j.core.appender.OutputStreamManager.flush(OutputStreamManager.java:291)
at
org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.directEncodeEvent(AbstractOutputStreamAppender.java:199)
at
org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.tryAppend(AbstractOutputStreamAppender.java:190)
at
org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:181)
at
org.apache.logging.log4j.core.appender.RollingFileAppender.append(RollingFileAppender.java:312)
at
org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:156)
at
org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:129)
at
org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:120)
at
org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:84)
at
org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:543)
at
org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:502)
at
org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:485)
at
org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:460)
at
org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:82)
at org.apache.logging.log4j.core.Logger.log(Logger.java:161)
at
org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2198)
at
org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2152)
at
org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2135)
at
org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2011)
at
org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1983)
at
org.apache.logging.log4j.spi.AbstractLogger.info(AbstractLogger.java:1320)
...
at
weblogic.ejb.container.internal.MDListener.execute(MDListener.java:453)
at
weblogic.ejb.container.internal.MDListener.transactionalOnMessage(MDListener.java:376)
at
weblogic.ejb.container.internal.MDListener.onMessage(MDListener.java:311)
at
weblogic.jms.client.JMSSession.onMessage(JMSSession.java:4855)
at weblogic.jms.client.JMSSession.execute(JMSSession.java:4529)
at
weblogic.jms.client.JMSSession.executeMessage(JMSSession.java:3976)
at
weblogic.jms.client.JMSSession.access$000(JMSSession.java:120)
at
weblogic.jms.client.JMSSession$UseForRunnable.run(JMSSession.java:5375)
at
weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:553)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:311)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:263)
Caused by: java.io.IOException: Stream Closed
at java.io.FileOutputStream.writeBytes(Native Method)
at java.io.FileOutputStream.write(FileOutputStream.java:326)
at
org.apache.logging.log4j.core.appender.OutputStreamManager.writeToDestination(OutputStreamManager.java:250)
... 39 more
ERROR StatusLogger Unable to write to stream
/LOG/%d{yyyy_MM_dd}/messages-${date:yyyy_MM_dd_HH_mm_ss}-1.log for
appender localmsglog
org.apache.logging.log4j.core.appender.AppenderLoggingException: Error
writing to stream
/LOG/%d{yyyy_MM_dd}/messages-${date:yyyy_MM_dd_HH_mm_ss}-1.log
at
org.apache.logging.log4j.core.appender.OutputStreamManager.writeToDestination(OutputStreamManager.java:252)
at
org.apache.logging.log4j.core.appender.FileManager.writeToDestination(FileManager.java:273)
at
org.apache.logging.log4j.core.appender.rolling.RollingFileManager.writeToDestination(RollingFileManager.java:240)
at
org.apache.logging.log4j.core.appender.OutputStreamManager.flushBuffer(OutputStreamManager.java:282)
at
org.apache.logging.log4j.core.appender.OutputStreamManager.flush(OutputStreamManager.java:291)
at
org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.directEncodeEvent(AbstractOutputStreamAppender.java:199)
at
org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.tryAppend(AbstractOutputStreamAppender.java:190)
at
org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:181)
at
org.apache.logging.log4j.core.appender.RollingFileAppender.append(RollingFileAppender.java:312)
at
org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:156)
at
org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:129)
at
org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:120)
at
org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:84)
at
org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:543)
at
org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:502)
at
org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:485)
at
org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:460)
at
org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:82)
at org.apache.logging.log4j.core.Logger.log(Logger.java:161)
at
org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2198)
at
org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2152)
at
org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2135)
at
org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2011)
at
org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1983)
at
org.apache.logging.log4j.spi.AbstractLogger.info(AbstractLogger.java:1320)
...
at
weblogic.ejb.container.internal.MDListener.execute(MDListener.java:453)
at
weblogic.ejb.container.internal.MDListener.transactionalOnMessage(MDListener.java:376)
at
weblogic.ejb.container.internal.MDListener.onMessage(MDListener.java:311)
at
weblogic.jms.client.JMSSession.onMessage(JMSSession.java:4855)
at weblogic.jms.client.JMSSession.execute(JMSSession.java:4529)
at
weblogic.jms.client.JMSSession.executeMessage(JMSSession.java:3976)
at
weblogic.jms.client.JMSSession.access$000(JMSSession.java:120)
at
weblogic.jms.client.JMSSession$UseForRunnable.run(JMSSession.java:5375)
at
weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:553)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:311)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:263)
Caused by: java.io.IOException: Stream Closed
at java.io.FileOutputStream.writeBytes(Native Method)
at java.io.FileOutputStream.write(FileOutputStream.java:326)
at
org.apache.logging.log4j.core.appender.OutputStreamManager.writeToDestination(OutputStreamManager.java:250)
... 40 more
Thanks
Benjamin
---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
For additional commands, e-mail: log4j-user-h...@logging.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
For additional commands, e-mail: log4j-user-h...@logging.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
For additional commands, e-mail: log4j-user-h...@logging.apache.org