[jira] [Commented] (LOG4J2-1182) RandomAccessFile IOException: Stream Closed is back
[ https://issues.apache.org/jira/browse/LOG4J2-1182?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16872395#comment-16872395 ] Kostiantyn Shchepanovskyi commented on LOG4J2-1182: --- [~ggregory] We do not use 2.11.2 due to https://issues.apache.org/jira/browse/LOG4J2-2602. Do you suspect it might be resolved in 2.11.2? > RandomAccessFile IOException: Stream Closed is back > --- > > Key: LOG4J2-1182 > URL: https://issues.apache.org/jira/browse/LOG4J2-1182 > Project: Log4j 2 > Issue Type: Bug > Components: Appenders >Affects Versions: 2.4.1 > Environment: Java 1.8.0_60-b27, OSX 10.11, Jackson 2.6.1, Maven 3.3.3 >Reporter: Ravi Gairola >Priority: Minor > Labels: Rollover > > This error pops up every now and then and looks very similar to LOG4J2-636: > {code:java} > 2015-10-27-23:00:00 2015-10-27 16:00:00,038 scribe-EventScribe ERROR Unable > to write to stream logs/server.log for appender AppLog > 2015-10-27-23:00:00 2015-10-27 16:00:00,038 scribe-EventScribe ERROR An > exception occurred processing Appender AppLog > org.apache.logging.log4j.core.appender.AppenderLoggingException: Error > writing to RandomAccessFile logs/server.log > 2015-10-27-23:00:00 at > org.apache.logging.log4j.core.appender.rolling.RollingRandomAccessFileManager.flush(RollingRandomAccessFileManager.java:132) > 2015-10-27-23:00:00 at > org.apache.logging.log4j.core.appender.rolling.RollingRandomAccessFileManager.write(RollingRandomAccessFileManager.java:112) > 2015-10-27-23:00:00 at > org.apache.logging.log4j.core.appender.OutputStreamManager.write(OutputStreamManager.java:136) > 2015-10-27-23:00:00 at > org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:105) > 2015-10-27-23:00:00 at > org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender.append(RollingRandomAccessFileAppender.java:98) > 2015-10-27-23:00:00 at > org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:152) > 2015-10-27-23:00:00 at > org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:125) > 2015-10-27-23:00:00 at > org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:116) > 2015-10-27-23:00:00 at > org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:84) > 2015-10-27-23:00:00 at > org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:390) > 2015-10-27-23:00:00 at > org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:378) > 2015-10-27-23:00:00 at > org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:362) > 2015-10-27-23:00:00 at > org.apache.logging.log4j.core.config.LoggerConfig.logParent(LoggerConfig.java:384) > 2015-10-27-23:00:00 at > org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:379) > 2015-10-27-23:00:00 at > org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:362) > 2015-10-27-23:00:00 at > org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:352) > 2015-10-27-23:00:00 at > org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:63) > 2015-10-27-23:00:00 at > org.apache.logging.log4j.core.Logger.logMessage(Logger.java:143) > 2015-10-27-23:00:00 at > org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:1011) > 2015-10-27-23:00:00 at > org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:988) > 2015-10-27-23:00:00 at > org.apache.logging.slf4j.Log4jLogger.error(Log4jLogger.java:318) > 2015-10-27-23:00:00 at > com.nextbit.syncserver.common.EventScribe$Scribe.run(EventScribe.java:142) > 2015-10-27-23:00:00 Caused by: java.io.IOException: Stream Closed > 2015-10-27-23:00:00 at java.io.RandomAccessFile.writeBytes(Native Method) > 2015-10-27-23:00:00 at > java.io.RandomAccessFile.write(RandomAccessFile.java:525) > 2015-10-27-23:00:00 at > org.apache.logging.log4j.core.appender.rolling.RollingRandomAccessFileManager.flush(RollingRandomAccessFileManager.java:129) > 2015-10-27-23:00:00 ... 21 more > {code} > Here's the respective yaml configuration: > {code} > configuration: > monitorInterval: 60 > status: WARN > name: Production Configuration > packages: com.our.packages > appenders: > appender: > - > type: Console > name: CONSOLE > PatternLayout: { pattern: '%d{-MMM-dd-HH:mm:ss.SSS} > [%p|%c{1}|%t|%X{rid}] %h: %m %n' } > - > type: RollingRandomAccessFile > name: AppLog > fileName:
[jira] [Comment Edited] (LOG4J2-1182) RandomAccessFile IOException: Stream Closed is back
[ https://issues.apache.org/jira/browse/LOG4J2-1182?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16872143#comment-16872143 ] Kostiantyn Shchepanovskyi edited comment on LOG4J2-1182 at 6/25/19 8:13 AM: Managed to reproduce this issue with log4j 2.11.1, in our case it happens on *"Too many open files"* error when creating new file. Steps to reproduce: # Configure RollingRandomAccessFile: {code:java} %level{length=1} %date{MMdd-HHmm:ss,SSS} %logger{1.} %message %X %markerSimpleName [%thread]%n {code} # Start application, make it log and roll files every couple of minutes. # Dramatically decrease number of file descriptors process can have, by running: {code:java} sudo prlimit -p --nofile=20 {code} # Wait until rollover happens multiple times. Observation: new text files are created, but not gzipped. # Restore process limits: {code:java} sudo prlimit -p --nofile=4096 {code} # Wait for rollover to happen. After these steps, logs are not written to server.log anymore, instead, for each log event we receive exception to stdout: {code:java} Jun 22 11:55:45 dev-game-1 live-game-service: 2019-06-22 11:55:45,483 AsyncAppender-asyncFile ERROR Recovering from StringBuilderEncoder.encode('I 0622-1155:45,482 c.p.l.p.c.ConnectorImpl Channel /10.147.48.94:54622 write: Message{"service":"pt.live.internal.LobbySettingsService","action":"getLobbyTableSettingsResponse","type":"RESPONSE(2)","correlationId":306629,"dataFormat":"PR OTOBUF(1)","data":""} {dispatchId=/10.147.48.94:54622, requested_action=getLobbyTableSettingsRequest, requested_service=pt.live.internal.LobbySettingsService} NIO [inio-2] Jun 22 11:55:45 dev-game-1 live-game-service: ') error: org.apache.logging.log4j.core.appender.AppenderLoggingException: Error writing to RandomAccessFile /opt/local/live-game-service/log/server.log org.apache.logging.log4j.core.appender.AppenderLoggingException: Error writing to RandomAccessFile /opt/local/live-game-service/log/server.log Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.appender.rolling.RollingRandomAccessFileManager.writeToDestination(RollingRandomAccessFileManager.java:142) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.appender.OutputStreamManager.flushBuffer(OutputStreamManager.java:293) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.appender.OutputStreamManager.drain(OutputStreamManager.java:350) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.layout.ByteBufferDestinationHelper.writeToUnsynchronized(ByteBufferDestinationHelper.java:45) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.appender.OutputStreamManager.writeBytes(OutputStreamManager.java:360) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.layout.TextEncoderHelper.writeEncodedText(TextEncoderHelper.java:96) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.layout.TextEncoderHelper.encodeText(TextEncoderHelper.java:65) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.layout.StringBuilderEncoder.encode(StringBuilderEncoder.java:68) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.layout.StringBuilderEncoder.encode(StringBuilderEncoder.java:32) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:220) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:58) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.directEncodeEvent(AbstractOutputStreamAppender.java:177) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.tryAppend(AbstractOutputStreamAppender.java:170) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:161) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender.append(RollingRandomAccessFileAppender.java:250) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:156) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:129) Jun 22 11:55:45 dev-game-1
[jira] [Comment Edited] (LOG4J2-1182) RandomAccessFile IOException: Stream Closed is back
[ https://issues.apache.org/jira/browse/LOG4J2-1182?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16872143#comment-16872143 ] Kostiantyn Shchepanovskyi edited comment on LOG4J2-1182 at 6/25/19 8:11 AM: Managed to reproduce this issue with log4j 2.11.1, in our case it happens on *"Too many open files"* error when creating new file. Steps to reproduce: # Configure RollingRandomAccessFile: {code:java} %level{length=1} %date{MMdd-HHmm:ss,SSS} %logger{1.} %message %X %markerSimpleName [%thread]%n {code} # Start application, make it log and roll files every couple of minutes. # Dramatically decrease number of file descriptors process can have, by running: {code:java} sudo prlimit -p --nofile=20{code} # Wait until rollover happens multiple times. Observation: new text files are created, but not gzipped. # Restore process limits: {code:java} sudo prlimit -p --nofile=4096{code} # Wait for rollover to happen. After these steps, logs are not written to server.log anymore, instead, for each log event we receive exception to stdout: {code:java} Jun 22 11:55:45 dev-game-1 live-game-service: 2019-06-22 11:55:45,483 AsyncAppender-asyncFile ERROR Recovering from StringBuilderEncoder.encode('I 0622-1155:45,482 c.p.l.p.c.ConnectorImpl Channel /10.147.48.94:54622 write: Message{"service":"pt.live.internal.LobbySettingsService","action":"getLobbyTableSettingsResponse","type":"RESPONSE(2)","correlationId":306629,"dataFormat":"PR OTOBUF(1)","data":""} {dispatchId=/10.147.48.94:54622, requested_action=getLobbyTableSettingsRequest, requested_service=pt.live.internal.LobbySettingsService} NIO [inio-2] Jun 22 11:55:45 dev-game-1 live-game-service: ') error: org.apache.logging.log4j.core.appender.AppenderLoggingException: Error writing to RandomAccessFile /opt/local/live-game-service/log/server.log org.apache.logging.log4j.core.appender.AppenderLoggingException: Error writing to RandomAccessFile /opt/local/live-game-service/log/server.log Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.appender.rolling.RollingRandomAccessFileManager.writeToDestination(RollingRandomAccessFileManager.java:142) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.appender.OutputStreamManager.flushBuffer(OutputStreamManager.java:293) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.appender.OutputStreamManager.drain(OutputStreamManager.java:350) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.layout.ByteBufferDestinationHelper.writeToUnsynchronized(ByteBufferDestinationHelper.java:45) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.appender.OutputStreamManager.writeBytes(OutputStreamManager.java:360) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.layout.TextEncoderHelper.writeEncodedText(TextEncoderHelper.java:96) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.layout.TextEncoderHelper.encodeText(TextEncoderHelper.java:65) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.layout.StringBuilderEncoder.encode(StringBuilderEncoder.java:68) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.layout.StringBuilderEncoder.encode(StringBuilderEncoder.java:32) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:220) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:58) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.directEncodeEvent(AbstractOutputStreamAppender.java:177) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.tryAppend(AbstractOutputStreamAppender.java:170) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:161) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender.append(RollingRandomAccessFileAppender.java:250) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:156) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:129) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:120) Jun 22 11:55:45 dev-game-1 live-game-service: at
[jira] [Commented] (LOG4J2-1182) RandomAccessFile IOException: Stream Closed is back
[ https://issues.apache.org/jira/browse/LOG4J2-1182?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16872143#comment-16872143 ] Kostiantyn Shchepanovskyi commented on LOG4J2-1182: --- Managed to reproduce this issue with log4j 2.11.1, in our case it happens on *"Too many open files"* error when creating new file: # Configure RollingRandomAccessFile: {code:java} %level{length=1} %date{MMdd-HHmm:ss,SSS} %logger{1.} %message %X %markerSimpleName [%thread]%n {code} # Start application, make it log and roll files every couple of minutes. # Dramatically decrease number of file descriptors process can have, by running: {code:java} sudo prlimit -p --nofile=20{code} # Wait until rollover happens multiple times. Observation: new text files are created, but not gzipped. # Restore process limits: {code:java} sudo prlimit -p --nofile=4096{code} # Wait for rollover to happen. After these steps, logs are not written to server.log anymore, instead, for each log event we receive exception to stdout: {code:java} Jun 22 11:55:45 dev-game-1 live-game-service: 2019-06-22 11:55:45,483 AsyncAppender-asyncFile ERROR Recovering from StringBuilderEncoder.encode('I 0622-1155:45,482 c.p.l.p.c.ConnectorImpl Channel /10.147.48.94:54622 write: Message{"service":"pt.live.internal.LobbySettingsService","action":"getLobbyTableSettingsResponse","type":"RESPONSE(2)","correlationId":306629,"dataFormat":"PR OTOBUF(1)","data":""} {dispatchId=/10.147.48.94:54622, requested_action=getLobbyTableSettingsRequest, requested_service=pt.live.internal.LobbySettingsService} NIO [inio-2] Jun 22 11:55:45 dev-game-1 live-game-service: ') error: org.apache.logging.log4j.core.appender.AppenderLoggingException: Error writing to RandomAccessFile /opt/local/live-game-service/log/server.log org.apache.logging.log4j.core.appender.AppenderLoggingException: Error writing to RandomAccessFile /opt/local/live-game-service/log/server.log Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.appender.rolling.RollingRandomAccessFileManager.writeToDestination(RollingRandomAccessFileManager.java:142) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.appender.OutputStreamManager.flushBuffer(OutputStreamManager.java:293) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.appender.OutputStreamManager.drain(OutputStreamManager.java:350) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.layout.ByteBufferDestinationHelper.writeToUnsynchronized(ByteBufferDestinationHelper.java:45) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.appender.OutputStreamManager.writeBytes(OutputStreamManager.java:360) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.layout.TextEncoderHelper.writeEncodedText(TextEncoderHelper.java:96) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.layout.TextEncoderHelper.encodeText(TextEncoderHelper.java:65) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.layout.StringBuilderEncoder.encode(StringBuilderEncoder.java:68) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.layout.StringBuilderEncoder.encode(StringBuilderEncoder.java:32) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:220) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:58) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.directEncodeEvent(AbstractOutputStreamAppender.java:177) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.tryAppend(AbstractOutputStreamAppender.java:170) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:161) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender.append(RollingRandomAccessFileAppender.java:250) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:156) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:129) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:120) Jun 22 11:55:45 dev-game-1 live-game-service: at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:84) Jun
[jira] [Commented] (LOG4J2-2032) Curly braces in parameters are treated as placeholders
[ https://issues.apache.org/jira/browse/LOG4J2-2032?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16353744#comment-16353744 ] Kostiantyn Shchepanovskyi commented on LOG4J2-2032: --- [~ralph.go...@dslextreme.com] Can you please take a look at https://github.com/apache/logging-log4j2/pull/147? > Curly braces in parameters are treated as placeholders > -- > > Key: LOG4J2-2032 > URL: https://issues.apache.org/jira/browse/LOG4J2-2032 > Project: Log4j 2 > Issue Type: Bug > Components: Appenders, Layouts >Affects Versions: 2.8.2, 2.9.0, 2.10.0 > Environment: Tested on Windows and Linux. > java version "1.8.0_144" > Java(TM) SE Runtime Environment (build 1.8.0_144-b01) > Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode) >Reporter: Kostiantyn Shchepanovskyi >Priority: Major > > When logging event parameter contains two consecutive opening and closing > curly braces - {{for example {} in the middle of parameter}}, they are > treated as a placeholder and are substituted by provided parameters starting > from index zero. > I suspect that it affects only async loggers. > My configuration: > {code:xml} > > > > > > %level{length=1} %date{MMdd-HHmm:ss,SSS} %logger{1.} > %message %X [%thread]%n > > > > > > > > > > > > > > {code} > Test: > {code:java} > package com.playtech.live.platform.core.service; > import org.junit.jupiter.api.Test; > import org.slf4j.Logger; > import org.slf4j.LoggerFactory; > public class Log4jCurlyBracesInParameterTest { > private static final Logger LOGGER = > LoggerFactory.getLogger(Log4jCurlyBracesInParameterTest.class); > @Test > void messageWithCurlyBracesInParameter() { > LOGGER.info("Text containing curly braces: {}", "Curly{}"); > LOGGER.info("Normal text: {}, text containing curly braces {}", > "Normal", "Curly{}"); > } > } > {code} > Expected output: > {code} > I 0905-1731:01,018 c.p.l.p.c.s.Log4jCurlyBracesInParameterTest Text > containing curly braces: Curly{} {} [main] > I 0905-1731:01,033 c.p.l.p.c.s.Log4jCurlyBracesInParameterTest Normal text: > Normal, text containing curly braces Curly{} {} [main] > {code} > Actual output: > {code} > I 0905-1731:01,018 c.p.l.p.c.s.Log4jCurlyBracesInParameterTest Text > containing curly braces: CurlyCurly{} {} [main] > I 0905-1731:01,033 c.p.l.p.c.s.Log4jCurlyBracesInParameterTest Normal text: > Normal, text containing curly braces CurlyNormal {} [main] > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Updated] (LOG4J2-2032) Curly braces in parameters are treated as placeholders
[ https://issues.apache.org/jira/browse/LOG4J2-2032?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Kostiantyn Shchepanovskyi updated LOG4J2-2032: -- Affects Version/s: 2.10.0 > Curly braces in parameters are treated as placeholders > -- > > Key: LOG4J2-2032 > URL: https://issues.apache.org/jira/browse/LOG4J2-2032 > Project: Log4j 2 > Issue Type: Bug > Components: Appenders, Layouts >Affects Versions: 2.8.2, 2.9.0, 2.10.0 > Environment: Tested on Windows and Linux. > java version "1.8.0_144" > Java(TM) SE Runtime Environment (build 1.8.0_144-b01) > Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode) >Reporter: Kostiantyn Shchepanovskyi >Priority: Major > > When logging event parameter contains two consecutive opening and closing > curly braces - {{for example {} in the middle of parameter}}, they are > treated as a placeholder and are substituted by provided parameters starting > from index zero. > I suspect that it affects only async loggers. > My configuration: > {code:xml} > > > > > > %level{length=1} %date{MMdd-HHmm:ss,SSS} %logger{1.} > %message %X [%thread]%n > > > > > > > > > > > > > > {code} > Test: > {code:java} > package com.playtech.live.platform.core.service; > import org.junit.jupiter.api.Test; > import org.slf4j.Logger; > import org.slf4j.LoggerFactory; > public class Log4jCurlyBracesInParameterTest { > private static final Logger LOGGER = > LoggerFactory.getLogger(Log4jCurlyBracesInParameterTest.class); > @Test > void messageWithCurlyBracesInParameter() { > LOGGER.info("Text containing curly braces: {}", "Curly{}"); > LOGGER.info("Normal text: {}, text containing curly braces {}", > "Normal", "Curly{}"); > } > } > {code} > Expected output: > {code} > I 0905-1731:01,018 c.p.l.p.c.s.Log4jCurlyBracesInParameterTest Text > containing curly braces: Curly{} {} [main] > I 0905-1731:01,033 c.p.l.p.c.s.Log4jCurlyBracesInParameterTest Normal text: > Normal, text containing curly braces Curly{} {} [main] > {code} > Actual output: > {code} > I 0905-1731:01,018 c.p.l.p.c.s.Log4jCurlyBracesInParameterTest Text > containing curly braces: CurlyCurly{} {} [main] > I 0905-1731:01,033 c.p.l.p.c.s.Log4jCurlyBracesInParameterTest Normal text: > Normal, text containing curly braces CurlyNormal {} [main] > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (LOG4J2-2032) Curly braces in parameters are treated as placeholders
[ https://issues.apache.org/jira/browse/LOG4J2-2032?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16352751#comment-16352751 ] Kostiantyn Shchepanovskyi commented on LOG4J2-2032: --- Looks like this issue has been introduced by https://issues.apache.org/jira/browse/LOG4J2-1342. {code:java} @Override public Message memento() { if (message != null) { return message; } final Object[] params = parameters == null ? new Object[0] : Arrays.copyOf(parameters, parameterCount); return new ParameterizedMessage(messageText.toString(), params); } {code} Returning {{ParameterizedMessage(messageText.toString(), params)}} is wrong, as {{messageText.toString()}} is already processed. If we return new message with parameters and this text as format, resulting string is invalid. [~rem...@yahoo.com] - I would appreciate any hints how to fix this issue in optimal way. > Curly braces in parameters are treated as placeholders > -- > > Key: LOG4J2-2032 > URL: https://issues.apache.org/jira/browse/LOG4J2-2032 > Project: Log4j 2 > Issue Type: Bug > Components: Appenders, Layouts >Affects Versions: 2.8.2, 2.9.0 > Environment: Tested on Windows and Linux. > java version "1.8.0_144" > Java(TM) SE Runtime Environment (build 1.8.0_144-b01) > Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode) >Reporter: Kostiantyn Shchepanovskyi >Priority: Major > > When logging event parameter contains two consecutive opening and closing > curly braces - {{for example {} in the middle of parameter}}, they are > treated as a placeholder and are substituted by provided parameters starting > from index zero. > I suspect that it affects only async loggers. > My configuration: > {code:xml} > > > > > > %level{length=1} %date{MMdd-HHmm:ss,SSS} %logger{1.} > %message %X [%thread]%n > > > > > > > > > > > > > > {code} > Test: > {code:java} > package com.playtech.live.platform.core.service; > import org.junit.jupiter.api.Test; > import org.slf4j.Logger; > import org.slf4j.LoggerFactory; > public class Log4jCurlyBracesInParameterTest { > private static final Logger LOGGER = > LoggerFactory.getLogger(Log4jCurlyBracesInParameterTest.class); > @Test > void messageWithCurlyBracesInParameter() { > LOGGER.info("Text containing curly braces: {}", "Curly{}"); > LOGGER.info("Normal text: {}, text containing curly braces {}", > "Normal", "Curly{}"); > } > } > {code} > Expected output: > {code} > I 0905-1731:01,018 c.p.l.p.c.s.Log4jCurlyBracesInParameterTest Text > containing curly braces: Curly{} {} [main] > I 0905-1731:01,033 c.p.l.p.c.s.Log4jCurlyBracesInParameterTest Normal text: > Normal, text containing curly braces Curly{} {} [main] > {code} > Actual output: > {code} > I 0905-1731:01,018 c.p.l.p.c.s.Log4jCurlyBracesInParameterTest Text > containing curly braces: CurlyCurly{} {} [main] > I 0905-1731:01,033 c.p.l.p.c.s.Log4jCurlyBracesInParameterTest Normal text: > Normal, text containing curly braces CurlyNormal {} [main] > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)