    001package org.slf4j.event;
    002
    003import java.util.Queue;
    004
    005import org.slf4j.Logger;
    006import org.slf4j.Marker;
    007import org.slf4j.helpers.SubstituteLogger;
    008
    009public class EventRecodingLogger implements Logger {
    010
    011    String name;
    012    SubstituteLogger logger;
    013    Queue<SubstituteLoggingEvent> eventQueue;
    014
    015    public EventRecodingLogger(SubstituteLogger logger, Queue<SubstituteLoggingEvent> eventQueue) {
    016        this.logger = logger;
    017        this.name = logger.getName();
    018        this.eventQueue = eventQueue;
    019    }
    020
    021    public String getName() {
    022        return name;
    023    }
    024
    025    private void recordEvent(Level level, String msg, Object[] args, Throwable throwable) {
    026        recordEvent(level, null, msg, args, throwable);
    027    }
    028
    029    private void recordEvent(Level level, Marker marker, String msg, Object[] args, Throwable throwable) {
    030        // System.out.println("recording logger:"+name+", msg:"+msg);
    031        SubstituteLoggingEvent loggingEvent = new SubstituteLoggingEvent();
    032        loggingEvent.setTimeStamp(System.currentTimeMillis());
    033        loggingEvent.setLevel(level);
    034        loggingEvent.setLogger(logger);
    035        loggingEvent.setLoggerName(name);
    036        loggingEvent.setMarker(marker);
    037        loggingEvent.setMessage(msg);
    038        loggingEvent.setArgumentArray(args);
    039        loggingEvent.setThrowable(throwable);
    040        loggingEvent.setThreadName(Thread.currentThread().getName());
    041        eventQueue.add(loggingEvent);
    042    }
    043
    044    public boolean isTraceEnabled() {
    045        return true;
    046    }
    047
    048    public void trace(String msg) {
    049        recordEvent(Level.TRACE, msg, null, null);
    050    }
    051
    052    public void trace(String format, Object arg) {
    053        recordEvent(Level.TRACE, format, new Object[] { arg }, null);
    054    }
    055
    056    public void trace(String format, Object arg1, Object arg2) {
    057        recordEvent(Level.TRACE, format, new Object[] { arg1, arg2 }, null);
    058    }
    059
    060    public void trace(String format, Object... arguments) {
    061        recordEvent(Level.TRACE, format, arguments, null);
    062    }
    063
    064    public void trace(String msg, Throwable t) {
    065        recordEvent(Level.TRACE, msg, null, t);
    066    }
    067
    068    public boolean isTraceEnabled(Marker marker) {
    069        return true;
    070    }
    071
    072    public void trace(Marker marker, String msg) {
    073        recordEvent(Level.TRACE, marker, msg, null, null);
    074
    075    }
    076
    077    public void trace(Marker marker, String format, Object arg) {
    078        recordEvent(Level.TRACE, marker, format, new Object[] { arg }, null);
    079    }
    080
    081    public void trace(Marker marker, String format, Object arg1, Object arg2) {
    082        recordEvent(Level.TRACE, marker, format, new Object[] { arg1, arg2 }, null);
    083    }
    084
    085    public void trace(Marker marker, String format, Object... argArray) {
    086        recordEvent(Level.TRACE, marker, format, argArray, null);
    087
    088    }
    089
    090    public void trace(Marker marker, String msg, Throwable t) {
    091        recordEvent(Level.TRACE, marker, msg, null, t);
    092    }
    093
    094    public boolean isDebugEnabled() {
    095        return true;
    096    }
    097
    098    public void debug(String msg) {
    099        recordEvent(Level.TRACE, msg, null, null);
    100    }
    101
    102    public void debug(String format, Object arg) {
    103        recordEvent(Level.DEBUG, format, new Object[] { arg }, null);
    104
    105    }
    106
    107    public void debug(String format, Object arg1, Object arg2) {
    108        recordEvent(Level.DEBUG, format, new Object[] { arg1, arg2 }, null);
    109
    110    }
    111
    112    public void debug(String format, Object... arguments) {
    113        recordEvent(Level.DEBUG, format, arguments, null);
    114    }
    115
    116    public void debug(String msg, Throwable t) {
    117        recordEvent(Level.DEBUG, msg, null, t);
    118    }
    119
    120    public boolean isDebugEnabled(Marker marker) {
    121        return true;
    122    }
    123
    124    public void debug(Marker marker, String msg) {
    125        recordEvent(Level.DEBUG, marker, msg, null, null);
    126    }
    127
    128    public void debug(Marker marker, String format, Object arg) {
    129        recordEvent(Level.DEBUG, marker, format, new Object[] { arg }, null);
    130    }
    131
    132    public void debug(Marker marker, String format, Object arg1, Object arg2) {
    133        recordEvent(Level.DEBUG, marker, format, new Object[] { arg1, arg2 }, null);
    134    }
    135
    136    public void debug(Marker marker, String format, Object... arguments) {
    137        recordEvent(Level.DEBUG, marker, format, arguments, null);
    138    }
    139
    140    public void debug(Marker marker, String msg, Throwable t) {
    141        recordEvent(Level.DEBUG, marker, msg, null, t);
    142    }
    143
    144    public boolean isInfoEnabled() {
    145        return true;
    146    }
    147
    148    public void info(String msg) {
    149        recordEvent(Level.INFO, msg, null, null);
    150    }
    151
    152    public void info(String format, Object arg) {
    153        recordEvent(Level.INFO, format, new Object[] { arg }, null);
    154    }
    155
    156    public void info(String format, Object arg1, Object arg2) {
    157        recordEvent(Level.INFO, format, new Object[] { arg1, arg2 }, null);
    158    }
    159
    160    public void info(String format, Object... arguments) {
    161        recordEvent(Level.INFO, format, arguments, null);
    162    }
    163
    164    public void info(String msg, Throwable t) {
    165        recordEvent(Level.INFO, msg, null, t);
    166    }
    167
    168    public boolean isInfoEnabled(Marker marker) {
    169        return true;
    170    }
    171
    172    public void info(Marker marker, String msg) {
    173        recordEvent(Level.INFO, marker, msg, null, null);
    174    }
    175
    176    public void info(Marker marker, String format, Object arg) {
    177        recordEvent(Level.INFO, marker, format, new Object[] { arg }, null);
    178    }
    179
    180    public void info(Marker marker, String format, Object arg1, Object arg2) {
    181        recordEvent(Level.INFO, marker, format, new Object[] { arg1, arg2 }, null);
    182    }
    183
    184    public void info(Marker marker, String format, Object... arguments) {
    185        recordEvent(Level.INFO, marker, format, arguments, null);
    186    }
    187
    188    public void info(Marker marker, String msg, Throwable t) {
    189        recordEvent(Level.INFO, marker, msg, null, t);
    190
    191    }
    192
    193    public boolean isWarnEnabled() {
    194        return true;
    195    }
    196
    197    public void warn(String msg) {
    198        recordEvent(Level.WARN, msg, null, null);
    199    }
    200
    201    public void warn(String format, Object arg) {
    202        recordEvent(Level.WARN, format, new Object[] { arg }, null);
    203
    204    }
    205
    206    public void warn(String format, Object arg1, Object arg2) {
    207        recordEvent(Level.WARN, format, new Object[] { arg1, arg2 }, null);
    208    }
    209
    210    public void warn(String format, Object... arguments) {
    211        recordEvent(Level.WARN, format, arguments, null);
    212    }
    213
    214    public void warn(String msg, Throwable t) {
    215        recordEvent(Level.WARN, msg, null, t);
    216    }
    217
    218    public boolean isWarnEnabled(Marker marker) {
    219        return true;
    220    }
    221
    222    public void warn(Marker marker, String msg) {
    223        recordEvent(Level.WARN, msg, null, null);
    224    }
    225
    226    public void warn(Marker marker, String format, Object arg) {
    227        recordEvent(Level.WARN, format, new Object[] { arg }, null);
    228    }
    229
    230    public void warn(Marker marker, String format, Object arg1, Object arg2) {
    231        recordEvent(Level.WARN, marker, format, new Object[] { arg1, arg2 }, null);
    232
    233    }
    234
    235    public void warn(Marker marker, String format, Object... arguments) {
    236        recordEvent(Level.WARN, marker, format, arguments, null);
    237    }
    238
    239    public void warn(Marker marker, String msg, Throwable t) {
    240        recordEvent(Level.WARN, marker, msg, null, t);
    241    }
    242
    243    public boolean isErrorEnabled() {
    244        return true;
    245    }
    246
    247    public void error(String msg) {
    248        recordEvent(Level.ERROR, msg, null, null);
    249    }
    250
    251    public void error(String format, Object arg) {
    252        recordEvent(Level.ERROR, format, new Object[] { arg }, null);
    253
    254    }
    255
    256    public void error(String format, Object arg1, Object arg2) {
    257        recordEvent(Level.ERROR, format, new Object[] { arg1, arg2 }, null);
    258
    259    }
    260
    261    public void error(String format, Object... arguments) {
    262        recordEvent(Level.ERROR, format, arguments, null);
    263
    264    }
    265
    266    public void error(String msg, Throwable t) {
    267        recordEvent(Level.ERROR, msg, null, t);
    268    }
    269
    270    public boolean isErrorEnabled(Marker marker) {
    271        return true;
    272    }
    273
    274    public void error(Marker marker, String msg) {
    275        recordEvent(Level.ERROR, marker, msg, null, null);
    276
    277    }
    278
    279    public void error(Marker marker, String format, Object arg) {
    280        recordEvent(Level.ERROR, marker, format, new Object[] { arg }, null);
    281
    282    }
    283
    284    public void error(Marker marker, String format, Object arg1, Object arg2) {
    285        recordEvent(Level.ERROR, marker, format, new Object[] { arg1, arg2 }, null);
    286    }
    287
    288    public void error(Marker marker, String format, Object... arguments) {
    289        recordEvent(Level.ERROR, marker, format, arguments, null);
    290    }
    291
    292    public void error(Marker marker, String msg, Throwable t) {
    293        recordEvent(Level.ERROR, marker, msg, null, t);
    294    }
    295
    296}