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

Gary Gregory updated LOG4J2-1766:
---------------------------------
    Description: 
I have the following log configuration.

{code:xml}
    <RollingRandomAccessFile name="RollingReqAppender"
        fileName="/usr/test/req.log"
        filePattern="/usr/test/req.log.%d{yyyy-MM-dd-HH}.%i.gz"
        immediateFlush="true" append="true">
        <PatternLayout>
            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS Z}%m%n</Pattern>
        </PatternLayout>
        <Policies>
            <SizeBasedTriggeringPolicy size="500 MB"/>
            <TimeBasedTriggeringPolicy interval="1" modulate="true" />
        </Policies>
    </RollingRandomAccessFile>
{code}

When the log is rolled over (based on time or size), it is gzipped. Gzipping 
the file takes some time (seconds to minutes depending on load). The problem is 
that the file is gzipped in place, and while it is being gzipped, the partially 
gzipped file is stored in the same folder with the same name as the final gzip 
file. e.g.: {{/usr/test/req.log.2017-01-03-02.1.gz}}

This causes problems for the file's consumer, which attempts to process the 
partial file. I want to be able to distinguish between a partial gzipped file 
and a completed gzipped file. For example, I would like to setup a 
configuration that while the file is being gzipped, it is written with a 
different name e.g.: {{/usr/test/req.log.2017-01-03-02.1.gz.temp}} and once it 
is completely gzipped the name is changed to the final name 
{{/usr/test/req.log.2017-01-03-02.1.gz}}

One way to achieve this is to add a new parameter like 
"temporaryCompressedFilePattern" as follows:
{code:xml}
<RollingRandomAccessFile name="RollingReqAppender"
        fileName="/usr/test/req.log"
        filePattern="/usr/test/req.log.%d{yyyy-MM-dd-HH}.%i.gz"
        
temporaryCompressedFilePattern="/usr/test/req.log.%d{yyyy-MM-dd-HH}.%i.gz.temp"
{code}
Another option is to make such behavior the default behavior without adding a 
new parameter.
 
This was first discussed at 
http://stackoverflow.com/questions/41457492/partial-gz-file-written-by-log4j2
Creating this feature request as suggested by @rpopma


  was:
I have the following log configuration.

    <RollingRandomAccessFile name="RollingReqAppender"
        fileName="/usr/test/req.log"
        filePattern="/usr/test/req.log.%d{yyyy-MM-dd-HH}.%i.gz"
        immediateFlush="true" append="true">
        <PatternLayout>
            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS Z}%m%n</Pattern>
        </PatternLayout>
        <Policies>
            <SizeBasedTriggeringPolicy size="500 MB"/>
            <TimeBasedTriggeringPolicy interval="1" modulate="true" />
        </Policies>
    </RollingRandomAccessFile>

When the log is rolled over (based on time or size), it is gzipped. Gzipping 
the file takes some time (seconds to minutes depending on load). The problem is 
that the file is gzipped in place, and while it is being gzipped, the partially 
gzipped file is stored in the same folder with the same name as the final gzip 
file. e.g.: /usr/test/req.log.2017-01-03-02.1.gz

This causes problems for the file's consumer, which attempts to process the 
partial file. I want to be able to distinguish between a partial gzipped file 
and a completed gzipped file. For example, I would like to setup a 
configuration that while the file is being gzipped, it is written with a 
different name e.g.: /usr/test/req.log.2017-01-03-02.1.gz.temp and once it is 
completely gzipped the name is changed to the final name 
/usr/test/req.log.2017-01-03-02.1.gz

One way to achieve this is to add a new parameter like 
"temporaryCompressedFilePattern" as follows:

<RollingRandomAccessFile name="RollingReqAppender"
        fileName="/usr/test/req.log"
        filePattern="/usr/test/req.log.%d{yyyy-MM-dd-HH}.%i.gz"
        
temporaryCompressedFilePattern="/usr/test/req.log.%d{yyyy-MM-dd-HH}.%i.gz.temp"

Another option is to make such behavior the default behavior without adding a 
new parameter.
 
This was first discussed at 
http://stackoverflow.com/questions/41457492/partial-gz-file-written-by-log4j2
Creating this feature request as suggested by @rpopma



> Distinguish between partial and completed .gz archive file
> ----------------------------------------------------------
>
>                 Key: LOG4J2-1766
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-1766
>             Project: Log4j 2
>          Issue Type: New Feature
>    Affects Versions: 2.5
>            Reporter: Sameer Pradhan
>              Labels: features
>
> I have the following log configuration.
> {code:xml}
>     <RollingRandomAccessFile name="RollingReqAppender"
>         fileName="/usr/test/req.log"
>         filePattern="/usr/test/req.log.%d{yyyy-MM-dd-HH}.%i.gz"
>         immediateFlush="true" append="true">
>         <PatternLayout>
>             <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS Z}%m%n</Pattern>
>         </PatternLayout>
>         <Policies>
>             <SizeBasedTriggeringPolicy size="500 MB"/>
>             <TimeBasedTriggeringPolicy interval="1" modulate="true" />
>         </Policies>
>     </RollingRandomAccessFile>
> {code}
> When the log is rolled over (based on time or size), it is gzipped. Gzipping 
> the file takes some time (seconds to minutes depending on load). The problem 
> is that the file is gzipped in place, and while it is being gzipped, the 
> partially gzipped file is stored in the same folder with the same name as the 
> final gzip file. e.g.: {{/usr/test/req.log.2017-01-03-02.1.gz}}
> This causes problems for the file's consumer, which attempts to process the 
> partial file. I want to be able to distinguish between a partial gzipped file 
> and a completed gzipped file. For example, I would like to setup a 
> configuration that while the file is being gzipped, it is written with a 
> different name e.g.: {{/usr/test/req.log.2017-01-03-02.1.gz.temp}} and once 
> it is completely gzipped the name is changed to the final name 
> {{/usr/test/req.log.2017-01-03-02.1.gz}}
> One way to achieve this is to add a new parameter like 
> "temporaryCompressedFilePattern" as follows:
> {code:xml}
> <RollingRandomAccessFile name="RollingReqAppender"
>         fileName="/usr/test/req.log"
>         filePattern="/usr/test/req.log.%d{yyyy-MM-dd-HH}.%i.gz"
>         
> temporaryCompressedFilePattern="/usr/test/req.log.%d{yyyy-MM-dd-HH}.%i.gz.temp"
> {code}
> Another option is to make such behavior the default behavior without adding a 
> new parameter.
>  
> This was first discussed at 
> http://stackoverflow.com/questions/41457492/partial-gz-file-written-by-log4j2
> Creating this feature request as suggested by @rpopma



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to