logging-log4j-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Anshu Garg1" <anshug...@in.ibm.com>
Subject Re: Using log4j1.2.17 foter is not getting added to each log file in rollingfileappender
Date Tue, 05 Jan 2016 07:04:59 GMT
Hi Ralph,

We  have actually tried log4j2, but unfortunately with that also we could 
not meet our requirements

 We are trying a JSON log using rolling file appender based on both time 
and size but we are facing below challenges 

1. Apache log4j2 default roll over implementation adds time stamp to log 
file name  while saving and closing, while our requirement is to add time 
stamp to file name at the time of file creation. For this we implemented 
our own rollover strategy. But that was not a complete solution since 
first file name was saved in rolling file appender without time stamp and 
to change that we extended "AbstractOutputStreamAppender" to create our 
own RollingFileAppender (but most of code in it is from Apache, except 
what we had to modify to set first file name with time stamp).


2. Above lead to mismatch between  the type of parameters in various other 
classes' methods where default Apache classes' types  were expected  but 
we were using our own implementation. So we had to use source code for 
such classes as is and just replace parameters' types from default to our 
implemented classes. 

3. By default JSON Layout from Apache log4j2 has a non resolved defect 
which does not write a valid JSON. Log entries do not have a comma between 
then which results in invalid JSON. To rectify this we implemented our own 
layout. This again has most of the code from Apache but few changes here 
and there to get comma at start of each entry except first.

4. We had to customize header and footer values as per our requirement, 
since default in Apache default header is "[" and footer is "]". While we 
needed more information in header section.

5. With Apache log4j2's default behavior for time based rollover 
 duration's unit was determined by file pattern. We had to make duration 
time unit independent of file pattern because with default behavior  if a 
user wanted time stamp in file name till mili seconds then even file 
rollover would happen in mili seconds which is not desired. And if user 
wanted hourly or daily roll over then file stamp could only be used till 
date or hour. To be able to specify duration in a definite unit (minutes 
in our case) we had to implement our own PatternProcessor. 

6. We needed to add some custom log fields in JSON logs for which we had 
to write our own LogEntry and MessageFactory.

All above needed to write own classes with most functionality copied from 
Apache which means we could not achieve above with just extending the 
Apache classes. We had to make source code changes which we want to avoid. 
Do you have any suggestion to overcome above without having to fork code 
of Log4j2 ?

We did not find any solution to above so we came back to Log4j1. Is there 
a way round to get footer in Log4j1 or Log4j2,  with above requirements, 
without having to change source code ?

-Thanks & Regards,
Anshu Garg
Platform Technology Center, India

From:   Ralph Goers <ralph.goers@dslextreme.com>
To:     Log4J Users List <log4j-user@logging.apache.org>
Date:   01/05/2016 12:04 PM
Subject:        Re: Using log4j1.2.17 foter is not getting added to each 
log file in rollingfileappender

Please see 


> On Jan 4, 2016, at 11:14 PM, Anshu Garg1 <anshugarg@in.ibm.com> wrote:
> Hi,
> We have extended patternlayout to set custom footer and header. Now when 

> we use this pattern in rolling file appender footer is only added to 
> log file generated while header is added to all files. Our requirement 
> to have footer also added to files created. Any suggestion? Here is the 
> snippet. 
> Logger logger = Logger.getLogger("myLogger");
> CustomPattern pattern = new CustomPattern();
> pattern.setHeader("HeaderText");
> pattern.setFooter("FooterText");
> rollingFileAppender.setLayout(pattern);
> -Thanks & Regards,
> Anshu Garg
> Platform Technology Center, India

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message