[logback-user] Setting log filename during runtime
Jenny
jenny_uy81 at yahoo.com
Fri Nov 21 03:56:00 CET 2008
Hi Ceki,
Its working now. I just replaced the "%" with "$" in the variable substitution :)
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logFileName}</file>
</appender>
thanks,
Jenny
--- On Fri, 11/21/08, Jenny <jenny_uy81 at yahoo.com> wrote:
> 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>
> Date: Friday, November 21, 2008, 7:07 AM
> 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>
More information about the Logback-user
mailing list