[logback-user] Log file path set at runtime

David Roussel nabble at diroussel.xsmail.com
Thu Aug 5 21:30:09 CEST 2010


It sounds obvious but you have to initialise your system property before you initialise logback. 

Logback initialises the first time LoggerFactory.getLogger() is called. So if you have you logger as a static member in your main class then it's going to get initialised too soon. 

In your main class you can have a logger member, but have it initially set to null. In your main method work out you app base property. Then do 'log = LoggerFactory.getLogger(...)'. 

I do some something like this and it works for me. 


On 5 Aug 2010, at 16:29, fudmail <fudmail at gmail.com> wrote:

> I believe my logback configuration issue should be common but I am
> unable to find a satisfactory resolution.
> I'll first describe what I'm trying to achieve.
> I have a simple application that is deployed somewhere on the file
> system as follows:
> MyApp
> |- bin
>   |- myExecJar.jar
> |- lib
> |- conf
>   |- logback.xml
> |- logs
> At runtime my application computes the absolute path of the MyApp
> directory (e.g., /home/user1/apps/MyApp) using reflection. A system
> property called "app.base.path" is set to this computed path.
> This path is computed so that some other misc. paths are resolved
> relative to the value of "app.base.path" and are independent of the
> working directory (i.e., the value of the "user.dir" property) that
> the application was started from.
> In my logback.xml configuration file I have the line
> <file>${app.base.path}/logs/logback.log</file>
> to specify where the log file will be written to.
> My problem is this. Upon running "java -jar myExecJar.jar", the
> logback.xml file is read from the classpath (set in the jar manifest)
> and processed before my code gets the chance to programmatically set
> the "app.base.path" property. I therefore end up with a directory
> being created as follows
> "/home/user1/apps/MyApp/bin/app.base.path_IS_UNDEFINED
> logs/logback.log".
> Any suggestions on the best way to achieve what I'm trying to do in logback?
> Thank you.
> _______________________________________________
> Logback-user mailing list
> Logback-user at qos.ch
> http://qos.ch/mailman/listinfo/logback-user

More information about the Logback-user mailing list