Home | History | Annotate | Download | only in ext
      1 /**
      2  * Copyright (c) 2004-2011 QOS.ch
      3  * All rights reserved.
      4  *
      5  * Permission is hereby granted, free  of charge, to any person obtaining
      6  * a  copy  of this  software  and  associated  documentation files  (the
      7  * "Software"), to  deal in  the Software without  restriction, including
      8  * without limitation  the rights to  use, copy, modify,  merge, publish,
      9  * distribute,  sublicense, and/or sell  copies of  the Software,  and to
     10  * permit persons to whom the Software  is furnished to do so, subject to
     11  * the following conditions:
     12  *
     13  * The  above  copyright  notice  and  this permission  notice  shall  be
     14  * included in all copies or substantial portions of the Software.
     15  *
     16  * THE  SOFTWARE IS  PROVIDED  "AS  IS", WITHOUT  WARRANTY  OF ANY  KIND,
     17  * EXPRESS OR  IMPLIED, INCLUDING  BUT NOT LIMITED  TO THE  WARRANTIES OF
     18  * MERCHANTABILITY,    FITNESS    FOR    A   PARTICULAR    PURPOSE    AND
     19  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
     20  * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
     21  * OF CONTRACT, TORT OR OTHERWISE,  ARISING FROM, OUT OF OR IN CONNECTION
     22  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
     23  *
     24  */
     25 package org.slf4j.ext;
     26 
     27 import org.slf4j.Logger;
     28 import org.slf4j.Marker;
     29 import org.slf4j.helpers.FormattingTuple;
     30 import org.slf4j.helpers.MessageFormatter;
     31 import org.slf4j.spi.LocationAwareLogger;
     32 
     33 /**
     34  * A helper class wrapping an {@link org.slf4j.Logger} instance preserving
     35  * location information if the wrapped instance supports it.
     36  *
     37  * @author Ralph Goers
     38  * @author Ceki Gülcü
     39  */
     40 public class LoggerWrapper implements Logger {
     41 
     42     // To ensure consistency between two instances sharing the same name
     43     // (homonyms)
     44     // a LoggerWrapper should not contain any state beyond
     45     // the Logger instance it wraps.
     46     // Note that 'instanceofLAL' directly depends on Logger.
     47     // fqcn depend on the caller, but its value would not be different
     48     // between successive invocations of a factory class
     49 
     50     protected final Logger logger;
     51     final String fqcn;
     52     // is this logger instance a LocationAwareLogger
     53     protected final boolean instanceofLAL;
     54 
     55     public LoggerWrapper(Logger logger, String fqcn) {
     56         this.logger = logger;
     57         this.fqcn = fqcn;
     58         if (logger instanceof LocationAwareLogger) {
     59             instanceofLAL = true;
     60         } else {
     61             instanceofLAL = false;
     62         }
     63     }
     64 
     65     /**
     66      * Delegate to the appropriate method of the underlying logger.
     67      */
     68     public boolean isTraceEnabled() {
     69         return logger.isTraceEnabled();
     70     }
     71 
     72     /**
     73      * Delegate to the appropriate method of the underlying logger.
     74      */
     75     public boolean isTraceEnabled(Marker marker) {
     76         return logger.isTraceEnabled(marker);
     77     }
     78 
     79     /**
     80      * Delegate to the appropriate method of the underlying logger.
     81      */
     82     public void trace(String msg) {
     83         if (!logger.isTraceEnabled())
     84             return;
     85 
     86         if (instanceofLAL) {
     87             ((LocationAwareLogger) logger).log(null, fqcn, LocationAwareLogger.TRACE_INT, msg, null, null);
     88         } else {
     89             logger.trace(msg);
     90         }
     91     }
     92 
     93     /**
     94      * Delegate to the appropriate method of the underlying logger.
     95      */
     96     public void trace(String format, Object arg) {
     97         if (!logger.isTraceEnabled())
     98             return;
     99 
    100         if (instanceofLAL) {
    101             String formattedMessage = MessageFormatter.format(format, arg).getMessage();
    102             ((LocationAwareLogger) logger).log(null, fqcn, LocationAwareLogger.TRACE_INT, formattedMessage, new Object[] { arg }, null);
    103         } else {
    104             logger.trace(format, arg);
    105         }
    106     }
    107 
    108     /**
    109      * Delegate to the appropriate method of the underlying logger.
    110      */
    111     public void trace(String format, Object arg1, Object arg2) {
    112         if (!logger.isTraceEnabled())
    113             return;
    114 
    115         if (instanceofLAL) {
    116             String formattedMessage = MessageFormatter.format(format, arg1, arg2).getMessage();
    117             ((LocationAwareLogger) logger).log(null, fqcn, LocationAwareLogger.TRACE_INT, formattedMessage, new Object[] { arg1, arg2 }, null);
    118         } else {
    119             logger.trace(format, arg1, arg2);
    120         }
    121     }
    122 
    123     /**
    124      * Delegate to the appropriate method of the underlying logger.
    125      */
    126     public void trace(String format, Object... args) {
    127         if (!logger.isTraceEnabled())
    128             return;
    129 
    130         if (instanceofLAL) {
    131             String formattedMessage = MessageFormatter.arrayFormat(format, args).getMessage();
    132             ((LocationAwareLogger) logger).log(null, fqcn, LocationAwareLogger.TRACE_INT, formattedMessage, args, null);
    133         } else {
    134             logger.trace(format, args);
    135         }
    136     }
    137 
    138     /**
    139      * Delegate to the appropriate method of the underlying logger.
    140      */
    141     public void trace(String msg, Throwable t) {
    142         if (!logger.isTraceEnabled())
    143             return;
    144 
    145         if (instanceofLAL) {
    146             ((LocationAwareLogger) logger).log(null, fqcn, LocationAwareLogger.TRACE_INT, msg, null, t);
    147         } else {
    148             logger.trace(msg, t);
    149         }
    150     }
    151 
    152     /**
    153      * Delegate to the appropriate method of the underlying logger.
    154      */
    155     public void trace(Marker marker, String msg) {
    156         if (!logger.isTraceEnabled(marker))
    157             return;
    158         if (instanceofLAL) {
    159             ((LocationAwareLogger) logger).log(marker, fqcn, LocationAwareLogger.TRACE_INT, msg, null, null);
    160         } else {
    161             logger.trace(marker, msg);
    162         }
    163     }
    164 
    165     /**
    166      * Delegate to the appropriate method of the underlying logger.
    167      */
    168     public void trace(Marker marker, String format, Object arg) {
    169         if (!logger.isTraceEnabled(marker))
    170             return;
    171         if (instanceofLAL) {
    172             String formattedMessage = MessageFormatter.format(format, arg).getMessage();
    173             ((LocationAwareLogger) logger).log(marker, fqcn, LocationAwareLogger.TRACE_INT, formattedMessage, new Object[] { arg }, null);
    174         } else {
    175             logger.trace(marker, format, arg);
    176         }
    177     }
    178 
    179     /**
    180      * Delegate to the appropriate method of the underlying logger.
    181      */
    182     public void trace(Marker marker, String format, Object arg1, Object arg2) {
    183         if (!logger.isTraceEnabled(marker))
    184             return;
    185         if (instanceofLAL) {
    186             String formattedMessage = MessageFormatter.format(format, arg1, arg2).getMessage();
    187             ((LocationAwareLogger) logger).log(marker, fqcn, LocationAwareLogger.TRACE_INT, formattedMessage, new Object[] { arg1, arg2 }, null);
    188         } else {
    189             logger.trace(marker, format, arg1, arg2);
    190         }
    191     }
    192 
    193     /**
    194      * Delegate to the appropriate method of the underlying logger.
    195      */
    196     public void trace(Marker marker, String format, Object... args) {
    197         if (!logger.isTraceEnabled(marker))
    198             return;
    199         if (instanceofLAL) {
    200             String formattedMessage = MessageFormatter.arrayFormat(format, args).getMessage();
    201             ((LocationAwareLogger) logger).log(marker, fqcn, LocationAwareLogger.TRACE_INT, formattedMessage, args, null);
    202         } else {
    203             logger.trace(marker, format, args);
    204         }
    205     }
    206 
    207     /**
    208      * Delegate to the appropriate method of the underlying logger.
    209      */
    210     public void trace(Marker marker, String msg, Throwable t) {
    211         if (!logger.isTraceEnabled(marker))
    212             return;
    213         if (instanceofLAL) {
    214             ((LocationAwareLogger) logger).log(marker, fqcn, LocationAwareLogger.TRACE_INT, msg, null, t);
    215         } else {
    216             logger.trace(marker, msg, t);
    217         }
    218     }
    219 
    220     /**
    221      * Delegate to the appropriate method of the underlying logger.
    222      */
    223     public boolean isDebugEnabled() {
    224         return logger.isDebugEnabled();
    225     }
    226 
    227     /**
    228      * Delegate to the appropriate method of the underlying logger.
    229      */
    230     public boolean isDebugEnabled(Marker marker) {
    231         return logger.isDebugEnabled(marker);
    232     }
    233 
    234     /**
    235      * Delegate to the appropriate method of the underlying logger.
    236      */
    237     public void debug(String msg) {
    238         if (!logger.isDebugEnabled())
    239             return;
    240 
    241         if (instanceofLAL) {
    242             ((LocationAwareLogger) logger).log(null, fqcn, LocationAwareLogger.DEBUG_INT, msg, null, null);
    243         } else {
    244             logger.debug(msg);
    245         }
    246     }
    247 
    248     /**
    249      * Delegate to the appropriate method of the underlying logger.
    250      */
    251     public void debug(String format, Object arg) {
    252         if (!logger.isDebugEnabled())
    253             return;
    254 
    255         if (instanceofLAL) {
    256             String formattedMessage = MessageFormatter.format(format, arg).getMessage();
    257             ((LocationAwareLogger) logger).log(null, fqcn, LocationAwareLogger.DEBUG_INT, formattedMessage, new Object[] { arg }, null);
    258         } else {
    259             logger.debug(format, arg);
    260         }
    261     }
    262 
    263     /**
    264      * Delegate to the appropriate method of the underlying logger.
    265      */
    266     public void debug(String format, Object arg1, Object arg2) {
    267         if (!logger.isDebugEnabled())
    268             return;
    269 
    270         if (instanceofLAL) {
    271             String formattedMessage = MessageFormatter.format(format, arg1, arg2).getMessage();
    272             ((LocationAwareLogger) logger).log(null, fqcn, LocationAwareLogger.DEBUG_INT, formattedMessage, new Object[] { arg1, arg2 }, null);
    273         } else {
    274             logger.debug(format, arg1, arg2);
    275         }
    276     }
    277 
    278     /**
    279      * Delegate to the appropriate method of the underlying logger.
    280      */
    281     public void debug(String format, Object... argArray) {
    282         if (!logger.isDebugEnabled())
    283             return;
    284 
    285         if (instanceofLAL) {
    286             FormattingTuple ft = MessageFormatter.arrayFormat(format, argArray);
    287             ((LocationAwareLogger) logger).log(null, fqcn, LocationAwareLogger.DEBUG_INT, ft.getMessage(), ft.getArgArray(), ft.getThrowable());
    288         } else {
    289             logger.debug(format, argArray);
    290         }
    291     }
    292 
    293     /**
    294      * Delegate to the appropriate method of the underlying logger.
    295      */
    296     public void debug(String msg, Throwable t) {
    297         if (!logger.isDebugEnabled())
    298             return;
    299 
    300         if (instanceofLAL) {
    301             ((LocationAwareLogger) logger).log(null, fqcn, LocationAwareLogger.DEBUG_INT, msg, null, t);
    302         } else {
    303             logger.debug(msg, t);
    304         }
    305     }
    306 
    307     /**
    308      * Delegate to the appropriate method of the underlying logger.
    309      */
    310     public void debug(Marker marker, String msg) {
    311         if (!logger.isDebugEnabled(marker))
    312             return;
    313         if (instanceofLAL) {
    314             ((LocationAwareLogger) logger).log(marker, fqcn, LocationAwareLogger.DEBUG_INT, msg, null, null);
    315         } else {
    316             logger.debug(marker, msg);
    317         }
    318     }
    319 
    320     /**
    321      * Delegate to the appropriate method of the underlying logger.
    322      */
    323     public void debug(Marker marker, String format, Object arg) {
    324         if (!logger.isDebugEnabled(marker))
    325             return;
    326         if (instanceofLAL) {
    327             FormattingTuple ft = MessageFormatter.format(format, arg);
    328             ((LocationAwareLogger) logger).log(marker, fqcn, LocationAwareLogger.DEBUG_INT, ft.getMessage(), ft.getArgArray(), ft.getThrowable());
    329         } else {
    330             logger.debug(marker, format, arg);
    331         }
    332     }
    333 
    334     /**
    335      * Delegate to the appropriate method of the underlying logger.
    336      */
    337     public void debug(Marker marker, String format, Object arg1, Object arg2) {
    338         if (!logger.isDebugEnabled(marker))
    339             return;
    340         if (instanceofLAL) {
    341             String formattedMessage = MessageFormatter.format(format, arg1, arg2).getMessage();
    342             ((LocationAwareLogger) logger).log(marker, fqcn, LocationAwareLogger.DEBUG_INT, formattedMessage, new Object[] { arg1, arg2 }, null);
    343         } else {
    344             logger.debug(marker, format, arg1, arg2);
    345         }
    346     }
    347 
    348     /**
    349      * Delegate to the appropriate method of the underlying logger.
    350      */
    351     public void debug(Marker marker, String format, Object... argArray) {
    352         if (!logger.isDebugEnabled(marker))
    353             return;
    354         if (instanceofLAL) {
    355 
    356             FormattingTuple ft = MessageFormatter.arrayFormat(format, argArray);
    357             ((LocationAwareLogger) logger).log(marker, fqcn, LocationAwareLogger.DEBUG_INT, ft.getMessage(), argArray, ft.getThrowable());
    358         } else {
    359             logger.debug(marker, format, argArray);
    360         }
    361     }
    362 
    363     /**
    364      * Delegate to the appropriate method of the underlying logger.
    365      */
    366     public void debug(Marker marker, String msg, Throwable t) {
    367         if (!logger.isDebugEnabled(marker))
    368             return;
    369         if (instanceofLAL) {
    370             ((LocationAwareLogger) logger).log(marker, fqcn, LocationAwareLogger.DEBUG_INT, msg, null, t);
    371         } else {
    372             logger.debug(marker, msg, t);
    373         }
    374     }
    375 
    376     /**
    377      * Delegate to the appropriate method of the underlying logger.
    378      */
    379     public boolean isInfoEnabled() {
    380         return logger.isInfoEnabled();
    381     }
    382 
    383     /**
    384      * Delegate to the appropriate method of the underlying logger.
    385      */
    386     public boolean isInfoEnabled(Marker marker) {
    387         return logger.isInfoEnabled(marker);
    388     }
    389 
    390     /**
    391      * Delegate to the appropriate method of the underlying logger.
    392      */
    393     public void info(String msg) {
    394         if (!logger.isInfoEnabled())
    395             return;
    396 
    397         if (instanceofLAL) {
    398             ((LocationAwareLogger) logger).log(null, fqcn, LocationAwareLogger.INFO_INT, msg, null, null);
    399         } else {
    400             logger.info(msg);
    401         }
    402     }
    403 
    404     /**
    405      * Delegate to the appropriate method of the underlying logger.
    406      */
    407     public void info(String format, Object arg) {
    408         if (!logger.isInfoEnabled())
    409             return;
    410 
    411         if (instanceofLAL) {
    412             String formattedMessage = MessageFormatter.format(format, arg).getMessage();
    413             ((LocationAwareLogger) logger).log(null, fqcn, LocationAwareLogger.INFO_INT, formattedMessage, new Object[] { arg }, null);
    414         } else {
    415             logger.info(format, arg);
    416         }
    417     }
    418 
    419     /**
    420      * Delegate to the appropriate method of the underlying logger.
    421      */
    422     public void info(String format, Object arg1, Object arg2) {
    423         if (!logger.isInfoEnabled())
    424             return;
    425 
    426         if (instanceofLAL) {
    427             String formattedMessage = MessageFormatter.format(format, arg1, arg2).getMessage();
    428             ((LocationAwareLogger) logger).log(null, fqcn, LocationAwareLogger.INFO_INT, formattedMessage, new Object[] { arg1, arg2 }, null);
    429         } else {
    430             logger.info(format, arg1, arg2);
    431         }
    432     }
    433 
    434     /**
    435      * Delegate to the appropriate method of the underlying logger.
    436      */
    437     public void info(String format, Object... args) {
    438         if (!logger.isInfoEnabled())
    439             return;
    440 
    441         if (instanceofLAL) {
    442             String formattedMessage = MessageFormatter.arrayFormat(format, args).getMessage();
    443             ((LocationAwareLogger) logger).log(null, fqcn, LocationAwareLogger.INFO_INT, formattedMessage, args, null);
    444         } else {
    445             logger.info(format, args);
    446         }
    447     }
    448 
    449     /**
    450      * Delegate to the appropriate method of the underlying logger.
    451      */
    452     public void info(String msg, Throwable t) {
    453         if (!logger.isInfoEnabled())
    454             return;
    455 
    456         if (instanceofLAL) {
    457             ((LocationAwareLogger) logger).log(null, fqcn, LocationAwareLogger.INFO_INT, msg, null, t);
    458         } else {
    459             logger.info(msg, t);
    460         }
    461     }
    462 
    463     /**
    464      * Delegate to the appropriate method of the underlying logger.
    465      */
    466     public void info(Marker marker, String msg) {
    467         if (!logger.isInfoEnabled(marker))
    468             return;
    469         if (instanceofLAL) {
    470             ((LocationAwareLogger) logger).log(marker, fqcn, LocationAwareLogger.INFO_INT, msg, null, null);
    471         } else {
    472             logger.info(marker, msg);
    473         }
    474     }
    475 
    476     /**
    477      * Delegate to the appropriate method of the underlying logger.
    478      */
    479     public void info(Marker marker, String format, Object arg) {
    480         if (!logger.isInfoEnabled(marker))
    481             return;
    482         if (instanceofLAL) {
    483             String formattedMessage = MessageFormatter.format(format, arg).getMessage();
    484             ((LocationAwareLogger) logger).log(marker, fqcn, LocationAwareLogger.INFO_INT, formattedMessage, new Object[] { arg }, null);
    485         } else {
    486             logger.info(marker, format, arg);
    487         }
    488     }
    489 
    490     /**
    491      * Delegate to the appropriate method of the underlying logger.
    492      */
    493     public void info(Marker marker, String format, Object arg1, Object arg2) {
    494         if (!logger.isInfoEnabled(marker))
    495             return;
    496         if (instanceofLAL) {
    497             String formattedMessage = MessageFormatter.format(format, arg1, arg2).getMessage();
    498             ((LocationAwareLogger) logger).log(marker, fqcn, LocationAwareLogger.INFO_INT, formattedMessage, new Object[] { arg1, arg2 }, null);
    499         } else {
    500             logger.info(marker, format, arg1, arg2);
    501         }
    502     }
    503 
    504     /**
    505      * Delegate to the appropriate method of the underlying logger.
    506      */
    507     public void info(Marker marker, String format, Object... args) {
    508         if (!logger.isInfoEnabled(marker))
    509             return;
    510         if (instanceofLAL) {
    511             String formattedMessage = MessageFormatter.arrayFormat(format, args).getMessage();
    512             ((LocationAwareLogger) logger).log(marker, fqcn, LocationAwareLogger.INFO_INT, formattedMessage, args, null);
    513         } else {
    514             logger.info(marker, format, args);
    515         }
    516     }
    517 
    518     /**
    519      * Delegate to the appropriate method of the underlying logger.
    520      */
    521     public void info(Marker marker, String msg, Throwable t) {
    522         if (!logger.isInfoEnabled(marker))
    523             return;
    524         if (instanceofLAL) {
    525             ((LocationAwareLogger) logger).log(marker, fqcn, LocationAwareLogger.INFO_INT, msg, null, t);
    526         } else {
    527             logger.info(marker, msg, t);
    528         }
    529     }
    530 
    531     public boolean isWarnEnabled() {
    532         return logger.isWarnEnabled();
    533     }
    534 
    535     /**
    536      * Delegate to the appropriate method of the underlying logger.
    537      */
    538     public boolean isWarnEnabled(Marker marker) {
    539         return logger.isWarnEnabled(marker);
    540     }
    541 
    542     /**
    543      * Delegate to the appropriate method of the underlying logger.
    544      */
    545     public void warn(String msg) {
    546         if (!logger.isWarnEnabled())
    547             return;
    548 
    549         if (instanceofLAL) {
    550             ((LocationAwareLogger) logger).log(null, fqcn, LocationAwareLogger.WARN_INT, msg, null, null);
    551         } else {
    552             logger.warn(msg);
    553         }
    554     }
    555 
    556     /**
    557      * Delegate to the appropriate method of the underlying logger.
    558      */
    559     public void warn(String format, Object arg) {
    560         if (!logger.isWarnEnabled())
    561             return;
    562 
    563         if (instanceofLAL) {
    564             String formattedMessage = MessageFormatter.format(format, arg).getMessage();
    565             ((LocationAwareLogger) logger).log(null, fqcn, LocationAwareLogger.WARN_INT, formattedMessage, new Object[] { arg }, null);
    566         } else {
    567             logger.warn(format, arg);
    568         }
    569     }
    570 
    571     /**
    572      * Delegate to the appropriate method of the underlying logger.
    573      */
    574     public void warn(String format, Object arg1, Object arg2) {
    575         if (!logger.isWarnEnabled())
    576             return;
    577 
    578         if (instanceofLAL) {
    579             String formattedMessage = MessageFormatter.format(format, arg1, arg2).getMessage();
    580             ((LocationAwareLogger) logger).log(null, fqcn, LocationAwareLogger.WARN_INT, formattedMessage, new Object[] { arg1, arg2 }, null);
    581         } else {
    582             logger.warn(format, arg1, arg2);
    583         }
    584     }
    585 
    586     /**
    587      * Delegate to the appropriate method of the underlying logger.
    588      */
    589     public void warn(String format, Object... args) {
    590         if (!logger.isWarnEnabled())
    591             return;
    592 
    593         if (instanceofLAL) {
    594             String formattedMessage = MessageFormatter.arrayFormat(format, args).getMessage();
    595             ((LocationAwareLogger) logger).log(null, fqcn, LocationAwareLogger.WARN_INT, formattedMessage, args, null);
    596         } else {
    597             logger.warn(format, args);
    598         }
    599     }
    600 
    601     /**
    602      * Delegate to the appropriate method of the underlying logger.
    603      */
    604     public void warn(String msg, Throwable t) {
    605         if (!logger.isWarnEnabled())
    606             return;
    607 
    608         if (instanceofLAL) {
    609             ((LocationAwareLogger) logger).log(null, fqcn, LocationAwareLogger.WARN_INT, msg, null, t);
    610         } else {
    611             logger.warn(msg, t);
    612         }
    613     }
    614 
    615     /**
    616      * Delegate to the appropriate method of the underlying logger.
    617      */
    618     public void warn(Marker marker, String msg) {
    619         if (!logger.isWarnEnabled(marker))
    620             return;
    621         if (instanceofLAL) {
    622             ((LocationAwareLogger) logger).log(marker, fqcn, LocationAwareLogger.WARN_INT, msg, null, null);
    623         } else {
    624             logger.warn(marker, msg);
    625         }
    626     }
    627 
    628     /**
    629      * Delegate to the appropriate method of the underlying logger.
    630      */
    631     public void warn(Marker marker, String format, Object arg) {
    632         if (!logger.isWarnEnabled(marker))
    633             return;
    634         if (instanceofLAL) {
    635             String formattedMessage = MessageFormatter.format(format, arg).getMessage();
    636             ((LocationAwareLogger) logger).log(marker, fqcn, LocationAwareLogger.WARN_INT, formattedMessage, new Object[] { arg }, null);
    637         } else {
    638             logger.warn(marker, format, arg);
    639         }
    640     }
    641 
    642     /**
    643      * Delegate to the appropriate method of the underlying logger.
    644      */
    645     public void warn(Marker marker, String format, Object arg1, Object arg2) {
    646         if (!logger.isWarnEnabled(marker))
    647             return;
    648         if (instanceofLAL) {
    649             String formattedMessage = MessageFormatter.format(format, arg1, arg2).getMessage();
    650             ((LocationAwareLogger) logger).log(marker, fqcn, LocationAwareLogger.WARN_INT, formattedMessage, new Object[] { arg1, arg2 }, null);
    651         } else {
    652             logger.warn(marker, format, arg1, arg2);
    653         }
    654     }
    655 
    656     /**
    657      * Delegate to the appropriate method of the underlying logger.
    658      */
    659     public void warn(Marker marker, String format, Object... args) {
    660         if (!logger.isWarnEnabled(marker))
    661             return;
    662         if (instanceofLAL) {
    663             String formattedMessage = MessageFormatter.arrayFormat(format, args).getMessage();
    664             ((LocationAwareLogger) logger).log(marker, fqcn, LocationAwareLogger.WARN_INT, formattedMessage, args, null);
    665         } else {
    666             logger.warn(marker, format, args);
    667         }
    668     }
    669 
    670     /**
    671      * Delegate to the appropriate method of the underlying logger.
    672      */
    673     public void warn(Marker marker, String msg, Throwable t) {
    674         if (!logger.isWarnEnabled(marker))
    675             return;
    676         if (instanceofLAL) {
    677             ((LocationAwareLogger) logger).log(marker, fqcn, LocationAwareLogger.WARN_INT, msg, null, t);
    678         } else {
    679             logger.warn(marker, msg, t);
    680         }
    681     }
    682 
    683     /**
    684      * Delegate to the appropriate method of the underlying logger.
    685      */
    686     public boolean isErrorEnabled() {
    687         return logger.isErrorEnabled();
    688     }
    689 
    690     /**
    691      * Delegate to the appropriate method of the underlying logger.
    692      */
    693     public boolean isErrorEnabled(Marker marker) {
    694         return logger.isErrorEnabled(marker);
    695     }
    696 
    697     /**
    698      * Delegate to the appropriate method of the underlying logger.
    699      */
    700     public void error(String msg) {
    701         if (!logger.isErrorEnabled())
    702             return;
    703 
    704         if (instanceofLAL) {
    705             ((LocationAwareLogger) logger).log(null, fqcn, LocationAwareLogger.ERROR_INT, msg, null, null);
    706         } else {
    707             logger.error(msg);
    708         }
    709     }
    710 
    711     /**
    712      * Delegate to the appropriate method of the underlying logger.
    713      */
    714     public void error(String format, Object arg) {
    715         if (!logger.isErrorEnabled())
    716             return;
    717 
    718         if (instanceofLAL) {
    719             String formattedMessage = MessageFormatter.format(format, arg).getMessage();
    720             ((LocationAwareLogger) logger).log(null, fqcn, LocationAwareLogger.ERROR_INT, formattedMessage, new Object[] { arg }, null);
    721         } else {
    722             logger.error(format, arg);
    723         }
    724     }
    725 
    726     /**
    727      * Delegate to the appropriate method of the underlying logger.
    728      */
    729     public void error(String format, Object arg1, Object arg2) {
    730         if (!logger.isErrorEnabled())
    731             return;
    732 
    733         if (instanceofLAL) {
    734             String formattedMessage = MessageFormatter.format(format, arg1, arg2).getMessage();
    735             ((LocationAwareLogger) logger).log(null, fqcn, LocationAwareLogger.ERROR_INT, formattedMessage, new Object[] { arg1, arg2 }, null);
    736         } else {
    737             logger.error(format, arg1, arg2);
    738         }
    739     }
    740 
    741     /**
    742      * Delegate to the appropriate method of the underlying logger.
    743      */
    744     public void error(String format, Object... args) {
    745         if (!logger.isErrorEnabled())
    746             return;
    747 
    748         if (instanceofLAL) {
    749             String formattedMessage = MessageFormatter.arrayFormat(format, args).getMessage();
    750             ((LocationAwareLogger) logger).log(null, fqcn, LocationAwareLogger.ERROR_INT, formattedMessage, args, null);
    751         } else {
    752             logger.error(format, args);
    753         }
    754     }
    755 
    756     /**
    757      * Delegate to the appropriate method of the underlying logger.
    758      */
    759     public void error(String msg, Throwable t) {
    760         if (!logger.isErrorEnabled())
    761             return;
    762 
    763         if (instanceofLAL) {
    764             ((LocationAwareLogger) logger).log(null, fqcn, LocationAwareLogger.ERROR_INT, msg, null, t);
    765         } else {
    766             logger.error(msg, t);
    767         }
    768     }
    769 
    770     /**
    771      * Delegate to the appropriate method of the underlying logger.
    772      */
    773     public void error(Marker marker, String msg) {
    774         if (!logger.isErrorEnabled(marker))
    775             return;
    776         if (instanceofLAL) {
    777             ((LocationAwareLogger) logger).log(marker, fqcn, LocationAwareLogger.ERROR_INT, msg, null, null);
    778         } else {
    779             logger.error(marker, msg);
    780         }
    781     }
    782 
    783     /**
    784      * Delegate to the appropriate method of the underlying logger.
    785      */
    786     public void error(Marker marker, String format, Object arg) {
    787         if (!logger.isErrorEnabled(marker))
    788             return;
    789         if (instanceofLAL) {
    790             String formattedMessage = MessageFormatter.format(format, arg).getMessage();
    791             ((LocationAwareLogger) logger).log(marker, fqcn, LocationAwareLogger.ERROR_INT, formattedMessage, new Object[] { arg }, null);
    792         } else {
    793             logger.error(marker, format, arg);
    794         }
    795     }
    796 
    797     /**
    798      * Delegate to the appropriate method of the underlying logger.
    799      */
    800     public void error(Marker marker, String format, Object arg1, Object arg2) {
    801         if (!logger.isErrorEnabled(marker))
    802             return;
    803         if (instanceofLAL) {
    804             String formattedMessage = MessageFormatter.format(format, arg1, arg2).getMessage();
    805             ((LocationAwareLogger) logger).log(marker, fqcn, LocationAwareLogger.ERROR_INT, formattedMessage, new Object[] { arg1, arg2 }, null);
    806         } else {
    807             logger.error(marker, format, arg1, arg2);
    808         }
    809     }
    810 
    811     /**
    812      * Delegate to the appropriate method of the underlying logger.
    813      */
    814     public void error(Marker marker, String format, Object... args) {
    815         if (!logger.isErrorEnabled(marker))
    816             return;
    817         if (instanceofLAL) {
    818             String formattedMessage = MessageFormatter.arrayFormat(format, args).getMessage();
    819             ((LocationAwareLogger) logger).log(marker, fqcn, LocationAwareLogger.ERROR_INT, formattedMessage, args, null);
    820         } else {
    821             logger.error(marker, format, args);
    822         }
    823     }
    824 
    825     /**
    826      * Delegate to the appropriate method of the underlying logger.
    827      */
    828     public void error(Marker marker, String msg, Throwable t) {
    829         if (!logger.isErrorEnabled(marker))
    830             return;
    831         if (instanceofLAL) {
    832             ((LocationAwareLogger) logger).log(marker, fqcn, LocationAwareLogger.ERROR_INT, msg, null, t);
    833         } else {
    834             logger.error(marker, msg, t);
    835         }
    836     }
    837 
    838     /**
    839      * Delegate to the appropriate method of the underlying logger.
    840      */
    841     public String getName() {
    842         return logger.getName();
    843     }
    844 }
    845