Where and how do you call your LoggingConfiguration class exactly?

The code "private static Logger log = Logger.getLogger(Foo.Bar.class);" is 
called at class loading, before any "real" code is executed. 

In one JVM there is only one LogManager which has per default only one logger 
repository. So you will add a new appender to the very same root logger each 
time you call LoggingConfiguration().  

I dont really understand your "several independent processes" meaning. One JVM 
starts annother JVM? Or just other main classes? And, if the latter, are they 
running in its own thread context? If you want more help you have to clarify 
this.

Heri

> -----Original Message-----
> From: Dave Gomboc [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, June 28, 2005 7:46 PM
> To: [email protected]
> Subject: new user question re: configuring log4j via code
> 
> 
> I have code to launch several independent processes, which then set up
> socket connections with each other.  I'd like to use log4j to acquire 
> execution trace information to assist me in finding bugs in that code.
> 
> I have a LoggingConfiguration() that I call at the start of each
> independent process to set up logging.  Currently the 
> filename is fixed,
> but I actually want to use the process id number as the name 
> of the log
> file (I just haven't done that yet).
> 
> Currently it's hardwired, but the file c:\trace.log doesn't showed up.
> I assume I'm missing something simple?  Almost all of the 
> examples I have 
> seen use a configuration file (log4j.properties) instead of 
> code setup, 
> but I didn't want to do this because I wanted the name of the 
> logfile to 
> include the process id.
> 
> Here's LoggingConfiguration:
> 
> [package statement]
> 
> import org.apache.log4j.FileAppender;
> import org.apache.log4j.PatternLayout;
> import org.apache.log4j.Logger;
> 
> 
> public class LoggingConfiguration {
> 
>     LoggingConfiguration() {
> 
>         // Dump lots for now; figure out what I don't need later.
>         PatternLayout layout = new PatternLayout("%d %x %t %p 
> %l %throwable: %m%n");
> 
>         FileAppender fileAppender = new FileAppender();
>         fileAppender.setFile("c:\\trace.log");
>         fileAppender.setAppend(true);
>         fileAppender.setImmediateFlush(true);
>         fileAppender.setLayout(layout);
>         fileAppender.activateOptions();
> 
>         Logger log = Logger.getRootLogger();
>         log.addAppender(fileAppender);
>     };
> 
> };
> 
> 
> And in other files, I do:
> 
> [package...]
> [imports...]
> 
> public class Foo.Bar {
> 
>     private static Logger log = Logger.getLogger(Foo.Bar.class);
> 
> [and for each routine I am interested in]
> 
>     public boolean someRoutine() {
> 
>         log.trace("Entered.");
> 
>         [boolean result = ....;]
> 
>         log.trace("Exited: result = |{}|.", result);
>     };
> 
> };
> 
> 
> 1) What am I missing to make the log file (files, once I start using 
> the process id for the name) show up?
> 2) Is there anything else an experienced user sees that I am doing 
> incorrectly?
> 
> Thanks,
> Dave
> 
> 
> ---------------------------------------------------------------------
> 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