001/*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache license, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the license for the specific language governing permissions and
015 * limitations under the license.
016 */
017package org.apache.logging.log4j.spi;
018
019import java.io.Serializable;
020
021import org.apache.logging.log4j.Level;
022import org.apache.logging.log4j.Marker;
023import org.apache.logging.log4j.MarkerManager;
024import org.apache.logging.log4j.message.DefaultFlowMessageFactory;
025import org.apache.logging.log4j.message.EntryMessage;
026import org.apache.logging.log4j.message.FlowMessageFactory;
027import org.apache.logging.log4j.message.Message;
028import org.apache.logging.log4j.message.MessageFactory;
029import org.apache.logging.log4j.message.MessageFactory2;
030import org.apache.logging.log4j.message.ParameterizedMessage;
031import org.apache.logging.log4j.message.ParameterizedMessageFactory;
032import org.apache.logging.log4j.message.ReusableMessageFactory;
033import org.apache.logging.log4j.message.SimpleMessage;
034import org.apache.logging.log4j.message.StringFormattedMessage;
035import org.apache.logging.log4j.status.StatusLogger;
036import org.apache.logging.log4j.util.Constants;
037import org.apache.logging.log4j.util.LambdaUtil;
038import org.apache.logging.log4j.util.LoaderUtil;
039import org.apache.logging.log4j.util.MessageSupplier;
040import org.apache.logging.log4j.util.PropertiesUtil;
041import org.apache.logging.log4j.util.Strings;
042import org.apache.logging.log4j.util.Supplier;
043
044/**
045 * Base implementation of a Logger. It is highly recommended that any Logger implementation extend this class.
046 */
047public abstract class AbstractLogger implements ExtendedLogger, Serializable {
048
049    /**
050     * Marker for flow tracing.
051     */
052    public static final Marker FLOW_MARKER = MarkerManager.getMarker("FLOW");
053
054    /**
055     * Marker for method entry tracing.
056     */
057    public static final Marker ENTRY_MARKER = MarkerManager.getMarker("ENTER").setParents(FLOW_MARKER);
058
059    /**
060     * Marker for method exit tracing.
061     */
062    public static final Marker EXIT_MARKER = MarkerManager.getMarker("EXIT").setParents(FLOW_MARKER);
063
064    /**
065     * Marker for exception tracing.
066     */
067    public static final Marker EXCEPTION_MARKER = MarkerManager.getMarker("EXCEPTION");
068
069    /**
070     * Marker for throwing exceptions.
071     */
072    public static final Marker THROWING_MARKER = MarkerManager.getMarker("THROWING").setParents(EXCEPTION_MARKER);
073
074    /**
075     * Marker for catching exceptions.
076     */
077    public static final Marker CATCHING_MARKER = MarkerManager.getMarker("CATCHING").setParents(EXCEPTION_MARKER);
078
079    /**
080     * The default MessageFactory class.
081     */
082    public static final Class<? extends MessageFactory> DEFAULT_MESSAGE_FACTORY_CLASS =
083            createClassForProperty("log4j2.messageFactory", ReusableMessageFactory.class,
084                    ParameterizedMessageFactory.class);
085
086    /**
087     * The default FlowMessageFactory class.
088     */
089    public static final Class<? extends FlowMessageFactory> DEFAULT_FLOW_MESSAGE_FACTORY_CLASS =
090            createFlowClassForProperty("log4j2.flowMessageFactory", DefaultFlowMessageFactory.class);
091
092    private static final long serialVersionUID = 2L;
093
094    private static final String FQCN = AbstractLogger.class.getName();
095    private static final String THROWING = "Throwing";
096    private static final String CATCHING = "Catching";
097
098    protected final String name;
099    private final MessageFactory2 messageFactory;
100    private final FlowMessageFactory flowMessageFactory;
101
102    /**
103     * Creates a new logger named after this class (or subclass).
104     */
105    public AbstractLogger() {
106        this.name = getClass().getName();
107        this.messageFactory = createDefaultMessageFactory();
108        this.flowMessageFactory = createDefaultFlowMessageFactory();
109    }
110
111    /**
112     * Creates a new named logger.
113     *
114     * @param name the logger name
115     */
116    public AbstractLogger(final String name) {
117        this(name, createDefaultMessageFactory());
118    }
119
120    /**
121     * Creates a new named logger with a particular {@link MessageFactory}.
122     *
123     * @param name the logger name
124     * @param messageFactory the message factory, if null then use the default message factory.
125     */
126    public AbstractLogger(final String name, final MessageFactory messageFactory) {
127        this.name = name;
128        this.messageFactory = messageFactory == null ? createDefaultMessageFactory() : narrow(messageFactory);
129        this.flowMessageFactory = createDefaultFlowMessageFactory();
130    }
131
132    /**
133     * Checks that the message factory a logger was created with is the same as the given messageFactory. If they are
134     * different log a warning to the {@linkplain StatusLogger}. A null MessageFactory translates to the default
135     * MessageFactory {@link #DEFAULT_MESSAGE_FACTORY_CLASS}.
136     *
137     * @param logger The logger to check
138     * @param messageFactory The message factory to check.
139     */
140    public static void checkMessageFactory(final ExtendedLogger logger, final MessageFactory messageFactory) {
141        final String name = logger.getName();
142        final MessageFactory loggerMessageFactory = logger.getMessageFactory();
143        if (messageFactory != null && !loggerMessageFactory.equals(messageFactory)) {
144            StatusLogger.getLogger().warn(
145                    "The Logger {} was created with the message factory {} and is now requested with the "
146                            + "message factory {}, which may create log events with unexpected formatting.", name,
147                    loggerMessageFactory, messageFactory);
148        } else if (messageFactory == null && !loggerMessageFactory.getClass().equals(DEFAULT_MESSAGE_FACTORY_CLASS)) {
149            StatusLogger
150                    .getLogger()
151                    .warn("The Logger {} was created with the message factory {} and is now requested with a null "
152                            + "message factory (defaults to {}), which may create log events with unexpected "
153                            + "formatting.",
154                            name, loggerMessageFactory, DEFAULT_MESSAGE_FACTORY_CLASS.getName());
155        }
156    }
157
158    @Override
159    public void catching(final Level level, final Throwable t) {
160        catching(FQCN, level, t);
161    }
162
163    /**
164     * Logs a Throwable that has been caught with location information.
165     *
166     * @param fqcn The fully qualified class name of the <b>caller</b>.
167     * @param level The logging level.
168     * @param t The Throwable.
169     */
170    protected void catching(final String fqcn, final Level level, final Throwable t) {
171        if (isEnabled(level, CATCHING_MARKER, (Object) null, null)) {
172            logMessage(fqcn, level, CATCHING_MARKER, catchingMsg(t), t);
173        }
174    }
175
176    @Override
177    public void catching(final Throwable t) {
178        if (isEnabled(Level.ERROR, CATCHING_MARKER, (Object) null, null)) {
179            logMessage(FQCN, Level.ERROR, CATCHING_MARKER, catchingMsg(t), t);
180        }
181    }
182
183    protected Message catchingMsg(final Throwable t) {
184        return messageFactory.newMessage(CATCHING);
185    }
186
187    private static Class<? extends MessageFactory> createClassForProperty(final String property,
188            final Class<ReusableMessageFactory> reusableParameterizedMessageFactoryClass,
189            final Class<ParameterizedMessageFactory> parameterizedMessageFactoryClass) {
190        try {
191            final String fallback = Constants.ENABLE_THREADLOCALS ? reusableParameterizedMessageFactoryClass.getName()
192                    : parameterizedMessageFactoryClass.getName();
193            final String clsName = PropertiesUtil.getProperties().getStringProperty(property, fallback);
194            return LoaderUtil.loadClass(clsName).asSubclass(MessageFactory.class);
195        } catch (final Throwable t) {
196            return parameterizedMessageFactoryClass;
197        }
198    }
199
200    private static Class<? extends FlowMessageFactory> createFlowClassForProperty(final String property,
201            final Class<DefaultFlowMessageFactory> defaultFlowMessageFactoryClass) {
202        try {
203            final String clsName = PropertiesUtil.getProperties().getStringProperty(property, defaultFlowMessageFactoryClass.getName());
204            return LoaderUtil.loadClass(clsName).asSubclass(FlowMessageFactory.class);
205        } catch (final Throwable t) {
206            return defaultFlowMessageFactoryClass;
207        }
208    }
209
210    private static MessageFactory2 createDefaultMessageFactory() {
211        try {
212            final MessageFactory result = DEFAULT_MESSAGE_FACTORY_CLASS.newInstance();
213            return narrow(result);
214        } catch (final InstantiationException | IllegalAccessException e) {
215            throw new IllegalStateException(e);
216        }
217    }
218
219    private static MessageFactory2 narrow(final MessageFactory result) {
220        if (result instanceof MessageFactory2) {
221            return (MessageFactory2) result;
222        }
223        return new MessageFactory2Adapter(result);
224    }
225
226    private static FlowMessageFactory createDefaultFlowMessageFactory() {
227        try {
228            return DEFAULT_FLOW_MESSAGE_FACTORY_CLASS.newInstance();
229        } catch (final InstantiationException | IllegalAccessException e) {
230            throw new IllegalStateException(e);
231        }
232    }
233
234    @Override
235    public void debug(final Marker marker, final CharSequence message) {
236        logIfEnabled(FQCN, Level.DEBUG, marker, message, null);
237    }
238
239    @Override
240    public void debug(final Marker marker, final CharSequence message, final Throwable t) {
241        logIfEnabled(FQCN, Level.DEBUG, marker, message, t);
242    }
243
244    @Override
245    public void debug(final Marker marker, final Message msg) {
246        logIfEnabled(FQCN, Level.DEBUG, marker, msg, null);
247    }
248
249    @Override
250    public void debug(final Marker marker, final Message msg, final Throwable t) {
251        logIfEnabled(FQCN, Level.DEBUG, marker, msg, t);
252    }
253
254    @Override
255    public void debug(final Marker marker, final Object message) {
256        logIfEnabled(FQCN, Level.DEBUG, marker, message, null);
257    }
258
259    @Override
260    public void debug(final Marker marker, final Object message, final Throwable t) {
261        logIfEnabled(FQCN, Level.DEBUG, marker, message, t);
262    }
263
264    @Override
265    public void debug(final Marker marker, final String message) {
266        logIfEnabled(FQCN, Level.DEBUG, marker, message, (Throwable) null);
267    }
268
269    @Override
270    public void debug(final Marker marker, final String message, final Object... params) {
271        logIfEnabled(FQCN, Level.DEBUG, marker, message, params);
272    }
273
274    @Override
275    public void debug(final Marker marker, final String message, final Throwable t) {
276        logIfEnabled(FQCN, Level.DEBUG, marker, message, t);
277    }
278
279    @Override
280    public void debug(final Message msg) {
281        logIfEnabled(FQCN, Level.DEBUG, null, msg, null);
282    }
283
284    @Override
285    public void debug(final Message msg, final Throwable t) {
286        logIfEnabled(FQCN, Level.DEBUG, null, msg, t);
287    }
288
289    @Override
290    public void debug(final CharSequence message) {
291        logIfEnabled(FQCN, Level.DEBUG, null, message, null);
292    }
293
294    @Override
295    public void debug(final CharSequence message, final Throwable t) {
296        logIfEnabled(FQCN, Level.DEBUG, null, message, t);
297    }
298
299    @Override
300    public void debug(final Object message) {
301        logIfEnabled(FQCN, Level.DEBUG, null, message, null);
302    }
303
304    @Override
305    public void debug(final Object message, final Throwable t) {
306        logIfEnabled(FQCN, Level.DEBUG, null, message, t);
307    }
308
309    @Override
310    public void debug(final String message) {
311        logIfEnabled(FQCN, Level.DEBUG, null, message, (Throwable) null);
312    }
313
314    @Override
315    public void debug(final String message, final Object... params) {
316        logIfEnabled(FQCN, Level.DEBUG, null, message, params);
317    }
318
319    @Override
320    public void debug(final String message, final Throwable t) {
321        logIfEnabled(FQCN, Level.DEBUG, null, message, t);
322    }
323
324    @Override
325    public void debug(final Supplier<?> msgSupplier) {
326        logIfEnabled(FQCN, Level.DEBUG, null, msgSupplier, (Throwable) null);
327    }
328
329    @Override
330    public void debug(final Supplier<?> msgSupplier, final Throwable t) {
331        logIfEnabled(FQCN, Level.DEBUG, null, msgSupplier, t);
332    }
333
334    @Override
335    public void debug(final Marker marker, final Supplier<?> msgSupplier) {
336        logIfEnabled(FQCN, Level.DEBUG, marker, msgSupplier, (Throwable) null);
337    }
338
339    @Override
340    public void debug(final Marker marker, final String message, final Supplier<?>... paramSuppliers) {
341        logIfEnabled(FQCN, Level.DEBUG, marker, message, paramSuppliers);
342    }
343
344    @Override
345    public void debug(final Marker marker, final Supplier<?> msgSupplier, final Throwable t) {
346        logIfEnabled(FQCN, Level.DEBUG, marker, msgSupplier, t);
347    }
348
349    @Override
350    public void debug(final String message, final Supplier<?>... paramSuppliers) {
351        logIfEnabled(FQCN, Level.DEBUG, null, message, paramSuppliers);
352    }
353
354    @Override
355    public void debug(final Marker marker, final MessageSupplier msgSupplier) {
356        logIfEnabled(FQCN, Level.DEBUG, marker, msgSupplier, (Throwable) null);
357    }
358
359    @Override
360    public void debug(final Marker marker, final MessageSupplier msgSupplier, final Throwable t) {
361        logIfEnabled(FQCN, Level.DEBUG, marker, msgSupplier, t);
362    }
363
364    @Override
365    public void debug(final MessageSupplier msgSupplier) {
366        logIfEnabled(FQCN, Level.DEBUG, null, msgSupplier, (Throwable) null);
367    }
368
369    @Override
370    public void debug(final MessageSupplier msgSupplier, final Throwable t) {
371        logIfEnabled(FQCN, Level.DEBUG, null, msgSupplier, t);
372    }
373
374    @Override
375    public void debug(final Marker marker, final String message, final Object p0) {
376        logIfEnabled(FQCN, Level.DEBUG, marker, message, p0);
377    }
378
379    @Override
380    public void debug(final Marker marker, final String message, final Object p0, final Object p1) {
381        logIfEnabled(FQCN, Level.DEBUG, marker, message, p0, p1);
382    }
383
384    @Override
385    public void debug(final Marker marker, final String message, final Object p0, final Object p1, final Object p2) {
386        logIfEnabled(FQCN, Level.DEBUG, marker, message, p0, p1, p2);
387    }
388
389    @Override
390    public void debug(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
391            final Object p3) {
392        logIfEnabled(FQCN, Level.DEBUG, marker, message, p0, p1, p2, p3);
393    }
394
395    @Override
396    public void debug(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
397            final Object p3, final Object p4) {
398        logIfEnabled(FQCN, Level.DEBUG, marker, message, p0, p1, p2, p3, p4);
399    }
400
401    @Override
402    public void debug(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
403            final Object p3, final Object p4, final Object p5) {
404        logIfEnabled(FQCN, Level.DEBUG, marker, message, p0, p1, p2, p3, p4, p5);
405    }
406
407    @Override
408    public void debug(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
409            final Object p3, final Object p4, final Object p5,
410            final Object p6) {
411        logIfEnabled(FQCN, Level.DEBUG, marker, message, p0, p1, p2, p3, p4, p5, p6);
412    }
413
414    @Override
415    public void debug(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
416            final Object p3, final Object p4, final Object p5,
417            final Object p6, final Object p7) {
418        logIfEnabled(FQCN, Level.DEBUG, marker, message, p0, p1, p2, p3, p4, p5, p6, p7);
419    }
420
421    @Override
422    public void debug(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
423            final Object p3, final Object p4, final Object p5,
424            final Object p6, final Object p7, final Object p8) {
425        logIfEnabled(FQCN, Level.DEBUG, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
426    }
427
428    @Override
429    public void debug(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
430            final Object p3, final Object p4, final Object p5,
431            final Object p6, final Object p7, final Object p8, final Object p9) {
432        logIfEnabled(FQCN, Level.DEBUG, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
433    }
434
435    @Override
436    public void debug(final String message, final Object p0) {
437        logIfEnabled(FQCN, Level.DEBUG, null, message, p0);
438    }
439
440    @Override
441    public void debug(final String message, final Object p0, final Object p1) {
442        logIfEnabled(FQCN, Level.DEBUG, null, message, p0, p1);
443    }
444
445    @Override
446    public void debug(final String message, final Object p0, final Object p1, final Object p2) {
447        logIfEnabled(FQCN, Level.DEBUG, null, message, p0, p1, p2);
448    }
449
450    @Override
451    public void debug(final String message, final Object p0, final Object p1, final Object p2, final Object p3) {
452        logIfEnabled(FQCN, Level.DEBUG, null, message, p0, p1, p2, p3);
453    }
454
455    @Override
456    public void debug(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
457            final Object p4) {
458        logIfEnabled(FQCN, Level.DEBUG, null, message, p0, p1, p2, p3, p4);
459    }
460
461    @Override
462    public void debug(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
463            final Object p4, final Object p5) {
464        logIfEnabled(FQCN, Level.DEBUG, null, message, p0, p1, p2, p3, p4, p5);
465    }
466
467    @Override
468    public void debug(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
469            final Object p4, final Object p5, final Object p6) {
470        logIfEnabled(FQCN, Level.DEBUG, null, message, p0, p1, p2, p3, p4, p5, p6);
471    }
472
473    @Override
474    public void debug(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
475            final Object p4, final Object p5, final Object p6,
476            final Object p7) {
477        logIfEnabled(FQCN, Level.DEBUG, null, message, p0, p1, p2, p3, p4, p5, p6, p7);
478    }
479
480    @Override
481    public void debug(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
482            final Object p4, final Object p5, final Object p6,
483            final Object p7, final Object p8) {
484        logIfEnabled(FQCN, Level.DEBUG, null, message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
485    }
486
487    @Override
488    public void debug(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
489            final Object p4, final Object p5, final Object p6,
490            final Object p7, final Object p8, final Object p9) {
491        logIfEnabled(FQCN, Level.DEBUG, null, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
492    }
493
494    /**
495     * Logs entry to a method with location information.
496     *
497     * @param fqcn The fully qualified class name of the <b>caller</b>.
498     * @param format Format String for the parameters.
499     * @param paramSuppliers The Suppliers of the parameters.
500     */
501    protected EntryMessage enter(final String fqcn, final String format, final Supplier<?>... paramSuppliers) {
502        EntryMessage entryMsg = null;
503        if (isEnabled(Level.TRACE, ENTRY_MARKER, (Object) null, null)) {
504            logMessage(fqcn, Level.TRACE, ENTRY_MARKER, entryMsg = entryMsg(format, paramSuppliers), null);
505        }
506        return entryMsg;
507    }
508
509    /**
510     * Logs entry to a method with location information.
511     *
512     * @param fqcn The fully qualified class name of the <b>caller</b>.
513     * @param format The format String for the parameters.
514     * @param paramSuppliers The parameters to the method.
515     */
516    @Deprecated
517    protected EntryMessage enter(final String fqcn, final String format, final MessageSupplier... paramSuppliers) {
518        EntryMessage entryMsg = null;
519        if (isEnabled(Level.TRACE, ENTRY_MARKER, (Object) null, null)) {
520            logMessage(fqcn, Level.TRACE, ENTRY_MARKER, entryMsg = entryMsg(format, paramSuppliers), null);
521        }
522        return entryMsg;
523    }
524
525    /**
526     * Logs entry to a method with location information.
527     *
528     * @param fqcn The fully qualified class name of the <b>caller</b>.
529     * @param format The format String for the parameters.
530     * @param params The parameters to the method.
531     */
532    protected EntryMessage enter(final String fqcn, final String format, final Object... params) {
533        EntryMessage entryMsg = null;
534        if (isEnabled(Level.TRACE, ENTRY_MARKER, (Object) null, null)) {
535            logMessage(fqcn, Level.TRACE, ENTRY_MARKER, entryMsg = entryMsg(format, params), null);
536        }
537        return entryMsg;
538    }
539
540    /**
541     * Logs entry to a method with location information.
542     *
543     * @param fqcn The fully qualified class name of the <b>caller</b>.
544     * @param msgSupplier The Supplier of the Message.
545     */
546    @Deprecated
547    protected EntryMessage enter(final String fqcn, final MessageSupplier msgSupplier) {
548        EntryMessage message = null;
549        if (isEnabled(Level.TRACE, ENTRY_MARKER, (Object) null, null)) {
550            logMessage(fqcn, Level.TRACE, ENTRY_MARKER, message = flowMessageFactory.newEntryMessage(
551                    msgSupplier.get()), null);
552        }
553        return message;
554    }
555
556    /**
557     * Logs entry to a method with location information.
558     *
559     * @param fqcn
560     *            The fully qualified class name of the <b>caller</b>.
561     * @param message
562     *            the Message.
563     * @since 2.6
564     */
565    protected EntryMessage enter(final String fqcn, final Message message) {
566        EntryMessage flowMessage = null;
567        if (isEnabled(Level.TRACE, ENTRY_MARKER, (Object) null, null)) {
568            logMessage(fqcn, Level.TRACE, ENTRY_MARKER, flowMessage = flowMessageFactory.newEntryMessage(message),
569                    null);
570        }
571        return flowMessage;
572    }
573
574    @Override
575    public void entry() {
576        entry(FQCN, (Object[]) null);
577    }
578
579    @Override
580    public void entry(final Object... params) {
581        entry(FQCN, params);
582    }
583
584    /**
585     * Logs entry to a method with location information.
586     *
587     * @param fqcn The fully qualified class name of the <b>caller</b>.
588     * @param params The parameters to the method.
589     */
590    protected void entry(final String fqcn, final Object... params) {
591        if (isEnabled(Level.TRACE, ENTRY_MARKER, (Object) null, null)) {
592            if (params == null) {
593                logMessage(fqcn, Level.TRACE, ENTRY_MARKER, entryMsg(null, (Supplier<?>[]) null), null);
594            } else {
595                logMessage(fqcn, Level.TRACE, ENTRY_MARKER, entryMsg(null, params), null);
596            }
597        }
598    }
599
600    protected EntryMessage entryMsg(final String format, final Object... params) {
601        final int count = params == null ? 0 : params.length;
602        if (count == 0) {
603            if (Strings.isEmpty(format)) {
604                return flowMessageFactory.newEntryMessage(null);
605            }
606            return flowMessageFactory.newEntryMessage(new SimpleMessage(format));
607        }
608        if (format != null) {
609            return flowMessageFactory.newEntryMessage(new ParameterizedMessage(format, params));
610        }
611        final StringBuilder sb = new StringBuilder();
612        sb.append("params(");
613        for (int i = 0; i < count; i++) {
614            if (i > 0) {
615                sb.append(", ");
616            }
617            final Object parm = params[i];
618            sb.append(parm instanceof Message ? ((Message) parm).getFormattedMessage() : String.valueOf(parm));
619        }
620        sb.append(')');
621        return flowMessageFactory.newEntryMessage(new SimpleMessage(sb));
622    }
623
624    protected EntryMessage entryMsg(final String format, final MessageSupplier... paramSuppliers) {
625        final int count = paramSuppliers == null ? 0 : paramSuppliers.length;
626        final Object[] params = new Object[count];
627        for (int i = 0; i < count; i++) {
628            params[i] = paramSuppliers[i].get();
629            params[i] = params[i] != null ? ((Message) params[i]).getFormattedMessage() : null;
630        }
631        return entryMsg(format, params);
632    }
633
634    protected EntryMessage entryMsg(final String format, final Supplier<?>... paramSuppliers) {
635        final int count = paramSuppliers == null ? 0 : paramSuppliers.length;
636        final Object[] params = new Object[count];
637        for (int i = 0; i < count; i++) {
638            params[i] = paramSuppliers[i].get();
639            if (params[i] instanceof Message) {
640                params[i] = ((Message) params[i]).getFormattedMessage();
641            }
642        }
643        return entryMsg(format, params);
644    }
645
646    @Override
647    public void error(final Marker marker, final Message msg) {
648        logIfEnabled(FQCN, Level.ERROR, marker, msg, null);
649    }
650
651    @Override
652    public void error(final Marker marker, final Message msg, final Throwable t) {
653        logIfEnabled(FQCN, Level.ERROR, marker, msg, t);
654    }
655
656    @Override
657    public void error(final Marker marker, final CharSequence message) {
658        logIfEnabled(FQCN, Level.ERROR, marker, message, null);
659    }
660
661    @Override
662    public void error(final Marker marker, final CharSequence message, final Throwable t) {
663        logIfEnabled(FQCN, Level.ERROR, marker, message, t);
664    }
665
666    @Override
667    public void error(final Marker marker, final Object message) {
668        logIfEnabled(FQCN, Level.ERROR, marker, message, null);
669    }
670
671    @Override
672    public void error(final Marker marker, final Object message, final Throwable t) {
673        logIfEnabled(FQCN, Level.ERROR, marker, message, t);
674    }
675
676    @Override
677    public void error(final Marker marker, final String message) {
678        logIfEnabled(FQCN, Level.ERROR, marker, message, (Throwable) null);
679    }
680
681    @Override
682    public void error(final Marker marker, final String message, final Object... params) {
683        logIfEnabled(FQCN, Level.ERROR, marker, message, params);
684    }
685
686    @Override
687    public void error(final Marker marker, final String message, final Throwable t) {
688        logIfEnabled(FQCN, Level.ERROR, marker, message, t);
689    }
690
691    @Override
692    public void error(final Message msg) {
693        logIfEnabled(FQCN, Level.ERROR, null, msg, null);
694    }
695
696    @Override
697    public void error(final Message msg, final Throwable t) {
698        logIfEnabled(FQCN, Level.ERROR, null, msg, t);
699    }
700
701    @Override
702    public void error(final CharSequence message) {
703        logIfEnabled(FQCN, Level.ERROR, null, message, null);
704    }
705
706    @Override
707    public void error(final CharSequence message, final Throwable t) {
708        logIfEnabled(FQCN, Level.ERROR, null, message, t);
709    }
710
711    @Override
712    public void error(final Object message) {
713        logIfEnabled(FQCN, Level.ERROR, null, message, null);
714    }
715
716    @Override
717    public void error(final Object message, final Throwable t) {
718        logIfEnabled(FQCN, Level.ERROR, null, message, t);
719    }
720
721    @Override
722    public void error(final String message) {
723        logIfEnabled(FQCN, Level.ERROR, null, message, (Throwable) null);
724    }
725
726    @Override
727    public void error(final String message, final Object... params) {
728        logIfEnabled(FQCN, Level.ERROR, null, message, params);
729    }
730
731    @Override
732    public void error(final String message, final Throwable t) {
733        logIfEnabled(FQCN, Level.ERROR, null, message, t);
734    }
735
736    @Override
737    public void error(final Supplier<?> msgSupplier) {
738        logIfEnabled(FQCN, Level.ERROR, null, msgSupplier, (Throwable) null);
739    }
740
741    @Override
742    public void error(final Supplier<?> msgSupplier, final Throwable t) {
743        logIfEnabled(FQCN, Level.ERROR, null, msgSupplier, t);
744    }
745
746    @Override
747    public void error(final Marker marker, final Supplier<?> msgSupplier) {
748        logIfEnabled(FQCN, Level.ERROR, marker, msgSupplier, (Throwable) null);
749    }
750
751    @Override
752    public void error(final Marker marker, final String message, final Supplier<?>... paramSuppliers) {
753        logIfEnabled(FQCN, Level.ERROR, marker, message, paramSuppliers);
754    }
755
756    @Override
757    public void error(final Marker marker, final Supplier<?> msgSupplier, final Throwable t) {
758        logIfEnabled(FQCN, Level.ERROR, marker, msgSupplier, t);
759    }
760
761    @Override
762    public void error(final String message, final Supplier<?>... paramSuppliers) {
763        logIfEnabled(FQCN, Level.ERROR, null, message, paramSuppliers);
764    }
765
766    @Override
767    public void error(final Marker marker, final MessageSupplier msgSupplier) {
768        logIfEnabled(FQCN, Level.ERROR, marker, msgSupplier, (Throwable) null);
769    }
770
771    @Override
772    public void error(final Marker marker, final MessageSupplier msgSupplier, final Throwable t) {
773        logIfEnabled(FQCN, Level.ERROR, marker, msgSupplier, t);
774    }
775
776    @Override
777    public void error(final MessageSupplier msgSupplier) {
778        logIfEnabled(FQCN, Level.ERROR, null, msgSupplier, (Throwable) null);
779    }
780
781    @Override
782    public void error(final MessageSupplier msgSupplier, final Throwable t) {
783        logIfEnabled(FQCN, Level.ERROR, null, msgSupplier, t);
784    }
785
786    @Override
787    public void error(final Marker marker, final String message, final Object p0) {
788        logIfEnabled(FQCN, Level.ERROR, marker, message, p0);
789    }
790
791    @Override
792    public void error(final Marker marker, final String message, final Object p0, final Object p1) {
793        logIfEnabled(FQCN, Level.ERROR, marker, message, p0, p1);
794    }
795
796    @Override
797    public void error(final Marker marker, final String message, final Object p0, final Object p1, final Object p2) {
798        logIfEnabled(FQCN, Level.ERROR, marker, message, p0, p1, p2);
799    }
800
801    @Override
802    public void error(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
803            final Object p3) {
804        logIfEnabled(FQCN, Level.ERROR, marker, message, p0, p1, p2, p3);
805    }
806
807    @Override
808    public void error(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
809            final Object p3, final Object p4) {
810        logIfEnabled(FQCN, Level.ERROR, marker, message, p0, p1, p2, p3, p4);
811    }
812
813    @Override
814    public void error(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
815            final Object p3, final Object p4, final Object p5) {
816        logIfEnabled(FQCN, Level.ERROR, marker, message, p0, p1, p2, p3, p4, p5);
817    }
818
819    @Override
820    public void error(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
821            final Object p3, final Object p4, final Object p5,
822            final Object p6) {
823        logIfEnabled(FQCN, Level.ERROR, marker, message, p0, p1, p2, p3, p4, p5, p6);
824    }
825
826    @Override
827    public void error(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
828            final Object p3, final Object p4, final Object p5,
829            final Object p6, final Object p7) {
830        logIfEnabled(FQCN, Level.ERROR, marker, message, p0, p1, p2, p3, p4, p5, p6, p7);
831    }
832
833    @Override
834    public void error(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
835            final Object p3, final Object p4, final Object p5,
836            final Object p6, final Object p7, final Object p8) {
837        logIfEnabled(FQCN, Level.ERROR, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
838    }
839
840    @Override
841    public void error(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
842            final Object p3, final Object p4, final Object p5,
843            final Object p6, final Object p7, final Object p8, final Object p9) {
844        logIfEnabled(FQCN, Level.ERROR, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
845    }
846
847    @Override
848    public void error(final String message, final Object p0) {
849        logIfEnabled(FQCN, Level.ERROR, null, message, p0);
850    }
851
852    @Override
853    public void error(final String message, final Object p0, final Object p1) {
854        logIfEnabled(FQCN, Level.ERROR, null, message, p0, p1);
855    }
856
857    @Override
858    public void error(final String message, final Object p0, final Object p1, final Object p2) {
859        logIfEnabled(FQCN, Level.ERROR, null, message, p0, p1, p2);
860    }
861
862    @Override
863    public void error(final String message, final Object p0, final Object p1, final Object p2, final Object p3) {
864        logIfEnabled(FQCN, Level.ERROR, null, message, p0, p1, p2, p3);
865    }
866
867    @Override
868    public void error(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
869            final Object p4) {
870        logIfEnabled(FQCN, Level.ERROR, null, message, p0, p1, p2, p3, p4);
871    }
872
873    @Override
874    public void error(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
875            final Object p4, final Object p5) {
876        logIfEnabled(FQCN, Level.ERROR, null, message, p0, p1, p2, p3, p4, p5);
877    }
878
879    @Override
880    public void error(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
881            final Object p4, final Object p5, final Object p6) {
882        logIfEnabled(FQCN, Level.ERROR, null, message, p0, p1, p2, p3, p4, p5, p6);
883    }
884
885    @Override
886    public void error(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
887            final Object p4, final Object p5, final Object p6, final Object p7) {
888        logIfEnabled(FQCN, Level.ERROR, null, message, p0, p1, p2, p3, p4, p5, p6, p7);
889    }
890
891    @Override
892    public void error(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
893            final Object p4, final Object p5, final Object p6, final Object p7, final Object p8) {
894        logIfEnabled(FQCN, Level.ERROR, null, message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
895    }
896
897    @Override
898    public void error(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
899            final Object p4, final Object p5, final Object p6, final Object p7, final Object p8, final Object p9) {
900        logIfEnabled(FQCN, Level.ERROR, null, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
901    }
902
903    @Override
904    public void exit() {
905        exit(FQCN, (Object) null);
906    }
907
908    @Override
909    public <R> R exit(final R result) {
910        return exit(FQCN, result);
911    }
912
913    /**
914     * Logs exiting from a method with the result and location information.
915     *
916     * @param fqcn The fully qualified class name of the <b>caller</b>.
917     * @param <R> The type of the parameter and object being returned.
918     * @param result The result being returned from the method call.
919     * @return the return value passed to this method.
920     */
921    protected <R> R exit(final String fqcn, final R result) {
922        logIfEnabled(fqcn, Level.TRACE, EXIT_MARKER, exitMsg(null, result), null);
923        return result;
924    }
925
926    /**
927     * Logs exiting from a method with the result and location information.
928     *
929     * @param fqcn The fully qualified class name of the <b>caller</b>.
930     * @param <R> The type of the parameter and object being returned.
931     * @param result The result being returned from the method call.
932     * @return the return value passed to this method.
933     */
934    protected <R> R exit(final String fqcn, final String format, final R result) {
935        logIfEnabled(fqcn, Level.TRACE, EXIT_MARKER, exitMsg(format, result), null);
936        return result;
937    }
938
939    protected Message exitMsg(final String format, final Object result) {
940        if (result == null) {
941            if (format == null) {
942                return messageFactory.newMessage("Exit");
943            }
944            return messageFactory.newMessage("Exit: " + format);
945        }
946        if (format == null) {
947            return messageFactory.newMessage("Exit with(" + result + ')');
948        }
949        return messageFactory.newMessage("Exit: " + format, result);
950
951    }
952
953    @Override
954    public void fatal(final Marker marker, final Message msg) {
955        logIfEnabled(FQCN, Level.FATAL, marker, msg, null);
956    }
957
958    @Override
959    public void fatal(final Marker marker, final Message msg, final Throwable t) {
960        logIfEnabled(FQCN, Level.FATAL, marker, msg, t);
961    }
962
963    @Override
964    public void fatal(final Marker marker, final CharSequence message) {
965        logIfEnabled(FQCN, Level.FATAL, marker, message, null);
966    }
967
968    @Override
969    public void fatal(final Marker marker, final CharSequence message, final Throwable t) {
970        logIfEnabled(FQCN, Level.FATAL, marker, message, t);
971    }
972
973    @Override
974    public void fatal(final Marker marker, final Object message) {
975        logIfEnabled(FQCN, Level.FATAL, marker, message, null);
976    }
977
978    @Override
979    public void fatal(final Marker marker, final Object message, final Throwable t) {
980        logIfEnabled(FQCN, Level.FATAL, marker, message, t);
981    }
982
983    @Override
984    public void fatal(final Marker marker, final String message) {
985        logIfEnabled(FQCN, Level.FATAL, marker, message, (Throwable) null);
986    }
987
988    @Override
989    public void fatal(final Marker marker, final String message, final Object... params) {
990        logIfEnabled(FQCN, Level.FATAL, marker, message, params);
991    }
992
993    @Override
994    public void fatal(final Marker marker, final String message, final Throwable t) {
995        logIfEnabled(FQCN, Level.FATAL, marker, message, t);
996    }
997
998    @Override
999    public void fatal(final Message msg) {
1000        logIfEnabled(FQCN, Level.FATAL, null, msg, null);
1001    }
1002
1003    @Override
1004    public void fatal(final Message msg, final Throwable t) {
1005        logIfEnabled(FQCN, Level.FATAL, null, msg, t);
1006    }
1007
1008    @Override
1009    public void fatal(final CharSequence message) {
1010        logIfEnabled(FQCN, Level.FATAL, null, message, null);
1011    }
1012
1013    @Override
1014    public void fatal(final CharSequence message, final Throwable t) {
1015        logIfEnabled(FQCN, Level.FATAL, null, message, t);
1016    }
1017
1018    @Override
1019    public void fatal(final Object message) {
1020        logIfEnabled(FQCN, Level.FATAL, null, message, null);
1021    }
1022
1023    @Override
1024    public void fatal(final Object message, final Throwable t) {
1025        logIfEnabled(FQCN, Level.FATAL, null, message, t);
1026    }
1027
1028    @Override
1029    public void fatal(final String message) {
1030        logIfEnabled(FQCN, Level.FATAL, null, message, (Throwable) null);
1031    }
1032
1033    @Override
1034    public void fatal(final String message, final Object... params) {
1035        logIfEnabled(FQCN, Level.FATAL, null, message, params);
1036    }
1037
1038    @Override
1039    public void fatal(final String message, final Throwable t) {
1040        logIfEnabled(FQCN, Level.FATAL, null, message, t);
1041    }
1042
1043    @Override
1044    public void fatal(final Supplier<?> msgSupplier) {
1045        logIfEnabled(FQCN, Level.FATAL, null, msgSupplier, (Throwable) null);
1046    }
1047
1048    @Override
1049    public void fatal(final Supplier<?> msgSupplier, final Throwable t) {
1050        logIfEnabled(FQCN, Level.FATAL, null, msgSupplier, t);
1051    }
1052
1053    @Override
1054    public void fatal(final Marker marker, final Supplier<?> msgSupplier) {
1055        logIfEnabled(FQCN, Level.FATAL, marker, msgSupplier, (Throwable) null);
1056    }
1057
1058    @Override
1059    public void fatal(final Marker marker, final String message, final Supplier<?>... paramSuppliers) {
1060        logIfEnabled(FQCN, Level.FATAL, marker, message, paramSuppliers);
1061    }
1062
1063    @Override
1064    public void fatal(final Marker marker, final Supplier<?> msgSupplier, final Throwable t) {
1065        logIfEnabled(FQCN, Level.FATAL, marker, msgSupplier, t);
1066    }
1067
1068    @Override
1069    public void fatal(final String message, final Supplier<?>... paramSuppliers) {
1070        logIfEnabled(FQCN, Level.FATAL, null, message, paramSuppliers);
1071    }
1072
1073    @Override
1074    public void fatal(final Marker marker, final MessageSupplier msgSupplier) {
1075        logIfEnabled(FQCN, Level.FATAL, marker, msgSupplier, (Throwable) null);
1076    }
1077
1078    @Override
1079    public void fatal(final Marker marker, final MessageSupplier msgSupplier, final Throwable t) {
1080        logIfEnabled(FQCN, Level.FATAL, marker, msgSupplier, t);
1081    }
1082
1083    @Override
1084    public void fatal(final MessageSupplier msgSupplier) {
1085        logIfEnabled(FQCN, Level.FATAL, null, msgSupplier, (Throwable) null);
1086    }
1087
1088    @Override
1089    public void fatal(final MessageSupplier msgSupplier, final Throwable t) {
1090        logIfEnabled(FQCN, Level.FATAL, null, msgSupplier, t);
1091    }
1092
1093    @Override
1094    public void fatal(final Marker marker, final String message, final Object p0) {
1095        logIfEnabled(FQCN, Level.FATAL, marker, message, p0);
1096    }
1097
1098    @Override
1099    public void fatal(final Marker marker, final String message, final Object p0, final Object p1) {
1100        logIfEnabled(FQCN, Level.FATAL, marker, message, p0, p1);
1101    }
1102
1103    @Override
1104    public void fatal(final Marker marker, final String message, final Object p0, final Object p1, final Object p2) {
1105        logIfEnabled(FQCN, Level.FATAL, marker, message, p0, p1, p2);
1106    }
1107
1108    @Override
1109    public void fatal(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
1110            final Object p3) {
1111        logIfEnabled(FQCN, Level.FATAL, marker, message, p0, p1, p2, p3);
1112    }
1113
1114    @Override
1115    public void fatal(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
1116            final Object p3, final Object p4) {
1117        logIfEnabled(FQCN, Level.FATAL, marker, message, p0, p1, p2, p3, p4);
1118    }
1119
1120    @Override
1121    public void fatal(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
1122            final Object p3, final Object p4, final Object p5) {
1123        logIfEnabled(FQCN, Level.FATAL, marker, message, p0, p1, p2, p3, p4, p5);
1124    }
1125
1126    @Override
1127    public void fatal(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
1128            final Object p3, final Object p4, final Object p5, final Object p6) {
1129        logIfEnabled(FQCN, Level.FATAL, marker, message, p0, p1, p2, p3, p4, p5, p6);
1130    }
1131
1132    @Override
1133    public void fatal(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
1134            final Object p3, final Object p4, final Object p5, final Object p6, final Object p7) {
1135        logIfEnabled(FQCN, Level.FATAL, marker, message, p0, p1, p2, p3, p4, p5, p6, p7);
1136    }
1137
1138    @Override
1139    public void fatal(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
1140            final Object p3, final Object p4, final Object p5,
1141            final Object p6, final Object p7, final Object p8) {
1142        logIfEnabled(FQCN, Level.FATAL, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
1143    }
1144
1145    @Override
1146    public void fatal(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
1147            final Object p3, final Object p4, final Object p5,
1148            final Object p6, final Object p7, final Object p8, final Object p9) {
1149        logIfEnabled(FQCN, Level.FATAL, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
1150    }
1151
1152    @Override
1153    public void fatal(final String message, final Object p0) {
1154        logIfEnabled(FQCN, Level.FATAL, null, message, p0);
1155    }
1156
1157    @Override
1158    public void fatal(final String message, final Object p0, final Object p1) {
1159        logIfEnabled(FQCN, Level.FATAL, null, message, p0, p1);
1160    }
1161
1162    @Override
1163    public void fatal(final String message, final Object p0, final Object p1, final Object p2) {
1164        logIfEnabled(FQCN, Level.FATAL, null, message, p0, p1, p2);
1165    }
1166
1167    @Override
1168    public void fatal(final String message, final Object p0, final Object p1, final Object p2, final Object p3) {
1169        logIfEnabled(FQCN, Level.FATAL, null, message, p0, p1, p2, p3);
1170    }
1171
1172    @Override
1173    public void fatal(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
1174            final Object p4) {
1175        logIfEnabled(FQCN, Level.FATAL, null, message, p0, p1, p2, p3, p4);
1176    }
1177
1178    @Override
1179    public void fatal(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
1180            final Object p4, final Object p5) {
1181        logIfEnabled(FQCN, Level.FATAL, null, message, p0, p1, p2, p3, p4, p5);
1182    }
1183
1184    @Override
1185    public void fatal(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
1186            final Object p4, final Object p5, final Object p6) {
1187        logIfEnabled(FQCN, Level.FATAL, null, message, p0, p1, p2, p3, p4, p5, p6);
1188    }
1189
1190    @Override
1191    public void fatal(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
1192            final Object p4, final Object p5, final Object p6, final Object p7) {
1193        logIfEnabled(FQCN, Level.FATAL, null, message, p0, p1, p2, p3, p4, p5, p6, p7);
1194    }
1195
1196    @Override
1197    public void fatal(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
1198            final Object p4, final Object p5, final Object p6, final Object p7, final Object p8) {
1199        logIfEnabled(FQCN, Level.FATAL, null, message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
1200    }
1201
1202    @Override
1203    public void fatal(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
1204            final Object p4, final Object p5, final Object p6,
1205            final Object p7, final Object p8, final Object p9) {
1206        logIfEnabled(FQCN, Level.FATAL, null, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
1207    }
1208
1209    @SuppressWarnings("unchecked")
1210    @Override
1211    public <MF extends MessageFactory> MF getMessageFactory() {
1212        return (MF) messageFactory;
1213    }
1214
1215    @Override
1216    public String getName() {
1217        return name;
1218    }
1219
1220    @Override
1221    public void info(final Marker marker, final Message msg) {
1222        logIfEnabled(FQCN, Level.INFO, marker, msg, null);
1223    }
1224
1225    @Override
1226    public void info(final Marker marker, final Message msg, final Throwable t) {
1227        logIfEnabled(FQCN, Level.INFO, marker, msg, t);
1228    }
1229
1230    @Override
1231    public void info(final Marker marker, final CharSequence message) {
1232        logIfEnabled(FQCN, Level.INFO, marker, message, null);
1233    }
1234
1235    @Override
1236    public void info(final Marker marker, final CharSequence message, final Throwable t) {
1237        logIfEnabled(FQCN, Level.INFO, marker, message, t);
1238    }
1239
1240    @Override
1241    public void info(final Marker marker, final Object message) {
1242        logIfEnabled(FQCN, Level.INFO, marker, message, null);
1243    }
1244
1245    @Override
1246    public void info(final Marker marker, final Object message, final Throwable t) {
1247        logIfEnabled(FQCN, Level.INFO, marker, message, t);
1248    }
1249
1250    @Override
1251    public void info(final Marker marker, final String message) {
1252        logIfEnabled(FQCN, Level.INFO, marker, message, (Throwable) null);
1253    }
1254
1255    @Override
1256    public void info(final Marker marker, final String message, final Object... params) {
1257        logIfEnabled(FQCN, Level.INFO, marker, message, params);
1258    }
1259
1260    @Override
1261    public void info(final Marker marker, final String message, final Throwable t) {
1262        logIfEnabled(FQCN, Level.INFO, marker, message, t);
1263    }
1264
1265    @Override
1266    public void info(final Message msg) {
1267        logIfEnabled(FQCN, Level.INFO, null, msg, null);
1268    }
1269
1270    @Override
1271    public void info(final Message msg, final Throwable t) {
1272        logIfEnabled(FQCN, Level.INFO, null, msg, t);
1273    }
1274
1275    @Override
1276    public void info(final CharSequence message) {
1277        logIfEnabled(FQCN, Level.INFO, null, message, null);
1278    }
1279
1280    @Override
1281    public void info(final CharSequence message, final Throwable t) {
1282        logIfEnabled(FQCN, Level.INFO, null, message, t);
1283    }
1284
1285    @Override
1286    public void info(final Object message) {
1287        logIfEnabled(FQCN, Level.INFO, null, message, null);
1288    }
1289
1290    @Override
1291    public void info(final Object message, final Throwable t) {
1292        logIfEnabled(FQCN, Level.INFO, null, message, t);
1293    }
1294
1295    @Override
1296    public void info(final String message) {
1297        logIfEnabled(FQCN, Level.INFO, null, message, (Throwable) null);
1298    }
1299
1300    @Override
1301    public void info(final String message, final Object... params) {
1302        logIfEnabled(FQCN, Level.INFO, null, message, params);
1303    }
1304
1305    @Override
1306    public void info(final String message, final Throwable t) {
1307        logIfEnabled(FQCN, Level.INFO, null, message, t);
1308    }
1309
1310    @Override
1311    public void info(final Supplier<?> msgSupplier) {
1312        logIfEnabled(FQCN, Level.INFO, null, msgSupplier, (Throwable) null);
1313    }
1314
1315    @Override
1316    public void info(final Supplier<?> msgSupplier, final Throwable t) {
1317        logIfEnabled(FQCN, Level.INFO, null, msgSupplier, t);
1318    }
1319
1320    @Override
1321    public void info(final Marker marker, final Supplier<?> msgSupplier) {
1322        logIfEnabled(FQCN, Level.INFO, marker, msgSupplier, (Throwable) null);
1323    }
1324
1325    @Override
1326    public void info(final Marker marker, final String message, final Supplier<?>... paramSuppliers) {
1327        logIfEnabled(FQCN, Level.INFO, marker, message, paramSuppliers);
1328    }
1329
1330    @Override
1331    public void info(final Marker marker, final Supplier<?> msgSupplier, final Throwable t) {
1332        logIfEnabled(FQCN, Level.INFO, marker, msgSupplier, t);
1333    }
1334
1335    @Override
1336    public void info(final String message, final Supplier<?>... paramSuppliers) {
1337        logIfEnabled(FQCN, Level.INFO, null, message, paramSuppliers);
1338    }
1339
1340    @Override
1341    public void info(final Marker marker, final MessageSupplier msgSupplier) {
1342        logIfEnabled(FQCN, Level.INFO, marker, msgSupplier, (Throwable) null);
1343    }
1344
1345    @Override
1346    public void info(final Marker marker, final MessageSupplier msgSupplier, final Throwable t) {
1347        logIfEnabled(FQCN, Level.INFO, marker, msgSupplier, t);
1348    }
1349
1350    @Override
1351    public void info(final MessageSupplier msgSupplier) {
1352        logIfEnabled(FQCN, Level.INFO, null, msgSupplier, (Throwable) null);
1353    }
1354
1355    @Override
1356    public void info(final MessageSupplier msgSupplier, final Throwable t) {
1357        logIfEnabled(FQCN, Level.INFO, null, msgSupplier, t);
1358    }
1359
1360    @Override
1361    public void info(final Marker marker, final String message, final Object p0) {
1362        logIfEnabled(FQCN, Level.INFO, marker, message, p0);
1363    }
1364
1365    @Override
1366    public void info(final Marker marker, final String message, final Object p0, final Object p1) {
1367        logIfEnabled(FQCN, Level.INFO, marker, message, p0, p1);
1368    }
1369
1370    @Override
1371    public void info(final Marker marker, final String message, final Object p0, final Object p1, final Object p2) {
1372        logIfEnabled(FQCN, Level.INFO, marker, message, p0, p1, p2);
1373    }
1374
1375    @Override
1376    public void info(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
1377            final Object p3) {
1378        logIfEnabled(FQCN, Level.INFO, marker, message, p0, p1, p2, p3);
1379    }
1380
1381    @Override
1382    public void info(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
1383            final Object p3, final Object p4) {
1384        logIfEnabled(FQCN, Level.INFO, marker, message, p0, p1, p2, p3, p4);
1385    }
1386
1387    @Override
1388    public void info(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
1389            final Object p3, final Object p4, final Object p5) {
1390        logIfEnabled(FQCN, Level.INFO, marker, message, p0, p1, p2, p3, p4, p5);
1391    }
1392
1393    @Override
1394    public void info(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
1395            final Object p3, final Object p4, final Object p5, final Object p6) {
1396        logIfEnabled(FQCN, Level.INFO, marker, message, p0, p1, p2, p3, p4, p5, p6);
1397    }
1398
1399    @Override
1400    public void info(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
1401            final Object p3, final Object p4, final Object p5, final Object p6, final Object p7) {
1402        logIfEnabled(FQCN, Level.INFO, marker, message, p0, p1, p2, p3, p4, p5, p6, p7);
1403    }
1404
1405    @Override
1406    public void info(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
1407            final Object p3, final Object p4, final Object p5,
1408            final Object p6, final Object p7, final Object p8) {
1409        logIfEnabled(FQCN, Level.INFO, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
1410    }
1411
1412    @Override
1413    public void info(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
1414            final Object p3, final Object p4, final Object p5,
1415            final Object p6, final Object p7, final Object p8, final Object p9) {
1416        logIfEnabled(FQCN, Level.INFO, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
1417    }
1418
1419    @Override
1420    public void info(final String message, final Object p0) {
1421        logIfEnabled(FQCN, Level.INFO, null, message, p0);
1422    }
1423
1424    @Override
1425    public void info(final String message, final Object p0, final Object p1) {
1426        logIfEnabled(FQCN, Level.INFO, null, message, p0, p1);
1427    }
1428
1429    @Override
1430    public void info(final String message, final Object p0, final Object p1, final Object p2) {
1431        logIfEnabled(FQCN, Level.INFO, null, message, p0, p1, p2);
1432    }
1433
1434    @Override
1435    public void info(final String message, final Object p0, final Object p1, final Object p2, final Object p3) {
1436        logIfEnabled(FQCN, Level.INFO, null, message, p0, p1, p2, p3);
1437    }
1438
1439    @Override
1440    public void info(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
1441            final Object p4) {
1442        logIfEnabled(FQCN, Level.INFO, null, message, p0, p1, p2, p3, p4);
1443    }
1444
1445    @Override
1446    public void info(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
1447            final Object p4, final Object p5) {
1448        logIfEnabled(FQCN, Level.INFO, null, message, p0, p1, p2, p3, p4, p5);
1449    }
1450
1451    @Override
1452    public void info(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
1453            final Object p4, final Object p5, final Object p6) {
1454        logIfEnabled(FQCN, Level.INFO, null, message, p0, p1, p2, p3, p4, p5, p6);
1455    }
1456
1457    @Override
1458    public void info(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
1459            final Object p4, final Object p5, final Object p6,
1460            final Object p7) {
1461        logIfEnabled(FQCN, Level.INFO, null, message, p0, p1, p2, p3, p4, p5, p6, p7);
1462    }
1463
1464    @Override
1465    public void info(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
1466            final Object p4, final Object p5, final Object p6,
1467            final Object p7, final Object p8) {
1468        logIfEnabled(FQCN, Level.INFO, null, message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
1469    }
1470
1471    @Override
1472    public void info(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
1473            final Object p4, final Object p5, final Object p6,
1474            final Object p7, final Object p8, final Object p9) {
1475        logIfEnabled(FQCN, Level.INFO, null, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
1476    }
1477
1478    @Override
1479    public boolean isDebugEnabled() {
1480        return isEnabled(Level.DEBUG, null, null);
1481    }
1482
1483    @Override
1484    public boolean isDebugEnabled(final Marker marker) {
1485        return isEnabled(Level.DEBUG, marker, (Object) null, null);
1486    }
1487
1488    @Override
1489    public boolean isEnabled(final Level level) {
1490        return isEnabled(level, null, (Object) null, null);
1491    }
1492
1493    @Override
1494    public boolean isEnabled(final Level level, final Marker marker) {
1495        return isEnabled(level, marker, (Object) null, null);
1496    }
1497
1498    @Override
1499    public boolean isErrorEnabled() {
1500        return isEnabled(Level.ERROR, null, (Object) null, null);
1501    }
1502
1503    @Override
1504    public boolean isErrorEnabled(final Marker marker) {
1505        return isEnabled(Level.ERROR, marker, (Object) null, null);
1506    }
1507
1508    @Override
1509    public boolean isFatalEnabled() {
1510        return isEnabled(Level.FATAL, null, (Object) null, null);
1511    }
1512
1513    @Override
1514    public boolean isFatalEnabled(final Marker marker) {
1515        return isEnabled(Level.FATAL, marker, (Object) null, null);
1516    }
1517
1518    @Override
1519    public boolean isInfoEnabled() {
1520        return isEnabled(Level.INFO, null, (Object) null, null);
1521    }
1522
1523    @Override
1524    public boolean isInfoEnabled(final Marker marker) {
1525        return isEnabled(Level.INFO, marker, (Object) null, null);
1526    }
1527
1528    @Override
1529    public boolean isTraceEnabled() {
1530        return isEnabled(Level.TRACE, null, (Object) null, null);
1531    }
1532
1533    @Override
1534    public boolean isTraceEnabled(final Marker marker) {
1535        return isEnabled(Level.TRACE, marker, (Object) null, null);
1536    }
1537
1538    @Override
1539    public boolean isWarnEnabled() {
1540        return isEnabled(Level.WARN, null, (Object) null, null);
1541    }
1542
1543    @Override
1544    public boolean isWarnEnabled(final Marker marker) {
1545        return isEnabled(Level.WARN, marker, (Object) null, null);
1546    }
1547
1548    @Override
1549    public void log(final Level level, final Marker marker, final Message msg) {
1550        logIfEnabled(FQCN, level, marker, msg, (Throwable) null);
1551    }
1552
1553    @Override
1554    public void log(final Level level, final Marker marker, final Message msg, final Throwable t) {
1555        logIfEnabled(FQCN, level, marker, msg, t);
1556    }
1557
1558    @Override
1559    public void log(final Level level, final Marker marker, final CharSequence message) {
1560        logIfEnabled(FQCN, level, marker, message, (Throwable) null);
1561    }
1562
1563    @Override
1564    public void log(final Level level, final Marker marker, final CharSequence message, final Throwable t) {
1565        if (isEnabled(level, marker, message, t)) {
1566            logMessage(FQCN, level, marker, message, t);
1567        }
1568    }
1569
1570    @Override
1571    public void log(final Level level, final Marker marker, final Object message) {
1572        logIfEnabled(FQCN, level, marker, message, (Throwable) null);
1573    }
1574
1575    @Override
1576    public void log(final Level level, final Marker marker, final Object message, final Throwable t) {
1577        if (isEnabled(level, marker, message, t)) {
1578            logMessage(FQCN, level, marker, message, t);
1579        }
1580    }
1581
1582    @Override
1583    public void log(final Level level, final Marker marker, final String message) {
1584        logIfEnabled(FQCN, level, marker, message, (Throwable) null);
1585    }
1586
1587    @Override
1588    public void log(final Level level, final Marker marker, final String message, final Object... params) {
1589        logIfEnabled(FQCN, level, marker, message, params);
1590    }
1591
1592    @Override
1593    public void log(final Level level, final Marker marker, final String message, final Throwable t) {
1594        logIfEnabled(FQCN, level, marker, message, t);
1595    }
1596
1597    @Override
1598    public void log(final Level level, final Message msg) {
1599        logIfEnabled(FQCN, level, null, msg, null);
1600    }
1601
1602    @Override
1603    public void log(final Level level, final Message msg, final Throwable t) {
1604        logIfEnabled(FQCN, level, null, msg, t);
1605    }
1606
1607    @Override
1608    public void log(final Level level, final CharSequence message) {
1609        logIfEnabled(FQCN, level, null, message, null);
1610    }
1611
1612    @Override
1613    public void log(final Level level, final CharSequence message, final Throwable t) {
1614        logIfEnabled(FQCN, level, null, message, t);
1615    }
1616
1617    @Override
1618    public void log(final Level level, final Object message) {
1619        logIfEnabled(FQCN, level, null, message, null);
1620    }
1621
1622    @Override
1623    public void log(final Level level, final Object message, final Throwable t) {
1624        logIfEnabled(FQCN, level, null, message, t);
1625    }
1626
1627    @Override
1628    public void log(final Level level, final String message) {
1629        logIfEnabled(FQCN, level, null, message, (Throwable) null);
1630    }
1631
1632    @Override
1633    public void log(final Level level, final String message, final Object... params) {
1634        logIfEnabled(FQCN, level, null, message, params);
1635    }
1636
1637    @Override
1638    public void log(final Level level, final String message, final Throwable t) {
1639        logIfEnabled(FQCN, level, null, message, t);
1640    }
1641
1642    @Override
1643    public void log(final Level level, final Supplier<?> msgSupplier) {
1644        logIfEnabled(FQCN, level, null, msgSupplier, (Throwable) null);
1645    }
1646
1647    @Override
1648    public void log(final Level level, final Supplier<?> msgSupplier, final Throwable t) {
1649        logIfEnabled(FQCN, level, null, msgSupplier, t);
1650    }
1651
1652    @Override
1653    public void log(final Level level, final Marker marker, final Supplier<?> msgSupplier) {
1654        logIfEnabled(FQCN, level, marker, msgSupplier, (Throwable) null);
1655    }
1656
1657    @Override
1658    public void log(final Level level, final Marker marker, final String message, final Supplier<?>... paramSuppliers) {
1659        logIfEnabled(FQCN, level, marker, message, paramSuppliers);
1660    }
1661
1662    @Override
1663    public void log(final Level level, final Marker marker, final Supplier<?> msgSupplier, final Throwable t) {
1664        logIfEnabled(FQCN, level, marker, msgSupplier, t);
1665    }
1666
1667    @Override
1668    public void log(final Level level, final String message, final Supplier<?>... paramSuppliers) {
1669        logIfEnabled(FQCN, level, null, message, paramSuppliers);
1670    }
1671
1672    @Override
1673    public void log(final Level level, final Marker marker, final MessageSupplier msgSupplier) {
1674        logIfEnabled(FQCN, level, marker, msgSupplier, (Throwable) null);
1675    }
1676
1677    @Override
1678    public void log(final Level level, final Marker marker, final MessageSupplier msgSupplier, final Throwable t) {
1679        logIfEnabled(FQCN, level, marker, msgSupplier, t);
1680    }
1681
1682    @Override
1683    public void log(final Level level, final MessageSupplier msgSupplier) {
1684        logIfEnabled(FQCN, level, null, msgSupplier, (Throwable) null);
1685    }
1686
1687    @Override
1688    public void log(final Level level, final MessageSupplier msgSupplier, final Throwable t) {
1689        logIfEnabled(FQCN, level, null, msgSupplier, t);
1690    }
1691
1692    @Override
1693    public void log(final Level level, final Marker marker, final String message, final Object p0) {
1694        logIfEnabled(FQCN, level, marker, message, p0);
1695    }
1696
1697    @Override
1698    public void log(final Level level, final Marker marker, final String message, final Object p0, final Object p1) {
1699        logIfEnabled(FQCN, level, marker, message, p0, p1);
1700    }
1701
1702    @Override
1703    public void log(final Level level, final Marker marker, final String message, final Object p0, final Object p1,
1704            final Object p2) {
1705        logIfEnabled(FQCN, level, marker, message, p0, p1, p2);
1706    }
1707
1708    @Override
1709    public void log(final Level level, final Marker marker, final String message, final Object p0, final Object p1,
1710            final Object p2, final Object p3) {
1711        logIfEnabled(FQCN, level, marker, message, p0, p1, p2, p3);
1712    }
1713
1714    @Override
1715    public void log(final Level level, final Marker marker, final String message, final Object p0, final Object p1,
1716            final Object p2, final Object p3, final Object p4) {
1717        logIfEnabled(FQCN, level, marker, message, p0, p1, p2, p3, p4);
1718    }
1719
1720    @Override
1721    public void log(final Level level, final Marker marker, final String message, final Object p0, final Object p1,
1722            final Object p2, final Object p3, final Object p4, final Object p5) {
1723        logIfEnabled(FQCN, level, marker, message, p0, p1, p2, p3, p4, p5);
1724    }
1725
1726    @Override
1727    public void log(final Level level, final Marker marker, final String message, final Object p0, final Object p1,
1728            final Object p2, final Object p3, final Object p4, final Object p5, final Object p6) {
1729        logIfEnabled(FQCN, level, marker, message, p0, p1, p2, p3, p4, p5, p6);
1730    }
1731
1732    @Override
1733    public void log(final Level level, final Marker marker, final String message, final Object p0, final Object p1,
1734            final Object p2, final Object p3, final Object p4, final Object p5,
1735            final Object p6, final Object p7) {
1736        logIfEnabled(FQCN, level, marker, message, p0, p1, p2, p3, p4, p5, p6, p7);
1737    }
1738
1739    @Override
1740    public void log(final Level level, final Marker marker, final String message, final Object p0, final Object p1,
1741            final Object p2, final Object p3, final Object p4, final Object p5,
1742            final Object p6, final Object p7, final Object p8) {
1743        logIfEnabled(FQCN, level, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
1744    }
1745
1746    @Override
1747    public void log(final Level level, final Marker marker, final String message, final Object p0, final Object p1,
1748            final Object p2, final Object p3, final Object p4, final Object p5,
1749            final Object p6, final Object p7, final Object p8, final Object p9) {
1750        logIfEnabled(FQCN, level, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
1751    }
1752
1753    @Override
1754    public void log(final Level level, final String message, final Object p0) {
1755        logIfEnabled(FQCN, level, null, message, p0);
1756    }
1757
1758    @Override
1759    public void log(final Level level, final String message, final Object p0, final Object p1) {
1760        logIfEnabled(FQCN, level, null, message, p0, p1);
1761    }
1762
1763    @Override
1764    public void log(final Level level, final String message, final Object p0, final Object p1, final Object p2) {
1765        logIfEnabled(FQCN, level, null, message, p0, p1, p2);
1766    }
1767
1768    @Override
1769    public void log(final Level level, final String message, final Object p0, final Object p1, final Object p2, final Object p3) {
1770        logIfEnabled(FQCN, level, null, message, p0, p1, p2, p3);
1771    }
1772
1773    @Override
1774    public void log(final Level level, final String message, final Object p0, final Object p1, final Object p2, final Object p3,
1775            final Object p4) {
1776        logIfEnabled(FQCN, level, null, message, p0, p1, p2, p3, p4);
1777    }
1778
1779    @Override
1780    public void log(final Level level, final String message, final Object p0, final Object p1, final Object p2, final Object p3,
1781            final Object p4, final Object p5) {
1782        logIfEnabled(FQCN, level, null, message, p0, p1, p2, p3, p4, p5);
1783    }
1784
1785    @Override
1786    public void log(final Level level, final String message, final Object p0, final Object p1, final Object p2, final Object p3,
1787            final Object p4, final Object p5, final Object p6) {
1788        logIfEnabled(FQCN, level, null, message, p0, p1, p2, p3, p4, p5, p6);
1789    }
1790
1791    @Override
1792    public void log(final Level level, final String message, final Object p0, final Object p1, final Object p2, final Object p3,
1793            final Object p4, final Object p5, final Object p6, final Object p7) {
1794        logIfEnabled(FQCN, level, null, message, p0, p1, p2, p3, p4, p5, p6, p7);
1795    }
1796
1797    @Override
1798    public void log(final Level level, final String message, final Object p0, final Object p1, final Object p2, final Object p3,
1799            final Object p4, final Object p5, final Object p6, final Object p7, final Object p8) {
1800        logIfEnabled(FQCN, level, null, message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
1801    }
1802
1803    @Override
1804    public void log(final Level level, final String message, final Object p0, final Object p1, final Object p2, final Object p3,
1805            final Object p4, final Object p5, final Object p6, final Object p7, final Object p8, final Object p9) {
1806        logIfEnabled(FQCN, level, null, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
1807    }
1808
1809    @Override
1810    public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final Message msg,
1811            final Throwable t) {
1812        if (isEnabled(level, marker, msg, t)) {
1813            logMessage(fqcn, level, marker, msg, t);
1814        }
1815    }
1816
1817    @Override
1818    public void logIfEnabled(final String fqcn, final Level level, final Marker marker,
1819            final MessageSupplier msgSupplier, final Throwable t) {
1820        if (isEnabled(level, marker, msgSupplier, t)) {
1821            logMessage(fqcn, level, marker, msgSupplier, t);
1822        }
1823    }
1824
1825    @Override
1826    public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final Object message,
1827            final Throwable t) {
1828        if (isEnabled(level, marker, message, t)) {
1829            logMessage(fqcn, level, marker, message, t);
1830        }
1831    }
1832
1833    @Override
1834    public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final CharSequence message,
1835            final Throwable t) {
1836        if (isEnabled(level, marker, message, t)) {
1837            logMessage(fqcn, level, marker, message, t);
1838        }
1839    }
1840
1841    @Override
1842    public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final Supplier<?> msgSupplier,
1843            final Throwable t) {
1844        if (isEnabled(level, marker, msgSupplier, t)) {
1845            logMessage(fqcn, level, marker, msgSupplier, t);
1846        }
1847    }
1848
1849    @Override
1850    public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final String message) {
1851        if (isEnabled(level, marker, message)) {
1852            logMessage(fqcn, level, marker, message);
1853        }
1854    }
1855
1856    @Override
1857    public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final String message,
1858            final Supplier<?>... paramSuppliers) {
1859        if (isEnabled(level, marker, message)) {
1860            logMessage(fqcn, level, marker, message, paramSuppliers);
1861        }
1862    }
1863
1864    @Override
1865    public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final String message,
1866            final Object... params) {
1867        if (isEnabled(level, marker, message, params)) {
1868            logMessage(fqcn, level, marker, message, params);
1869        }
1870    }
1871
1872    @Override
1873    public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final String message,
1874            final Object p0) {
1875        if (isEnabled(level, marker, message, p0)) {
1876            logMessage(fqcn, level, marker, message, p0);
1877        }
1878    }
1879
1880    @Override
1881    public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final String message,
1882            final Object p0, final Object p1) {
1883        if (isEnabled(level, marker, message, p0, p1)) {
1884            logMessage(fqcn, level, marker, message, p0, p1);
1885        }
1886    }
1887
1888    @Override
1889    public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final String message,
1890            final Object p0, final Object p1, final Object p2) {
1891        if (isEnabled(level, marker, message, p0, p1, p2)) {
1892            logMessage(fqcn, level, marker, message, p0, p1, p2);
1893        }
1894    }
1895
1896    @Override
1897    public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final String message,
1898            final Object p0, final Object p1, final Object p2, final Object p3) {
1899        if (isEnabled(level, marker, message, p0, p1, p2, p3)) {
1900            logMessage(fqcn, level, marker, message, p0, p1, p2, p3);
1901        }
1902    }
1903
1904    @Override
1905    public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final String message,
1906            final Object p0, final Object p1, final Object p2, final Object p3, final Object p4) {
1907        if (isEnabled(level, marker, message, p0, p1, p2, p3, p4)) {
1908            logMessage(fqcn, level, marker, message, p0, p1, p2, p3, p4);
1909        }
1910    }
1911
1912    @Override
1913    public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final String message,
1914            final Object p0, final Object p1, final Object p2, final Object p3, final Object p4, final Object p5) {
1915        if (isEnabled(level, marker, message, p0, p1, p2, p3, p4, p5)) {
1916            logMessage(fqcn, level, marker, message, p0, p1, p2, p3, p4, p5);
1917        }
1918    }
1919
1920    @Override
1921    public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final String message,
1922            final Object p0, final Object p1, final Object p2, final Object p3, final Object p4, final Object p5,
1923            final Object p6) {
1924        if (isEnabled(level, marker, message, p0, p1, p2, p3, p4, p5, p6)) {
1925            logMessage(fqcn, level, marker, message, p0, p1, p2, p3, p4, p5, p6);
1926        }
1927    }
1928
1929    @Override
1930    public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final String message,
1931            final Object p0, final Object p1, final Object p2, final Object p3, final Object p4, final Object p5,
1932            final Object p6, final Object p7) {
1933        if (isEnabled(level, marker, message, p0, p1, p2, p3, p4, p5, p6, p7)) {
1934            logMessage(fqcn, level, marker, message, p0, p1, p2, p3, p4, p5, p6, p7);
1935        }
1936    }
1937
1938    @Override
1939    public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final String message,
1940            final Object p0, final Object p1, final Object p2, final Object p3, final Object p4, final Object p5,
1941            final Object p6, final Object p7, final Object p8) {
1942        if (isEnabled(level, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8)) {
1943            logMessage(fqcn, level, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
1944        }
1945    }
1946
1947    @Override
1948    public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final String message,
1949            final Object p0, final Object p1, final Object p2, final Object p3, final Object p4, final Object p5,
1950            final Object p6, final Object p7, final Object p8, final Object p9) {
1951        if (isEnabled(level, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)) {
1952            logMessage(fqcn, level, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
1953        }
1954    }
1955
1956    @Override
1957    public void logIfEnabled(final String fqcn, final Level level, final Marker marker, final String message,
1958            final Throwable t) {
1959        if (isEnabled(level, marker, message, t)) {
1960            logMessage(fqcn, level, marker, message, t);
1961        }
1962    }
1963
1964    protected void logMessage(final String fqcn, final Level level, final Marker marker, final CharSequence message,
1965            final Throwable t) {
1966        logMessage(fqcn, level, marker, messageFactory.newMessage(message), t);
1967    }
1968
1969    protected void logMessage(final String fqcn, final Level level, final Marker marker, final Object message,
1970            final Throwable t) {
1971        logMessage(fqcn, level, marker, messageFactory.newMessage(message), t);
1972    }
1973
1974    protected void logMessage(final String fqcn, final Level level, final Marker marker,
1975            final MessageSupplier msgSupplier, final Throwable t) {
1976        final Message message = LambdaUtil.get(msgSupplier);
1977        logMessage(fqcn, level, marker, message, t);
1978    }
1979
1980    protected void logMessage(final String fqcn, final Level level, final Marker marker, final Supplier<?> msgSupplier,
1981            final Throwable t) {
1982        final Message message = LambdaUtil.getMessage(msgSupplier, messageFactory);
1983        logMessage(fqcn, level, marker, message, t);
1984    }
1985
1986    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
1987            final Throwable t) {
1988        logMessage(fqcn, level, marker, messageFactory.newMessage(message), t);
1989    }
1990
1991    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message) {
1992        final Message msg = messageFactory.newMessage(message);
1993        logMessage(fqcn, level, marker, msg, msg.getThrowable());
1994    }
1995
1996    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
1997            final Object... params) {
1998        final Message msg = messageFactory.newMessage(message, params);
1999        logMessage(fqcn, level, marker, msg, msg.getThrowable());
2000    }
2001
2002    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
2003            final Object p0) {
2004        final Message msg = messageFactory.newMessage(message, p0);
2005        logMessage(fqcn, level, marker, msg, msg.getThrowable());
2006    }
2007
2008    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
2009            final Object p0, final Object p1) {
2010        final Message msg = messageFactory.newMessage(message, p0, p1);
2011        logMessage(fqcn, level, marker, msg, msg.getThrowable());
2012    }
2013
2014    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
2015            final Object p0, final Object p1, final Object p2) {
2016        final Message msg = messageFactory.newMessage(message, p0, p1, p2);
2017        logMessage(fqcn, level, marker, msg, msg.getThrowable());
2018    }
2019
2020    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
2021            final Object p0, final Object p1, final Object p2, final Object p3) {
2022        final Message msg = messageFactory.newMessage(message, p0, p1, p2, p3);
2023        logMessage(fqcn, level, marker, msg, msg.getThrowable());
2024    }
2025
2026    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
2027            final Object p0, final Object p1, final Object p2, final Object p3, final Object p4) {
2028        final Message msg = messageFactory.newMessage(message, p0, p1, p2, p3, p4);
2029        logMessage(fqcn, level, marker, msg, msg.getThrowable());
2030    }
2031
2032    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
2033            final Object p0, final Object p1, final Object p2, final Object p3, final Object p4, final Object p5) {
2034        final Message msg = messageFactory.newMessage(message, p0, p1, p2, p3, p4, p5);
2035        logMessage(fqcn, level, marker, msg, msg.getThrowable());
2036    }
2037
2038    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
2039            final Object p0, final Object p1, final Object p2, final Object p3, final Object p4, final Object p5,
2040            final Object p6) {
2041        final Message msg = messageFactory.newMessage(message, p0, p1, p2, p3, p4, p5, p6);
2042        logMessage(fqcn, level, marker, msg, msg.getThrowable());
2043    }
2044
2045    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
2046            final Object p0, final Object p1, final Object p2, final Object p3, final Object p4, final Object p5,
2047            final Object p6, final Object p7) {
2048        final Message msg = messageFactory.newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7);
2049        logMessage(fqcn, level, marker, msg, msg.getThrowable());
2050    }
2051
2052    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
2053            final Object p0, final Object p1, final Object p2, final Object p3, final Object p4, final Object p5,
2054            final Object p6, final Object p7, final Object p8) {
2055        final Message msg = messageFactory.newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
2056        logMessage(fqcn, level, marker, msg, msg.getThrowable());
2057    }
2058
2059    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
2060            final Object p0, final Object p1, final Object p2, final Object p3, final Object p4, final Object p5,
2061            final Object p6, final Object p7, final Object p8, final Object p9) {
2062        final Message msg = messageFactory.newMessage(message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
2063        logMessage(fqcn, level, marker, msg, msg.getThrowable());
2064    }
2065
2066    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
2067            final Supplier<?>... paramSuppliers) {
2068        final Message msg = messageFactory.newMessage(message, LambdaUtil.getAll(paramSuppliers));
2069        logMessage(fqcn, level, marker, msg, msg.getThrowable());
2070    }
2071
2072    @Override
2073    public void printf(final Level level, final Marker marker, final String format, final Object... params) {
2074        if (isEnabled(level, marker, format, params)) {
2075            final Message msg = new StringFormattedMessage(format, params);
2076            logMessage(FQCN, level, marker, msg, msg.getThrowable());
2077        }
2078    }
2079
2080    @Override
2081    public void printf(final Level level, final String format, final Object... params) {
2082        if (isEnabled(level, null, format, params)) {
2083            final Message msg = new StringFormattedMessage(format, params);
2084            logMessage(FQCN, level, null, msg, msg.getThrowable());
2085        }
2086    }
2087
2088    @Override
2089    public <T extends Throwable> T throwing(final T t) {
2090        return throwing(FQCN, Level.ERROR, t);
2091    }
2092
2093    @Override
2094    public <T extends Throwable> T throwing(final Level level, final T t) {
2095        return throwing(FQCN, level, t);
2096    }
2097
2098    /**
2099     * Logs a Throwable to be thrown.
2100     *
2101     * @param <T> the type of the Throwable.
2102     * @param fqcn the fully qualified class name of this Logger implementation.
2103     * @param level The logging Level.
2104     * @param t The Throwable.
2105     * @return the Throwable.
2106     */
2107    protected <T extends Throwable> T throwing(final String fqcn, final Level level, final T t) {
2108        if (isEnabled(level, THROWING_MARKER, (Object) null, null)) {
2109            logMessage(fqcn, level, THROWING_MARKER, throwingMsg(t), t);
2110        }
2111        return t;
2112    }
2113
2114    protected Message throwingMsg(final Throwable t) {
2115        return messageFactory.newMessage(THROWING);
2116    }
2117
2118    @Override
2119    public void trace(final Marker marker, final Message msg) {
2120        logIfEnabled(FQCN, Level.TRACE, marker, msg, null);
2121    }
2122
2123    @Override
2124    public void trace(final Marker marker, final Message msg, final Throwable t) {
2125        logIfEnabled(FQCN, Level.TRACE, marker, msg, t);
2126    }
2127
2128    @Override
2129    public void trace(final Marker marker, final CharSequence message) {
2130        logIfEnabled(FQCN, Level.TRACE, marker, message, null);
2131    }
2132
2133    @Override
2134    public void trace(final Marker marker, final CharSequence message, final Throwable t) {
2135        logIfEnabled(FQCN, Level.TRACE, marker, message, t);
2136    }
2137
2138    @Override
2139    public void trace(final Marker marker, final Object message) {
2140        logIfEnabled(FQCN, Level.TRACE, marker, message, null);
2141    }
2142
2143    @Override
2144    public void trace(final Marker marker, final Object message, final Throwable t) {
2145        logIfEnabled(FQCN, Level.TRACE, marker, message, t);
2146    }
2147
2148    @Override
2149    public void trace(final Marker marker, final String message) {
2150        logIfEnabled(FQCN, Level.TRACE, marker, message, (Throwable) null);
2151    }
2152
2153    @Override
2154    public void trace(final Marker marker, final String message, final Object... params) {
2155        logIfEnabled(FQCN, Level.TRACE, marker, message, params);
2156    }
2157
2158    @Override
2159    public void trace(final Marker marker, final String message, final Throwable t) {
2160        logIfEnabled(FQCN, Level.TRACE, marker, message, t);
2161    }
2162
2163    @Override
2164    public void trace(final Message msg) {
2165        logIfEnabled(FQCN, Level.TRACE, null, msg, null);
2166    }
2167
2168    @Override
2169    public void trace(final Message msg, final Throwable t) {
2170        logIfEnabled(FQCN, Level.TRACE, null, msg, t);
2171    }
2172
2173    @Override
2174    public void trace(final CharSequence message) {
2175        logIfEnabled(FQCN, Level.TRACE, null, message, null);
2176    }
2177
2178    @Override
2179    public void trace(final CharSequence message, final Throwable t) {
2180        logIfEnabled(FQCN, Level.TRACE, null, message, t);
2181    }
2182
2183    @Override
2184    public void trace(final Object message) {
2185        logIfEnabled(FQCN, Level.TRACE, null, message, null);
2186    }
2187
2188    @Override
2189    public void trace(final Object message, final Throwable t) {
2190        logIfEnabled(FQCN, Level.TRACE, null, message, t);
2191    }
2192
2193    @Override
2194    public void trace(final String message) {
2195        logIfEnabled(FQCN, Level.TRACE, null, message, (Throwable) null);
2196    }
2197
2198    @Override
2199    public void trace(final String message, final Object... params) {
2200        logIfEnabled(FQCN, Level.TRACE, null, message, params);
2201    }
2202
2203    @Override
2204    public void trace(final String message, final Throwable t) {
2205        logIfEnabled(FQCN, Level.TRACE, null, message, t);
2206    }
2207
2208    @Override
2209    public void trace(final Supplier<?> msgSupplier) {
2210        logIfEnabled(FQCN, Level.TRACE, null, msgSupplier, (Throwable) null);
2211    }
2212
2213    @Override
2214    public void trace(final Supplier<?> msgSupplier, final Throwable t) {
2215        logIfEnabled(FQCN, Level.TRACE, null, msgSupplier, t);
2216    }
2217
2218    @Override
2219    public void trace(final Marker marker, final Supplier<?> msgSupplier) {
2220        logIfEnabled(FQCN, Level.TRACE, marker, msgSupplier, (Throwable) null);
2221    }
2222
2223    @Override
2224    public void trace(final Marker marker, final String message, final Supplier<?>... paramSuppliers) {
2225        logIfEnabled(FQCN, Level.TRACE, marker, message, paramSuppliers);
2226    }
2227
2228    @Override
2229    public void trace(final Marker marker, final Supplier<?> msgSupplier, final Throwable t) {
2230        logIfEnabled(FQCN, Level.TRACE, marker, msgSupplier, t);
2231    }
2232
2233    @Override
2234    public void trace(final String message, final Supplier<?>... paramSuppliers) {
2235        logIfEnabled(FQCN, Level.TRACE, null, message, paramSuppliers);
2236    }
2237
2238    @Override
2239    public void trace(final Marker marker, final MessageSupplier msgSupplier) {
2240        logIfEnabled(FQCN, Level.TRACE, marker, msgSupplier, (Throwable) null);
2241    }
2242
2243    @Override
2244    public void trace(final Marker marker, final MessageSupplier msgSupplier, final Throwable t) {
2245        logIfEnabled(FQCN, Level.TRACE, marker, msgSupplier, t);
2246    }
2247
2248    @Override
2249    public void trace(final MessageSupplier msgSupplier) {
2250        logIfEnabled(FQCN, Level.TRACE, null, msgSupplier, (Throwable) null);
2251    }
2252
2253    @Override
2254    public void trace(final MessageSupplier msgSupplier, final Throwable t) {
2255        logIfEnabled(FQCN, Level.TRACE, null, msgSupplier, t);
2256    }
2257
2258    @Override
2259    public void trace(final Marker marker, final String message, final Object p0) {
2260        logIfEnabled(FQCN, Level.TRACE, marker, message, p0);
2261    }
2262
2263    @Override
2264    public void trace(final Marker marker, final String message, final Object p0, final Object p1) {
2265        logIfEnabled(FQCN, Level.TRACE, marker, message, p0, p1);
2266    }
2267
2268    @Override
2269    public void trace(final Marker marker, final String message, final Object p0, final Object p1, final Object p2) {
2270        logIfEnabled(FQCN, Level.TRACE, marker, message, p0, p1, p2);
2271    }
2272
2273    @Override
2274    public void trace(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
2275            final Object p3) {
2276        logIfEnabled(FQCN, Level.TRACE, marker, message, p0, p1, p2, p3);
2277    }
2278
2279    @Override
2280    public void trace(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
2281            final Object p3, final Object p4) {
2282        logIfEnabled(FQCN, Level.TRACE, marker, message, p0, p1, p2, p3, p4);
2283    }
2284
2285    @Override
2286    public void trace(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
2287            final Object p3, final Object p4, final Object p5) {
2288        logIfEnabled(FQCN, Level.TRACE, marker, message, p0, p1, p2, p3, p4, p5);
2289    }
2290
2291    @Override
2292    public void trace(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
2293            final Object p3, final Object p4, final Object p5, final Object p6) {
2294        logIfEnabled(FQCN, Level.TRACE, marker, message, p0, p1, p2, p3, p4, p5, p6);
2295    }
2296
2297    @Override
2298    public void trace(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
2299            final Object p3, final Object p4, final Object p5, final Object p6, final Object p7) {
2300        logIfEnabled(FQCN, Level.TRACE, marker, message, p0, p1, p2, p3, p4, p5, p6, p7);
2301    }
2302
2303    @Override
2304    public void trace(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
2305            final Object p3, final Object p4, final Object p5,
2306            final Object p6, final Object p7, final Object p8) {
2307        logIfEnabled(FQCN, Level.TRACE, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
2308    }
2309
2310    @Override
2311    public void trace(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
2312            final Object p3, final Object p4, final Object p5,
2313            final Object p6, final Object p7, final Object p8, final Object p9) {
2314        logIfEnabled(FQCN, Level.TRACE, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
2315    }
2316
2317    @Override
2318    public void trace(final String message, final Object p0) {
2319        logIfEnabled(FQCN, Level.TRACE, null, message, p0);
2320    }
2321
2322    @Override
2323    public void trace(final String message, final Object p0, final Object p1) {
2324        logIfEnabled(FQCN, Level.TRACE, null, message, p0, p1);
2325    }
2326
2327    @Override
2328    public void trace(final String message, final Object p0, final Object p1, final Object p2) {
2329        logIfEnabled(FQCN, Level.TRACE, null, message, p0, p1, p2);
2330    }
2331
2332    @Override
2333    public void trace(final String message, final Object p0, final Object p1, final Object p2, final Object p3) {
2334        logIfEnabled(FQCN, Level.TRACE, null, message, p0, p1, p2, p3);
2335    }
2336
2337    @Override
2338    public void trace(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
2339            final Object p4) {
2340        logIfEnabled(FQCN, Level.TRACE, null, message, p0, p1, p2, p3, p4);
2341    }
2342
2343    @Override
2344    public void trace(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
2345            final Object p4, final Object p5) {
2346        logIfEnabled(FQCN, Level.TRACE, null, message, p0, p1, p2, p3, p4, p5);
2347    }
2348
2349    @Override
2350    public void trace(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
2351            final Object p4, final Object p5, final Object p6) {
2352        logIfEnabled(FQCN, Level.TRACE, null, message, p0, p1, p2, p3, p4, p5, p6);
2353    }
2354
2355    @Override
2356    public void trace(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
2357            final Object p4, final Object p5, final Object p6, final Object p7) {
2358        logIfEnabled(FQCN, Level.TRACE, null, message, p0, p1, p2, p3, p4, p5, p6, p7);
2359    }
2360
2361    @Override
2362    public void trace(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
2363            final Object p4, final Object p5, final Object p6, final Object p7, final Object p8) {
2364        logIfEnabled(FQCN, Level.TRACE, null, message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
2365    }
2366
2367    @Override
2368    public void trace(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
2369            final Object p4, final Object p5, final Object p6, final Object p7, final Object p8, final Object p9) {
2370        logIfEnabled(FQCN, Level.TRACE, null, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
2371    }
2372
2373    @Override
2374    public EntryMessage traceEntry() {
2375        return enter(FQCN, null, (Object[]) null);
2376    }
2377
2378    @Override
2379    public EntryMessage traceEntry(final String format, final Object... params) {
2380        return enter(FQCN, format, params);
2381    }
2382
2383    @Override
2384    public EntryMessage traceEntry(final Supplier<?>... paramSuppliers) {
2385        return enter(FQCN, null, paramSuppliers);
2386    }
2387
2388    @Override
2389    public EntryMessage traceEntry(final String format, final Supplier<?>... paramSuppliers) {
2390        return enter(FQCN, format, paramSuppliers);
2391    }
2392
2393    @Override
2394    public EntryMessage traceEntry(final Message message) {
2395        return enter(FQCN, message);
2396    }
2397
2398    @Override
2399    public void traceExit() {
2400        exit(FQCN, null, null);
2401    }
2402
2403    @Override
2404    public <R> R traceExit(final R result) {
2405        return exit(FQCN, null, result);
2406    }
2407
2408    @Override
2409    public <R> R traceExit(final String format, final R result) {
2410        return exit(FQCN, format, result);
2411    }
2412
2413    @Override
2414    public void traceExit(final EntryMessage message) {
2415        // If the message is null, traceEnter returned null because flow logging was disabled, we can optimize out calling isEnabled().
2416        if (message != null && isEnabled(Level.TRACE, EXIT_MARKER, message, null)) {
2417            logMessage(FQCN, Level.TRACE, EXIT_MARKER, flowMessageFactory.newExitMessage(message), null);
2418        }
2419    }
2420
2421    @Override
2422    public <R> R traceExit(final EntryMessage message, final R result) {
2423        // If the message is null, traceEnter returned null because flow logging was disabled, we can optimize out calling isEnabled().
2424        if (message != null && isEnabled(Level.TRACE, EXIT_MARKER, message, null)) {
2425            logMessage(FQCN, Level.TRACE, EXIT_MARKER, flowMessageFactory.newExitMessage(result, message), null);
2426        }
2427        return result;
2428    }
2429
2430    @Override
2431    public <R> R traceExit(final Message message, final R result) {
2432        // If the message is null, traceEnter returned null because flow logging was disabled, we can optimize out calling isEnabled().
2433        if (message != null && isEnabled(Level.TRACE, EXIT_MARKER, message, null)) {
2434            logMessage(FQCN, Level.TRACE, EXIT_MARKER, flowMessageFactory.newExitMessage(result, message), null);
2435        }
2436        return result;
2437    }
2438
2439    @Override
2440    public void warn(final Marker marker, final Message msg) {
2441        logIfEnabled(FQCN, Level.WARN, marker, msg, null);
2442    }
2443
2444    @Override
2445    public void warn(final Marker marker, final Message msg, final Throwable t) {
2446        logIfEnabled(FQCN, Level.WARN, marker, msg, t);
2447    }
2448
2449    @Override
2450    public void warn(final Marker marker, final CharSequence message) {
2451        logIfEnabled(FQCN, Level.WARN, marker, message, null);
2452    }
2453
2454    @Override
2455    public void warn(final Marker marker, final CharSequence message, final Throwable t) {
2456        logIfEnabled(FQCN, Level.WARN, marker, message, t);
2457    }
2458
2459    @Override
2460    public void warn(final Marker marker, final Object message) {
2461        logIfEnabled(FQCN, Level.WARN, marker, message, null);
2462    }
2463
2464    @Override
2465    public void warn(final Marker marker, final Object message, final Throwable t) {
2466        logIfEnabled(FQCN, Level.WARN, marker, message, t);
2467    }
2468
2469    @Override
2470    public void warn(final Marker marker, final String message) {
2471        logIfEnabled(FQCN, Level.WARN, marker, message, (Throwable) null);
2472    }
2473
2474    @Override
2475    public void warn(final Marker marker, final String message, final Object... params) {
2476        logIfEnabled(FQCN, Level.WARN, marker, message, params);
2477    }
2478
2479    @Override
2480    public void warn(final Marker marker, final String message, final Throwable t) {
2481        logIfEnabled(FQCN, Level.WARN, marker, message, t);
2482    }
2483
2484    @Override
2485    public void warn(final Message msg) {
2486        logIfEnabled(FQCN, Level.WARN, null, msg, null);
2487    }
2488
2489    @Override
2490    public void warn(final Message msg, final Throwable t) {
2491        logIfEnabled(FQCN, Level.WARN, null, msg, t);
2492    }
2493
2494    @Override
2495    public void warn(final CharSequence message) {
2496        logIfEnabled(FQCN, Level.WARN, null, message, null);
2497    }
2498
2499    @Override
2500    public void warn(final CharSequence message, final Throwable t) {
2501        logIfEnabled(FQCN, Level.WARN, null, message, t);
2502    }
2503
2504    @Override
2505    public void warn(final Object message) {
2506        logIfEnabled(FQCN, Level.WARN, null, message, null);
2507    }
2508
2509    @Override
2510    public void warn(final Object message, final Throwable t) {
2511        logIfEnabled(FQCN, Level.WARN, null, message, t);
2512    }
2513
2514    @Override
2515    public void warn(final String message) {
2516        logIfEnabled(FQCN, Level.WARN, null, message, (Throwable) null);
2517    }
2518
2519    @Override
2520    public void warn(final String message, final Object... params) {
2521        logIfEnabled(FQCN, Level.WARN, null, message, params);
2522    }
2523
2524    @Override
2525    public void warn(final String message, final Throwable t) {
2526        logIfEnabled(FQCN, Level.WARN, null, message, t);
2527    }
2528
2529    @Override
2530    public void warn(final Supplier<?> msgSupplier) {
2531        logIfEnabled(FQCN, Level.WARN, null, msgSupplier, (Throwable) null);
2532    }
2533
2534    @Override
2535    public void warn(final Supplier<?> msgSupplier, final Throwable t) {
2536        logIfEnabled(FQCN, Level.WARN, null, msgSupplier, t);
2537    }
2538
2539    @Override
2540    public void warn(final Marker marker, final Supplier<?> msgSupplier) {
2541        logIfEnabled(FQCN, Level.WARN, marker, msgSupplier, (Throwable) null);
2542    }
2543
2544    @Override
2545    public void warn(final Marker marker, final String message, final Supplier<?>... paramSuppliers) {
2546        logIfEnabled(FQCN, Level.WARN, marker, message, paramSuppliers);
2547    }
2548
2549    @Override
2550    public void warn(final Marker marker, final Supplier<?> msgSupplier, final Throwable t) {
2551        logIfEnabled(FQCN, Level.WARN, marker, msgSupplier, t);
2552    }
2553
2554    @Override
2555    public void warn(final String message, final Supplier<?>... paramSuppliers) {
2556        logIfEnabled(FQCN, Level.WARN, null, message, paramSuppliers);
2557    }
2558
2559    @Override
2560    public void warn(final Marker marker, final MessageSupplier msgSupplier) {
2561        logIfEnabled(FQCN, Level.WARN, marker, msgSupplier, (Throwable) null);
2562    }
2563
2564    @Override
2565    public void warn(final Marker marker, final MessageSupplier msgSupplier, final Throwable t) {
2566        logIfEnabled(FQCN, Level.WARN, marker, msgSupplier, t);
2567    }
2568
2569    @Override
2570    public void warn(final MessageSupplier msgSupplier) {
2571        logIfEnabled(FQCN, Level.WARN, null, msgSupplier, (Throwable) null);
2572    }
2573
2574    @Override
2575    public void warn(final MessageSupplier msgSupplier, final Throwable t) {
2576        logIfEnabled(FQCN, Level.WARN, null, msgSupplier, t);
2577    }
2578
2579    @Override
2580    public void warn(final Marker marker, final String message, final Object p0) {
2581        logIfEnabled(FQCN, Level.WARN, marker, message, p0);
2582    }
2583
2584    @Override
2585    public void warn(final Marker marker, final String message, final Object p0, final Object p1) {
2586        logIfEnabled(FQCN, Level.WARN, marker, message, p0, p1);
2587    }
2588
2589    @Override
2590    public void warn(final Marker marker, final String message, final Object p0, final Object p1, final Object p2) {
2591        logIfEnabled(FQCN, Level.WARN, marker, message, p0, p1, p2);
2592    }
2593
2594    @Override
2595    public void warn(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
2596            final Object p3) {
2597        logIfEnabled(FQCN, Level.WARN, marker, message, p0, p1, p2, p3);
2598    }
2599
2600    @Override
2601    public void warn(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
2602            final Object p3, final Object p4) {
2603        logIfEnabled(FQCN, Level.WARN, marker, message, p0, p1, p2, p3, p4);
2604    }
2605
2606    @Override
2607    public void warn(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
2608            final Object p3, final Object p4, final Object p5) {
2609        logIfEnabled(FQCN, Level.WARN, marker, message, p0, p1, p2, p3, p4, p5);
2610    }
2611
2612    @Override
2613    public void warn(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
2614            final Object p3, final Object p4, final Object p5, final Object p6) {
2615        logIfEnabled(FQCN, Level.WARN, marker, message, p0, p1, p2, p3, p4, p5, p6);
2616    }
2617
2618    @Override
2619    public void warn(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
2620            final Object p3, final Object p4, final Object p5, final Object p6, final Object p7) {
2621        logIfEnabled(FQCN, Level.WARN, marker, message, p0, p1, p2, p3, p4, p5, p6, p7);
2622    }
2623
2624    @Override
2625    public void warn(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
2626            final Object p3, final Object p4, final Object p5, final Object p6, final Object p7, final Object p8) {
2627        logIfEnabled(FQCN, Level.WARN, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
2628    }
2629
2630    @Override
2631    public void warn(final Marker marker, final String message, final Object p0, final Object p1, final Object p2,
2632            final Object p3, final Object p4, final Object p5,
2633            final Object p6, final Object p7, final Object p8, final Object p9) {
2634        logIfEnabled(FQCN, Level.WARN, marker, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
2635    }
2636
2637    @Override
2638    public void warn(final String message, final Object p0) {
2639        logIfEnabled(FQCN, Level.WARN, null, message, p0);
2640    }
2641
2642    @Override
2643    public void warn(final String message, final Object p0, final Object p1) {
2644        logIfEnabled(FQCN, Level.WARN, null, message, p0, p1);
2645    }
2646
2647    @Override
2648    public void warn(final String message, final Object p0, final Object p1, final Object p2) {
2649        logIfEnabled(FQCN, Level.WARN, null, message, p0, p1, p2);
2650    }
2651
2652    @Override
2653    public void warn(final String message, final Object p0, final Object p1, final Object p2, final Object p3) {
2654        logIfEnabled(FQCN, Level.WARN, null, message, p0, p1, p2, p3);
2655    }
2656
2657    @Override
2658    public void warn(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
2659            final Object p4) {
2660        logIfEnabled(FQCN, Level.WARN, null, message, p0, p1, p2, p3, p4);
2661    }
2662
2663    @Override
2664    public void warn(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
2665            final Object p4, final Object p5) {
2666        logIfEnabled(FQCN, Level.WARN, null, message, p0, p1, p2, p3, p4, p5);
2667    }
2668
2669    @Override
2670    public void warn(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
2671            final Object p4, final Object p5, final Object p6) {
2672        logIfEnabled(FQCN, Level.WARN, null, message, p0, p1, p2, p3, p4, p5, p6);
2673    }
2674
2675    @Override
2676    public void warn(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
2677            final Object p4, final Object p5, final Object p6, final Object p7) {
2678        logIfEnabled(FQCN, Level.WARN, null, message, p0, p1, p2, p3, p4, p5, p6, p7);
2679    }
2680
2681    @Override
2682    public void warn(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
2683            final Object p4, final Object p5, final Object p6, final Object p7, final Object p8) {
2684        logIfEnabled(FQCN, Level.WARN, null, message, p0, p1, p2, p3, p4, p5, p6, p7, p8);
2685    }
2686
2687    @Override
2688    public void warn(final String message, final Object p0, final Object p1, final Object p2, final Object p3,
2689            final Object p4, final Object p5, final Object p6,
2690            final Object p7, final Object p8, final Object p9) {
2691        logIfEnabled(FQCN, Level.WARN, null, message, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
2692    }
2693}