[logback-user] Setting log filename during runtime
Jenny
jenny_uy81 at yahoo.com
Fri Nov 21 00:07:51 CET 2008
Hi Ceki,
I tried your suggestion almost exactly but it didn't work for me. I put that code in my StartupServlet.init(). The only part I changed is loggerContext.reset() to loggerContext.shutdownAndReset(). I see this in the system out.
14:46:51,863 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - Active log file name: %{logFileName}
Any idea why it didn't work for me?
Jenny
--- On Fri, 11/14/08, Ceki Gulcu <listid at qos.ch> wrote:
> From: Ceki Gulcu <listid at qos.ch>
> Subject: Re: [logback-user] Setting log filename during runtime
> To: "logback users list" <logback-user at qos.ch>
> Date: Friday, November 14, 2008, 4:59 PM
> Hello Jenny,
>
> You can dynamically add properties for variable
> substitution to a logger
> context. Here is how:
>
> LoggerContext loggerContext = (LoggerContext)
> LoggerFactory.getILoggerFactory();
> JoranConfigurator jc = new JoranConfigurator();
> jc.setContext(loggerContext);
> loggerContext.reset(); // throw away default
> configuration
>
> // the next line is the whole point of the exercise
> loggerContext.putProperty("logFileName",
> valueObtainedFromLDAP);
> try {
> jc.doConfigure("path/to/a/configfile.xml");
> } catch (JoranException je) {
> je.printStackTrace();
> }
> StatusPrinter.printIfErrorsOccured(loggerContext);
>
>
> And in configfile.xml mentioned above, you would have
>
> <appender name="FILE"
> class="ch.qos.logback.core.rolling.RollingFileAppender">
> <file>%{logFileName}</file>
> ...
> </appender>
>
> HTH,
>
> Jenny wrote:
> > Hi Ceki,
> >
> > Variable substition wouldn't accomplish what I
> want to achieve... or would it? :)
> >
> > My goal is to set the log filename in a dynamic way -
> retrieve it from an LDAP configuration. I don't want it
> hardcoded in the logback.xml.
> >
> > My understanding is that variable substition only
> works if the variable comes from an external properties file
> or set in system property.
> >
> > thanks,
> > Jenny
> >
> >
> > --- On Thu, 11/13/08, Ceki Gulcu <listid at qos.ch>
> wrote:
> >
> >> From: Ceki Gulcu <listid at qos.ch>
> >> Subject: Re: [logback-user] Setting log filename
> during runtime
> >> To: "logback users list"
> <logback-user at qos.ch>
> >> Date: Thursday, November 13, 2008, 4:11 PM
> >> Hello Jenny,
> >>
> >> Why are you setting the passing value of
> >> "logFileName" MDC? Just set it as a
> >> variable, see
> http://logback.qos.ch/manual/joran.html and
> >> search for "Variable
> >> substitution".
> >>
> >> HTH,
> >>
> >> Jenny wrote:
> >>> Hi, I'm not sure if this is the preferred
> way or
> >> best practice... but what I did was extend the
> >> RollingFileAppender and override the getFile()
> method.
> >>>
> >>> and this getFile() method retrieves /
> generates the
> >> log file name.
> >>>
> >>> please let me know if you have better
> solutions.
> >>>
> >>> thanks,
> >>> Jenny
> >>>
> >>> =============================================
> >>> From: Jenny jenny_uy81 at yahoo.com
> >>> Subject: Re: [logback-user] Setting log
> filename
> >> during runtime
> >>> To: "logback users list"
> logback-user at qos.ch
> >>>
> >>> Hello,
> >>>
> >>> How can i set the log filename set during the
> init()
> >> of my StartupServlet.
> >>> I tried using MDC but it's not working for
> me.
> >>>
> >>> What happens is the file is not created.
> Instead a
> >> file with name "%exp{logFileName}" \
> >>> is created on my web server's bin
> directory.
> >>>
> >>> In my StartupServlet, I have this init method
> that
> >> calls MDC.put().
> >>> public void init() throws ServletException {
> >>> MDC.put("logFileName",
> >>
> "c:\\testlogs\\test.log");
> >>> Logger log =
> >> LoggerFactory.getLogger(StartupServlet.class);
> >>> log.info("This should be logged");
> >>> }
> >>>
> >>> In my logback.xml, I have a MDC.get().
> >>>
> >>> <appender name="FILE"
> >>
> class="ch.qos.logback.core.rolling.RollingFileAppender">
> >>> <append>true</append>
> >>> <expression
> >>
> name="logFileName">MDC.get("logFileName")</expression>
> >>> <file>%exp{logFileName}</file>
> >>> ...
>
> --
> Ceki Gülcü
> Logback: The reliable, generic, fast and flexible logging
> framework for Java.
> http://logback.qos.ch
> _______________________________________________
> Logback-user mailing list
> Logback-user at qos.ch
> http://qos.ch/mailman/listinfo/logback-user
More information about the Logback-user
mailing list