I tried that but the delima comes from the shared class.

We want the instance of Class X that ServletY is using to write to the
/tmp/ServletY.log
and the instance of Class X that ServletZ is using to write to the
/tmp/ServletZ.log.

Obviously I have struggled trying to prototype an example that would do
it.

Also with the multiple configureAndWatch(). How can you reduce this when
the order of
the servlets invocation might be random. Higher level wrapper class?

Thanks,
Adam 

-----Original Message-----
From: Shapira, Yoav [mailto:[EMAIL PROTECTED] 
Sent: Friday, June 11, 2004 1:24 PM
To: Log4J Users List
Subject: RE: Separate log file per servlet



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]


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

Reply via email to