logging-log4j-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ralph Goers <ralph.go...@dslextreme.com>
Subject Re: Using log4j1.2.17 foter is not getting added to each log file in rollingfileappender
Date Tue, 05 Jan 2016 14:59:54 GMT
Remember, you can now use the CronTriggeringPolicy which does not use the filePattern.

Ralph

> On Jan 5, 2016, at 6:49 AM, Remko Popma <remko.popma@gmail.com> wrote:
> 
> FWIW, decoupling the filePattern from the rollover frequency is one of the
> things I had in mind with
> 
>   1. LOG4J2-1198 <https://issues.apache.org/jira/browse/LOG4J2-1198 <https://issues.apache.org/jira/browse/LOG4J2-1198>>.
> 
> 
> On Tuesday, 5 January 2016, Gary Gregory <garydgregory@gmail.com <mailto:garydgregory@gmail.com>>
wrote:
> 
>> On Mon, Jan 4, 2016 at 11:04 PM, Anshu Garg1 <anshugarg@in.ibm.com
>> <javascript:;>> wrote:
>> 
>>> 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).
>>> 
>>> 
>> http://stackoverflow.com/questions/30059333/log4j2-rolling-appender-filename-sliding-according-to-pattern
>>> 
>>> 
>>> 
>> http://stackoverflow.com/questions/14862770/log4j2-assigning-file-appender-filename-at-runtime
>>> 
>>> 
>>> 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.
>>> https://issues.apache.org/jira/browse/LOG4J2-908
>> 
>> 
>> Hello Anshu,
>> 
>> LOG4J2-908 <https://issues.apache.org/jira/browse/LOG4J2-908> is fixed in
>> Git master. You can build from Git and install locally or point your Maven
>> build to our SNAPSHOT repository here:
>> 
>> https://repository.apache.org/content/repositories/snapshots/
>> 
>> 
>>> 
>>> 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.
>>> 
>> 
>> If you want to make the "[" and "]" customizable for the JSON layout,
>> please create a JIRA. Can you describe the use case please? That would make
>> for a better story in the documentation.
>> 
>> 
>>> 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.
>>> https://issues.apache.org/jira/browse/LOG4J2-573
>>> 
>>> 6. We needed to add some custom log fields in JSON logs for which we had
>>> to write our own LogEntry and MessageFactory.
>>> 
>> 
>> Can you be more specific please?
>> 
>> 
>>> 
>>> 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 ?
>>> 
>> 
>> You've come to the right place. Let's start with your validation that
>> https://issues.apache.org/jira/browse/LOG4J2-908 has been fixed for your
>> use case.
>> 
>> Gary
>> 
>> 
>>> 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 <javascript:;>>
>>> To:     Log4J Users List <log4j-user@logging.apache.org <javascript:;>>
>>> 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
>>> 
>>> 
>> https://blogs.apache.org/foundation/entry/apache_logging_services_project_announces
>>> <
>>> 
>>> 
>> https://blogs.apache.org/foundation/entry/apache_logging_services_project_announces
>>>> .
>>> 
>>> Ralph
>>> 
>>>> On Jan 4, 2016, at 11:14 PM, Anshu Garg1 <anshugarg@in.ibm.com
>> <javascript:;>> 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
>>> last
>>>> log file generated while header is added to all files. Our requirement
>>> is
>>>> 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
>>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>> 
>> 
>> --
>> E-Mail: garydgregory@gmail.com <javascript:;> | ggregory@apache.org
>> <javascript:;>
>> Java Persistence with Hibernate, Second Edition
>> <http://www.manning.com/bauer3/ <http://www.manning.com/bauer3/>>
>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/ <http://www.manning.com/tahchiev/>>
>> Spring Batch in Action <http://www.manning.com/templier/ <http://www.manning.com/templier/>>
>> Blog: http://garygregory.wordpress.com <http://garygregory.wordpress.com/>
>> Home: http://garygregory.com/ <http://garygregory.com/>
>> Tweet! http://twitter.com/GaryGregory <http://twitter.com/GaryGregory>

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