You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@logging.apache.org by "Ralph Goers (Jira)" <ji...@apache.org> on 2021/03/05 17:10:00 UTC

[jira] [Closed] (LOG4J2-2519) Does nio file appender exists?

     [ https://issues.apache.org/jira/browse/LOG4J2-2519?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ralph Goers closed LOG4J2-2519.
-------------------------------
    Resolution: Workaround

> Does nio file appender exists?
> ------------------------------
>
>                 Key: LOG4J2-2519
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-2519
>             Project: Log4j 2
>          Issue Type: Question
>    Affects Versions: 2.10.0
>            Reporter: David Kadleček
>            Priority: Major
>
> In one of our production environments, the Thread which asynchronously processes log events ( Log4j2-TF-1-AsyncLogger)  sometimes freezes (for several hours and never exits) in the native method FileOutputStream#writeBytes. The AsyncLogger is using RollingFileAppender, which is using old blocking IO access. Since we are unable to reproduce it anywhere else, we assume it's connected to this particular virtual environment setup. 
>  
> However, we would like to try NIO file appender. Unfortunately, I wasn't lucky to find any. Does any NIO file appender exist? Maybe unofficial?  Is it planned to rewrite File appenders to use NIO approach when dealing with files?
>  
> Bellow is a stacktrace of the async thread. It stays in the native method FileOutputStream.writeBytes forever but no new byte is written into the log folder. 
>  
> "Log4j2-TF-1-AsyncLogger[AsyncContext@1b9e1916]-1" #16 daemon prio=5 os_prio=0 tid=0x00007f3c19409800 nid=0x1a3 runnable [0x00007f3bc434a000]
> java.lang.Thread.State: RUNNABLE
> at java.io.FileOutputStream.writeBytes(java.base@9.0.1/Native Method)
> at java.io.FileOutputStream.write(java.base@9.0.1/FileOutputStream.java:332)
> at java.io.BufferedOutputStream.write(java.base@9.0.1/BufferedOutputStream.java:123)
>  - locked <0x00000006c0c74498> (a java.io.BufferedOutputStream)
> at java.io.PrintStream.write(java.base@9.0.1/PrintStream.java:480)
>  - locked <0x00000006c0c74470> (a java.io.PrintStream)
> at org.apache.logging.log4j.core.util.CloseShieldOutputStream.write(CloseShieldOutputStream.java:53)
> at org.apache.logging.log4j.core.appender.OutputStreamManager.writeToDestination(OutputStreamManager.java:262)
>  - eliminated <0x00000006c58e6240> (a org.apache.logging.log4j.core.appender.OutputStreamManager)
> at org.apache.logging.log4j.core.appender.OutputStreamManager.flushBuffer(OutputStreamManager.java:294)
>  - eliminated <0x00000006c58e6240> (a org.apache.logging.log4j.core.appender.OutputStreamManager)
> at org.apache.logging.log4j.core.appender.OutputStreamManager.drain(OutputStreamManager.java:351)
> at org.apache.logging.log4j.core.layout.TextEncoderHelper.drainIfByteBufferFull(TextEncoderHelper.java:260)
>  - locked <0x00000006c58e6240> (a org.apache.logging.log4j.core.appender.OutputStreamManager)
> at org.apache.logging.log4j.core.layout.TextEncoderHelper.writeAndEncodeAsMuchAsPossible(TextEncoderHelper.java:199)
> at org.apache.logging.log4j.core.layout.TextEncoderHelper.encodeChunkedText(TextEncoderHelper.java:159)
>  - locked <0x00000006c58e6240> (a org.apache.logging.log4j.core.appender.OutputStreamManager)
> at org.apache.logging.log4j.core.layout.TextEncoderHelper.encodeText(TextEncoderHelper.java:58)
> at org.apache.logging.log4j.core.layout.StringBuilderEncoder.encode(StringBuilderEncoder.java:68)
> at org.apache.logging.log4j.core.layout.StringBuilderEncoder.encode(StringBuilderEncoder.java:32)
> at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:220)
> at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:58)
> at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.directEncodeEvent(AbstractOutputStreamAppender.java:177)
> at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.tryAppend(AbstractOutputStreamAppender.java:170)
> at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:161)
> 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:448)
> at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:433)
> at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:417)
> at org.apache.logging.log4j.core.config.LoggerConfig.logParent(LoggerConfig.java:439)
> at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:434)
> at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:417)
> at org.apache.logging.log4j.core.config.LoggerConfig.logParent(LoggerConfig.java:439)
> at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:434)
> at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:417)
> at org.apache.logging.log4j.core.config.LoggerConfig.logParent(LoggerConfig.java:439)
> at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:434)
> at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:417)
> at org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:79)
> at org.apache.logging.log4j.core.async.AsyncLogger.actualAsyncLog(AsyncLogger.java:380)
> at org.apache.logging.log4j.core.async.RingBufferLogEvent.execute(RingBufferLogEvent.java:152)
> at org.apache.logging.log4j.core.async.RingBufferLogEventHandler.onEvent(RingBufferLogEventHandler.java:45)
> at org.apache.logging.log4j.core.async.RingBufferLogEventHandler.onEvent(RingBufferLogEventHandler.java:29)
> at com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:129)
> at java.lang.Thread.run(java.base@9.0.1/Thread.java:844)
> Locked ownable synchronizers:
>  - None



--
This message was sent by Atlassian Jira
(v8.3.4#803005)