https://issues.apache.org/jira/browse/LOG4J2-1855 https://github.com/apache/logging-log4j2/pull/68
Let me know if you want me to do some changes Regards, Anthony 2017-03-23 13:15 GMT+01:00 Anthony Maire <maire.anth...@gmail.com>: > 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 >> >>