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

Gary Gregory commented on LOG4J2-1482:
--------------------------------------

The problem is in the method 
{{org.apache.logging.log4j.core.layout.AbstractStringLayout.serializeToString(Serializer)}}.

This methods "creates" a new event which is then passed to the serializer. The 
problem is that by default, the previous log event object is reused and the 
{{parameters}} ivar is cleared as part of reusing/reseting the object before it 
is handed back to the call site.

In this use case's code path, this only happens when a rollover happens which 
then causes the header to be written on in the new file. Writing out the new 
header causes a "new" temporary log event to be created.

I have a patch (needs review) that uses the default log factory to create the 
log event, which creates a new instance, there is no reuse.

This puts a minor dent in the no-GC epic because we cannot reuse log events 
when writing headers and footers.

This should be problem also without the use of slf4j. So I'll add a test case 
in core as well.


> Improper header in CsvParameterLayout
> -------------------------------------
>
>                 Key: LOG4J2-1482
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-1482
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.6.2
>            Reporter: Sumit Singhal
>         Attachments: csv-with-line-seprator-1.csv, 
> csv-with-line-seprator-2.csv, csv-without-line-separator-1.csv, 
> csv-without-line-separator-2.csv
>
>
> The header and first record are coming in first line in case of 
> CsvParameterLayout. This messes up the header for the first file as well as 
> for the subsequent files. And if we use line separator as part of header, the 
> first file seems ok but the first record in subsequent files comes out to be 
> empty with only commas.
> Copied from the SO post:
> {code:xml}
> <?xml version="1.0" encoding="UTF-8"?>
> <Configuration status="warn" name="MyApp" packages="">
>     <Properties>
>         <Property name="audit-path">D:/watcher</Property>
>         <Property name="file-name">audit</Property>
>         <Property name="file-header">param1,param2,param3</Property>
>     </Properties>
>     <Appenders>
>     <RollingFile name="auditfile"
>         fileName="${audit-path}/${file-name}.tmp" 
> filePattern="${audit-path}/${file-name}-%d{yyyy-MM-dd}-%i.csv">
>         <CsvParameterLayout delimiter="," header="${file-header}">
>         </CsvParameterLayout>
>         <Policies>
>             <SizeBasedTriggeringPolicy size="80 B" />
>         </Policies>
>         <DefaultRolloverStrategy max="2"/>
>     </RollingFile>
> </Appenders>
> <Loggers>
>     <Root level="info">
>         <AppenderRef ref="auditfile" />
>     </Root>
> </Loggers>
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to