Ok,  I will open a jira ticket and provide a PR.

Thanks for your input.

Le 23 mars 2017 13:08, "Remko Popma" <remko.po...@gmail.com> a écrit :

> I see what you mean now. I agree it's better to keep the rollover concept
> to mean file rename and compression that happen in sequence together. So
> the randomization affects when the _sequence_ is triggered, not just one
> part of the sequence. Makes sense.
>
> Sent from my iPhone
>
> > On Mar 23, 2017, at 16:28, Anthony Maire <maire.anth...@gmail.com>
> wrote:
> >
> > Hi Remko
> >
> > My first idea was to have the rolling that triggers at the expected time,
> > and the compression that will be delayed. That's why I wanted the delayed
> > compression to occur before shutdown since the rolling already occurred.
> >
> > But I think that's a bad idea. First, it will lead to "fancy code" and I
> > would like to avoid it too. But the main issue is that this behavior
> should
> > impact only the time based triggering when combining several policy. So
> the
> > code should be related to the triggering policy and not to the rolling
> > strategy.
> >
> > So the best thing to do is to add some property on the timed base
> > triggering policy and let that class handle all the logic and delay the
> > triggering itself instead of the compression.
> >
> > Are you OK with that?
> >
> > Anthony
> >
> > Le 23 mars 2017 00:24, "Remko Popma" <remko.po...@gmail.com> a écrit :
> >
> >
> >> On Mar 23, 2017, at 1:06, Anthony Maire <maire.anth...@gmail.com>
> wrote:
> >>
> >> Thanks for these answers
> >>
> >> @Ralph : that was the kind of idea I had in mind : changing the
> >> RollingFileManager.asyncExecutor to be a ScheduledThreadPoolExecutor,
> and
> >> based on some configuration, submitting task to be executed after a
> random
> >> delay. However with this kind of approach, special treatment should be
> > made
> >> if the manager is stopped with some pending delayed tasks in it.
> >
> > I'm okay with randomization except for this last bit about "special
> > treatment...". Let's not make it too fancy. If the manager is stopped
> > before it rolled over, then it didn't roll over, just like it works
> > currently. I don't see the point of adding extra logic to trigger a
> > rollover when the manager is stopped within the randomized time window.
> >
> >>
> >> @Matt : Cron policy can be a solution, but I don't know how to inject
> some
> >> random element in this to make the file roll at midnight + X random
> >> seconds. Since there is a lot of JVM to manage and some of them can be
> >> moved from a machine to another, I need to have a single log4j2.xml file
> >> for all environments. Moreover, our system administrators are reluctant
> to
> >> have something based on a shell-specific feature (such has the $RANDOM
> >> variable from bash)
> >>
> >> Anthony
> >>
> >> 2017-03-22 16:31 GMT+01:00 Ralph Goers <ralph.go...@dslextreme.com>:
> >>
> >>> These are separate JVMs, so having a single executor would be of no
> help.
> >>>
> >>> I believe the only way to do what you are asking for is to add
> >>> configuration so that the asynchronous thread has a semi-random delay
> > when
> >>> it starts.
> >>>
> >>> Ralph
> >>>
> >>>> On Mar 22, 2017, at 7:58 AM, Greg Thomas <greg.d.tho...@gmail.com>
> >>> wrote:
> >>>>
> >>>>> One common issue we have with that framework (and I assume we can
> have
> >>> the
> >>>>> same with log4j2) is that all of our JVMs (we can have more than 50
> >>> JVMs on
> >>>>> the same server in production) roll their file at midnight.
> >>>>>
> >>>>> When this happens, the system became often not usable for a few
> seconds
> >>>>> because of the simultaneous zipping of all the rolled files that
> >>> overload
> >>>>> the CPU (although zipping is done in a specific background thread).
> >>>>
> >>>> ISTR that with the most recent versions of log4j, these threads are
> in a
> >>>> thread pool so that they are properly shutdown at the right time. I
> >>> wonder
> >>>> if it's possible (or could be possible) to somehow inject a thread
> pool
> >>> in
> >>>> to log4j for this rollover, so that for you use case you could inject
> a
> >>>> single thread executor, so only one thread is ever compressing at a
> > time.
> >>>>
> >>>> Just a thought, anyway,
> >>>>
> >>>> Greg
> >>>>
> >>>> On 22 March 2017 at 13:47, Anthony Maire <maire.anth...@gmail.com>
> >>> wrote:
> >>>>
> >>>>> Hi
> >>>>>
> >>>>> We are currently using another logging framework in production, but
> I'm
> >>>>> pushing to change it for log4j2.
> >>>>>
> >>>>> One common issue we have with that framework (and I assume we can
> have
> >>> the
> >>>>> same with log4j2) is that all of our JVMs (we can have more than 50
> >>> JVMs on
> >>>>> the same server in production) roll their file at midnight.
> >>>>>
> >>>>> When this happens, the system became often not usable for a few
> seconds
> >>>>> because of the simultaneous zipping of all the rolled files that
> >>> overload
> >>>>> the CPU (although zipping is done in a specific background thread).
> To
> >>>>> reduce this effect, we are combining a time based rolling policy
> with a
> >>>>> sized based policy to zip smaller files, but this is not enough to
> make
> >>> the
> >>>>> system fully responsive at midnight.
> >>>>>
> >>>>> A pretty cool feature for us to avoid this issue is to have the
> >>> possibility
> >>>>> when a rolling is triggered because of a time based policy to change
> >>> file
> >>>>> immediately, but to wait for a random amount of time (within a
> >>> configurable
> >>>>> limit) before starting the compression. This random delay should
> help a
> >>> lot
> >>>>> to avoid contention on CPU cycles.
> >>>>>
> >>>>> Does log4j2 have something to solve this kind of issue ? If not,
> would
> >>> you
> >>>>> accept a pull request for this (I will open a Jira if needed) ?
> >>>>>
> >>>>> Regards,
> >>>>> Anthony
> >>>>>
> >>>
> >>>
> >>>
> >>> ---------------------------------------------------------------------
> >>> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
> >>> For additional commands, e-mail: log4j-user-h...@logging.apache.org
> >>>
> >>>
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
> > For additional commands, e-mail: log4j-user-h...@logging.apache.org
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
> For additional commands, e-mail: log4j-user-h...@logging.apache.org
>
>

Reply via email to