[slf4j-dev] SLF4J Wrapper class line number incorrect

Ralph Goers rgoers at apache.org
Fri Feb 27 08:10:08 CET 2009


You do something like this:

public class MyLogger {

   private static final String FQCN = MyLogger.class.getName();

   private LEVEL infoLevel = LEVEL.FINE;
   private LEVEL debugLevel = LEVEL.FINE;

   private Logger logger;

   public MyLogger(Class clazz) {
     logger = new LoggerWrapper(LoggerFactory.getLogger(clazz), FQCN);
   }

   public void info(LEVEL level, String format, Object[] argArray) {
     if (!logger.isInfoEnabled() || !(level.ordinal() <=  
infoLevel.ordinal())) {
      return;
     }
     if (logger.instanceofLAL) {
       String formattedMessage = MessageFormatter.arrayFormat(format,  
argArray);
       ((LocationAwareLogger) logger).log(null, FQCN,
           LocationAwareLogger.INFO_INT, formattedMessage, null);
     } else {
       logger.info(marker, format, arg1, arg2);
     }
   }
}

On Feb 26, 2009, at 5:49 PM, Ashley Westwell wrote:

> Hey Ralph
>
> Took a look at the call and the wrapper class. My issue I dont want  
> to esxpose the methods defined in the Logger interface. I only want  
> to expose my methods for logging. Thats why I did not implement the  
> Logger interface. Can you suggest how I could deal with the line  
> number issue with out implementing Logger?
>
> Thanks
>
> From: Ralph Goers [mailto:rgoers at apache.org]
> To: slf4j developers list [mailto:dev at slf4j.org]
> Sent: Fri, 20 Feb 2009 17:44:38 -0500
> Subject: Re: [slf4j-dev] SLF4J Wrapper class line number incorrect
>
> Take a look at XLogger in slf4j-ext.
>
> Out of curiosity, what do you need the wrapper for?
>
> Ralph
>
> On Feb 20, 2009, at 2:58 PM, Ashley Westwell wrote:
>
>> Good Afternoon
>>
>> I have created a wrapper layer for SLF4J (Listed below). However  
>> the line number are incorrect, it is using the line numbers in the  
>> wrapper class not the class that I called the wrapper from. What is  
>> the correct way to fix this?
>>
>> package com.test.commons.logging;
>>
>> import com.test.commons.logging.LoggerFactory.LEVEL;
>>
>> public class Logger {
>>
>>     private LEVEL infoLevel = LEVEL.FINE;
>>     private LEVEL debugLevel = LEVEL.FINE;
>>
>>     private org.slf4j.Logger logger = null;
>>
>>     public Logger(Class clazz, LEVEL infoLevel, LEVEL debugLevel) {
>>         this.infoLevel = infoLevel;
>>         this.debugLevel = debugLevel;
>>         logger = org.slf4j.LoggerFactory.getLogger(clazz);
>>
>>     }
>>
>>     public Logger(String name, LEVEL infoLevel, LEVEL debugLevel) {
>>         this.infoLevel = infoLevel;
>>         this.debugLevel = debugLevel;
>>         logger = org.slf4j.LoggerFactory.getLogger(name);
>>     }
>>
>>     public void info(String message) {
>>         logger.info(message);
>>     }
>>
>>     public void info(String message, Throwable throwable) {
>>         logger.info(message, throwable);
>>     }
>>
>>     public void info(String message, Object[] objects) {
>>         if(logger.isInfoEnabled()) {
>>             logger.info(message, objects);
>>         }
>>     }
>>
>>     public void info(LEVEL level, String message) {
>>         if((logger.isInfoEnabled()) && (level.ordinal() <=  
>> infoLevel.ordinal())) {
>>             logger.info(message);
>>         }
>>     }
>>
>>     public void info(LEVEL level, String message, Throwable  
>> throwable) {
>>         if((logger.isInfoEnabled()) && (level.ordinal() <=  
>> infoLevel.ordinal())) {
>>             logger.info(message, throwable);
>>         }
>>     }
>>
>>     public void info(LEVEL level, String message, Object[] objects) {
>>         if((logger.isInfoEnabled()) && (level.ordinal() <=  
>> infoLevel.ordinal())) {
>>             logger.info(message, objects);
>>         }
>>     }
>>
>>     // Debug messages.
>>     public void debug(String message) {
>>         if(logger.isDebugEnabled()) {
>>             logger.debug(message);
>>         }
>>
>>     }
>>     public void debug(String message, Throwable throwable) {
>>         if(logger.isDebugEnabled()) {
>>             logger.debug(message, throwable);
>>         }
>>     }
>>
>>     public void debug(String message, Object[] objects) {
>>         if(logger.isDebugEnabled()) {
>>             logger.debug(message, objects);
>>         }
>>     }
>>
>>     public void debug(LEVEL level, String message) {
>>         if((logger.isDebugEnabled()) && (level.ordinal() <=  
>> debugLevel.ordinal())) {
>>                 logger.debug(message);
>>         }
>>     }
>>
>>     public void debug(LEVEL level, String message, Throwable  
>> throwable) {
>>         if((logger.isDebugEnabled()) && (level.ordinal() <=  
>> debugLevel.ordinal())) {
>>             logger.debug(message, throwable);
>>         }
>>     }
>>
>>     public void debug(LEVEL level, String message, Object[]  
>> objects) {
>>         if((logger.isDebugEnabled()) && (level.ordinal() <=  
>> debugLevel.ordinal())) {
>>             logger.debug(message, objects);
>>         }
>>     }
>>
>>     // The highest value; intended for extremely important messages  
>> (e.g. fatal program errors).
>>     public void severe(String message) {
>>         if(logger.isErrorEnabled()) {
>>             logger.error(message);
>>         }
>>     }
>>
>>     public void severe(String message, Throwable throwable) {
>>         if(logger.isErrorEnabled()) {
>>             logger.error(message, throwable);
>>         }
>>     }
>>
>>     public void severe(String message, Object[] objects) {
>>         if(logger.isErrorEnabled()) {
>>             logger.error(message, objects);
>>         }
>>     }
>>
>>     // Intended for warning messages.
>>     public void warning(String message) {
>>         if(logger.isWarnEnabled()) {
>>             logger.warn(message);
>>         }
>>     }
>>
>>     public void warning(String message, Throwable throwable) {
>>         if(logger.isWarnEnabled()) {
>>             logger.warn(message, throwable);
>>         }
>>     }
>>
>>     public void warning(String message, Object[] objects) {
>>         if(logger.isWarnEnabled()) {
>>             logger.warn(message, objects);
>>         }
>>     }
>>
>> }
>>
>>
>>
>> Notice: This email is confidential.  If you are not the intended  
>> recipient, please notify the sender by return email and delete this  
>> message from your mail box without reading or copying it or any  
>> attachments.
>>
>> Attention: Ce courriel est confidentiel. Si vous n'êtes pas le  
>> destinataire prévu, veuillez en informer l'expéditeur par le  
>> courriel de retour et le supprimer immédiatement sans le lire ou le  
>> copier (incluant les pièces jointes,  le cas échéant).
>> _______________________________________________
>> dev mailing list
>> dev at slf4j.org
>> http://www.slf4j.org/mailman/listinfo/dev
>
>
>
>
>
>
> Notice: This email is confidential.  If you are not the intended  
> recipient, please notify the sender by return email and delete this  
> message from your mail box without reading or copying it or any  
> attachments.
>
> Attention: Ce courriel est confidentiel. Si vous n'êtes pas le  
> destinataire prévu, veuillez en informer l'expéditeur par le  
> courriel de retour et le supprimer immédiatement sans le lire ou le  
> copier (incluant les pièces jointes,  le cas échéant).
> _______________________________________________
> dev mailing list
> dev at slf4j.org
> http://www.slf4j.org/mailman/listinfo/dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://qos.ch/pipermail/slf4j-dev/attachments/20090226/4ac2f49d/attachment.htm>


More information about the slf4j-dev mailing list