[ 
https://issues.apache.org/jira/browse/LOG4J2-2032?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16429559#comment-16429559
 ] 

Remko Popma commented on LOG4J2-2032:
-------------------------------------

Thanks, [~kshchepanovskyi] and [~ckozak]!

> 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
>            Assignee: Carter Kozak
>            Priority: Major
>             Fix For: 3.0.0
>
>
> 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}
> <?xml version="1.0" encoding="UTF-8"?>
> <Configuration>
>     <Appenders>
>         <Console name="console" target="SYSTEM_OUT">
>             <PatternLayout>
>                 <pattern>%level{length=1} %date{MMdd-HHmm:ss,SSS} %logger{1.} 
> %message %X [%thread]%n
>                 </pattern>
>             </PatternLayout>
>         </Console>
>         <Async name="asyncFile">
>             <AppenderRef ref="console"/>
>         </Async>
>     </Appenders>
>     <Loggers>
>         <Root level="info">
>             <AppenderRef ref="asyncFile"/>
>         </Root>
>     </Loggers>
> </Configuration>
> {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)

Reply via email to