Thanks all!

WRT Ralph's comments:

The compressed active log can be read as it is being written with no problems 
using e.g. zcat/zless. This can read up to the end of the data despite the GZIP 
not being closed.

There is a concern about the application dying and not closing the GZIP 
compression. If we start logging again to a file damaged in this way then we 
will not be able to read the new data even with zless, as it stops reading at 
the unexpected new GZIP header. This could however be alleviated with an 
onStartupTriggeringPolicy for rollover - the worst that could happen in this 
situation is that one of the rolled over logs would be missing a GZIP trailer 
and therefore would not work with gunzip, but would still have all its data 
readable through zless. No log data would be lost.

WRT Volkan's comment:

This enhancement required changes to several areas of logging-log4j2 (e.g. 
compression actions, file managers) - I'm not sure if it could easily be split 
off into its own appender.

-----Original Message-----
From: Volkan Yazıcı <vol...@yazi.ci> 
Sent: Thursday, May 5, 2022 3:11 PM
To: Apache Logging Developers List <dev@logging.apache.org>
Subject: Re: RollingFileAppender enhancement for file compression

I agree with Ralph here. My suggestion would be to publish this custom appender 
as a separate F/OSS project first. It can certainly be contributed back to 
Log4j at a later stage depending on its reception by the community.

On Thu, May 5, 2022 at 9:27 AM Ralph Goers <ralph.go...@dslextreme.com>
wrote:

> While useful I have concerns as to what the state of the file would be 
> if the application dies. Also, is the file readable as it is being written?
> The RollingAppenders are already overly complicated so I am reluctant 
> to add new features without doing something to simplify them.
>
> Ralph
>
> > On May 5, 2022, at 12:34 AM, Matt Sicker <boa...@gmail.com> wrote:
> >
> > That sounds pretty useful to me. Using the existing compression 
> > actions could make it so you can more easily support other 
> > compression formats.
> >
> > On Wed, May 4, 2022 at 4:44 PM Alexander Lambert (HE/HIM) 
> > <lambe...@microsoft.com.invalid> wrote:
> >>
> >> Hi all,
> >>
> >> We have a local modification to logging-log4j2/log4j-core that we 
> >> are
> hoping to contribute back to open source. We modify the 
> RollingFileAppender, adding a config option to compress the file as it 
> is originally written instead of on rollover. The value of this is in 
> reducing the volume of data required to be written to disk, improving 
> performance.
> >>
> >> The summary of this change is as follows:
> >>
> >>  *   A new Boolean config option "compressOnWrite" for the
> RollingFileAppender.
> >>  *   If true, the log is written to e.g. a GZIPOutputStream instead of
> a FileOutputStream.
> >>     *   Any rollover compression action implied by the filePattern
> extension is skipped as the file is already compressed, and so only a 
> rename is done.
> >>
> >> Right now our change only applies to the ".gz" compression type, 
> >> but it
> would be possible to extend this functionality to the other 
> compression methods - the file extension from the fileName could be 
> used to detect this. The GZIP format is however especially appropriate for 
> this feature:
> >>
> >>  *   No need to enforce an OnStartupTriggeringPolicy for the rollover,
> as it is valid to append new GZIP data to a closed GZIP file.
> >>
> >> Is there any reason that this enhancement would not be accepted 
> >> into
> log4j?
> >>
> >> Many thanks,
> >> Alex
>
>

Reply via email to