logging-log4j-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jacob Kjome <h...@visi.com>
Subject Re: best practice question: webapp relative filenames in FileAppenders
Date Fri, 12 Nov 2004 06:45:56 GMT

At 09:15 PM 11/11/2004 -0800, you wrote:
 >Thanks... I have a couple other requirements which constrain a solution
 >the solution
 >
 >The webapp (or even mulitple copies of the webapp deployed at different
 >paths) has to work when dropped into a variety of containers.   Dorking
 >with CLASSPATH and system properties are out.  I simply need someway to
 >tell the FileAppenders that relative pathnames should be relative to
 >some directory, I think.  But I need to do that *before* they try to
 >read/access their files.
 >

Well, you could still set system properties that are named based on the app 
being deployed such as "app1.log.home" -vs- "app2.log.home" for another 
app.  As long as the naming scheme is both unique and predictable, then you 
can set the properties at application startup with a value such as 
context.getRealPath("/WEB-INF/logs") and reference the property in the 
Log4j config file.

Your other option is to simply specify a relative path.  The location of 
the log files will then be determined by the location from which the JVM 
was started.  If you start the server from the command line then, 
generally, the directory in which you ran the server start command from 
will be the relative location where the log files will get written.  If you 
start as a service, you'll probably have to set the start path, otherwise 
it will default to (on win2k or winXP) C:\winnt\system32

 >And you're right... I didn't actually describe what I do today.  I don't
 >actually put my log4j.properties in the classpath.  My servlet code
 >reads the prop file from somewhere else under WEB-INF and uses a
 >PropertyConfigurator...  this all seems wrong though.
 >

Not necessarily.  If you need to do some stuff before logging gets 
configured, it makes perfect sense.  The autoconfiguration probably should 
be used if you don't have anything special to do, though.


Jake

 >-Eric
 >
 >
 >Jacob Kjome wrote:
 >
 >> Why not use a system property and reference it in your config using the
 >> usual ${someproperty} syntax.  For instance...
 >>
 >> ${catalina.home}/logs/mylog.log
 >>
 >> If you want it to be dynamic per webapp, then you can set the system
 >> property in a servlet context listener and then perform the manual
 >> configuration of Log4j.
 >>
 >> And if you are configuring manually via a startup servlet, why put
 >> log4j.properties in the classpath?  It would get picked up there
 >> automatically anyway (at least under a server using child-first
 >> classloading behavior recommended by the servlet spec) assuming
 >> log4j.jar is also in WEB-INF/lib.
 >>
 >> Jake
 >>
 >> At 05:02 PM 11/11/2004 -0800, you wrote:
 >>  >I want to use log4j to configure my webapp to write log files underneath
 >>  >it's WEB-INF directory.
 >>  >
 >>  >Today, I drop a log4j.properties file in WEB-INF/classes and I
 >>  >use code in the initialization of a servlet to programmatically fill in
 >>  >the .File property for a FileAppender (or a subclass of FileAppender)
 >>  >
 >>  >It would be nice if there was a way to specify the dir that the
 >>  >pathnames parsed in log4j.properties were relative to or some other
 >>  >technique for having the logfiles be relative to the webapp w/out
 >>  >writing code.
 >>  >
 >>  >Any advice?
 >>  >
 >>  >Thanks,
 >>  >-Eric
 >>  >
 >>  >
 >>  >---------------------------------------------------------------------
 >>  >To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
 >>  >For additional commands, e-mail: log4j-user-help@logging.apache.org
 >>  >
 >>  >
 >>
 >> ---------------------------------------------------------------------
 >> To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
 >> For additional commands, e-mail: log4j-user-help@logging.apache.org
 >
 >---------------------------------------------------------------------
 >To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
 >For additional commands, e-mail: log4j-user-help@logging.apache.org
 >
 >  


---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-user-help@logging.apache.org


Mime
View raw message