Hi,
Here's one cleaner way, doing nearly everything in the configuration
file:

log4j.properties:
 log4j.appender.foo.bar.appender = ...
 log4j.logger.foo.bar = foo.bar.appender, DEBUG
 log4j.logger.foo.bar.additivity = false

 log4j.appender.foo.baz.appender = ...
 log4j.logger.foo.baz = foo.baz.appender, DEBUG
 ...

Configure log4j once via automatic configuration or whatever mechanism
you desire.

Other approaches exist as well, nearly everything would be cleaner than
the approach in your email: you don't want to configure (andWatch!)
log4j once from each servlet.

Yoav Shapira
Millennium Research Informatics


>-----Original Message-----
>From: Horry, Adam J [mailto:[EMAIL PROTECTED]
>Sent: Friday, June 11, 2004 1:06 PM
>To: [EMAIL PROTECTED]
>Subject: Separate log file per servlet
>
>The web server is configured to be one JVM for all the servlets.
>Numerous people are developing different classes. We want each
>Servlet to write to its own log.
>
>Class X
>{
> ...
> xLog = getLogger( "DEBUG" );
> ...
> xLog.info( "message" );
> ...
>}
>
>Class ServletY extends HttpServlet
>{
> ...
> xLog = getLogger( "DEBUG" );
> ...
> configureAndWatch( );
> ...
> xLog.info( "message" );
> ...
> someMethod()
> {
>  new X();
> }
>}
>
>Class ServletZ extends HttpServlet
>{
> ...
> xLog = getLogger( "DEBUG" );
> ...
> configureAndWatch( );
> ...
> xLog.info( "message" );
> ...
> someMethod()
> {
>  new X();
> }
> ...
>}
>
>log4j.properties:
> ...
> Logger name="DEBUG"
> Appender A
> ...
> Appender A
> ...
>
>Class A extends DailyRollingFileAppender
>{
> String _file = null;
>
> a( )
> {
>  super.init();
>  setFile( "" );
> }
>
> setFile( aFile )
> {
>  // Throw stack trace to figure out which servlet called you
>  ...
>  // add path and .log to get filename like /tmp/ServletY.log or
>  // /tmp/ServletZ.log
>  _file = "newFile";
> }
>}
>
>Now the problem: When the first servlet comes up, say ServletY, it
>configures and creates /tmp/ServletY.log. ServletY and X write to
>the file and everyone is happy. Now the next servlet comes up, say
>ServletZ. It configures and creates /tmp/ServletX.log. Now
>everything writes to this log but not the other.
>
>So I guess what I am looking for is how I can I do logging on a
>servlet basis that writes to a particular log. The various support
>classes need to call something generic because they do not know
>which specific servlet called them.
>
>Thanks,
>Adam
>
>[EMAIL PROTECTED]
>
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: [EMAIL PROTECTED]
>For additional commands, e-mail: [EMAIL PROTECTED]




This e-mail, including any attachments, is a confidential business communication, and 
may contain information that is confidential, proprietary and/or privileged.  This 
e-mail is intended only for the individual(s) to whom it is addressed, and may not be 
saved, copied, printed, disclosed or used by anyone else.  If you are not the(an) 
intended recipient, please immediately delete this e-mail from your computer system 
and notify the sender.  Thank you.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to