Hi Ceki,

I am just starting this work, and thought I should clarify something. I'm starting in the config package (PropertyGetter), which is different from the Appender example you mention below. Do you think I am safe to add:

private final Logger LOG = Logger.getLogger(PropertyGetter.class);

(note the lack of static here, following your lead mentioned below). And then use this Logger in place of LogLog?

cheers,

Paul
Ceki Gülcü wrote:


Howdy,

In the process of moving away from LogLog, we need to replace LogLog
statements with their Logger equivalents. For example,

  LogLog.debug("hello");

becomes

  getLogger().debug("hello");

where getLogger() is a method of the class being modified.

For all appenders deriving from AppenderSkeleton this method exists
already.

public class AppenderSkeleton implements Appender, OptionHandler {

  /*
   * An inststance specific logger.
   */
  private Logger logger;

/**
* Return an instance specifi logger to be used by the Appender itself.
* This logger is not intended to be used by Mrs. Piggy, our proverbial user,
* hence the protected keyword.
*
* @return instance specific logger
*/
protected Logger getLogger() {
if(logger == null) {
logger = LogManager.getLogger(this.getClass().getName());
}
return logger;
}


    .... rest of AppenderSkeleton code
}

In case application share the same log4j classes in memory and logging
separation achieved by a RepositorySelector, say ContextJNDISelector,
then we must be careful to use a different Logger instance depending
on the application, hence the per instance Logger in
AppenderSkeleton. Since will be only few Appender instances, there
should not be a performance significant hit.


For classes with only static methods, there is a similar pattern:

public class SomeClassWithOnlyStaticMethods {

  public static foo() {
    getLogger().debug("hello...");
  }

  /**
   * Gets a logger named after this class. Note that the instance of the
   * logger may change depending on the
   * [EMAIL PROTECTED] org.apache.log4j.spi.RepositorySelector}.
   * @return a context dependent Logger
   */
  private static Logger getLogger() {
    return LogManager.getLogger(OptionConverter.class);
  }
}

In general, log4j classes should use logging for warning or error
messages.



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



Reply via email to