[ 
https://issues.apache.org/jira/browse/LOG4J2-486?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13864330#comment-13864330
 ] 

Joe Merten commented on LOG4J2-486:
-----------------------------------

Ok, for the initial problem »add custom info at the start of each logfile« we 
are currently discussing 2 approaches:
# extend DefaultRolloverStrategy (with wrapping RolloverDescriptor etc)
# extend PatternLayout (to setHeader/Footer, currently no dynamic contents 
(like uptime) possible)

For the moment, I'm still discovering approach 1 (extend 
DefaultRolloverStrategy), were I do my custom stuff in the overridden 
Action.execute():
{code:borderStyle=solid}
    static class MyAction implements Action {
        ...
        @Override public boolean execute() throws IOException {
            boolean ret = delegate.execute();

            try {
                BufferedWriter writer = null;
                try {
                    writer = new BufferedWriter(new FileWriter(new 
File(fileName), true));
                    writer.write("*************************\n");
                    writer.write("*** Hello new logfile ***\n");
                    writer.write("*************************\n");
                } finally {
                    if (writer != null)
                        writer.close();
                }
            } catch (Throwable e) {
                logger.error("Writing to top of new logfile \"" + fileName + 
"\" with", e);
            }

            return ret;
        }
{code}

That results in logfiles like:
{code}
*************************
*** Hello new logfile ***
*************************
2014-01-07 15:07:56,715 INFO  [Tts XmlServer] tts.XmlServer 
(XmlServer.java:119) - XmlServer listens on port 42120
2014-01-07 15:07:56,730 INFO  [Tts XmlServer] tts.XmlServer 
(XmlServer.java:119) - Connected
{code}

But I want my logfiles like this:
{noformat}
2014-01-07 15:07:56,700 INFO  [Thread] package.class - *************************
2014-01-07 15:07:56,705 INFO  [Thread] package.class - *** Hello new logfile ***
2014-01-07 15:07:56,710 INFO  [Thread] package.class - *************************
2014-01-07 15:07:56,715 INFO  [Tts XmlServer] tts.XmlServer - XmlServer listens 
on port 42120
2014-01-07 15:07:56,730 INFO  [Tts XmlServer] tts.XmlServer - Connected
{noformat}

Therefor, I try to access the PatternLayout which is configured for related 
appender, so that I can use it inside my implementation of Action.execute() to 
format my messages.


> RollingFile Appender - add custom info at the start of each logfile
> -------------------------------------------------------------------
>
>                 Key: LOG4J2-486
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-486
>             Project: Log4j 2
>          Issue Type: Question
>          Components: Appenders
>    Affects Versions: 2.0-beta9
>         Environment: Java 1.7, Linux
>            Reporter: Joe Merten
>         Attachments: MyRolloverStrategy.java, log4j2.xml
>
>
> I post this question here because of a hint of Remko Popma.
> See also:
> * 
> http://apache-logging.6191.n7.nabble.com/log4j2-getting-started-amp-rolling-files-tt8406.html#a42402
> * 
> http://stackoverflow.com/questions/20819376/log4j2-rollingfile-appender-add-custom-info-at-the-start-of-each-logfile
> I want to add some custom info at the top of each logfile, like the version 
> string of my application, the application uptime and the system uptime. And 
> even writing some »bye, bye / eof« to the bottom of the just closed logfile 
> would also be fine.
> Because there is no appropriate hook or callback to get notified when the 
> RollingFileAppander is creating / has created a new file, so that I can put 
> my things at first into these new logfile, I tried to extend 
> DefaultRolloverStrategy. But currently, I stuck at some points.
> Seems that I have to deal with {{@Plugin}} and {{@PluginFactory}}. My try 
> with the attached log4j2.xml and MyRolloverStrategy.java compiles without 
> errors and warnings. But when I start the application, I get this error 
> message:
> {{2014-01-05 23:22:05,876 ERROR RollingFile contains an invalid element or 
> attribute "MyRolloverStrategy"}}
> And then the next step would be: "how to write to the logfiles within my 
> rollover method?"
> log4j2.xml :
> {code}
> <?xml version="1.0" encoding="UTF-8"?>
> <Configuration>
>   <Properties>
>     <Property name="projectPrefix">Tts</Property>
>     <Property name="rawPattern">%d %-5p [%t] %C{2} (%F:%L) - %m%n</Property>
>     <Property name="coloredPattern">%d %highlight{%-5p}{FATAL=bright red, 
> ERROR=red, WARN=yellow, INFO=cyan, DEBUG=green, TRACE=bright blue} 
> %style{[%t] %C{2} (%F:%L) -}{bright,black} %m%n</Property>
>     <Property name="coloredShortPattern">%d %highlight{%-5p}{FATAL=bright 
> red, ERROR=red, WARN=yellow, INFO=cyan, DEBUG=green, TRACE=bright blue} 
> %style{[%t] -}{bright,black} %m%n</Property>
>     <Property name="fileName">Log/${projectPrefix}.log</Property>
>     <Property name="filePattern">Log/${projectPrefix}-%i.log</Property>
>   </Properties>
>   <Appenders>
>     <Console name="Stdout" target="SYSTEM_OUT">
>       <PatternLayout pattern="${coloredPattern}"/>
>     </Console>
>     <RollingFile name="Logfile" fileName="${fileName}" 
> filePattern="${filePattern}">
>       <PatternLayout pattern="${rawPattern}"/>
>       <Policies>
>         <SizeBasedTriggeringPolicy size="16 MB"/>
>       </Policies>
>       <eeo.toolbox.MyRolloverStrategy fileIndex="min" max="16"/>
>     </RollingFile>
>   </Appenders>
>   <Loggers>
>     <Root level="info">
>       <AppenderRef ref="Stdout"/>
>       <AppenderRef ref="Logfile"/>
>     </Root>
>   </Loggers>
> </Configuration>
> {code}



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org
For additional commands, e-mail: log4j-dev-h...@logging.apache.org

Reply via email to