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;
018
019import org.apache.logging.log4j.message.EntryMessage;
020import org.apache.logging.log4j.message.Message;
021import org.apache.logging.log4j.message.MessageFactory;
022import org.apache.logging.log4j.message.MessageFactory2;
023import org.apache.logging.log4j.util.MessageSupplier;
024import org.apache.logging.log4j.util.Supplier;
025
026/**
027 * This is the central interface in the log4j package. Most logging operations, except configuration, are done through
028 * this interface.
029 *
030 * <p>
031 * The canonical way to obtain a Logger for a class is through {@link LogManager#getLogger()}. Typically, each class
032 * gets its own Logger named after its fully qualified class name (the default Logger name when obtained through the
033 * {@link LogManager#getLogger()} method). Thus, the simplest way to use this would be like so:
034 * </p>
035 *
036 * <pre>
037 * public class MyClass {
038 *     private static final Logger LOGGER = LogManager.getLogger();
039 *     // ...
040 * }
041 * </pre>
042 * <p>
043 * For ease of filtering, searching, sorting, etc., it is generally a good idea to create Loggers for each class rather
044 * than sharing Loggers. Instead, {@link Marker Markers} should be used for shared, filterable identification.
045 * </p>
046 * <p>
047 * For service provider implementations, it is recommended to extend the
048 * {@link org.apache.logging.log4j.spi.AbstractLogger} class rather than implementing this interface directly.
049 * </p>
050 *
051 * Since 2.4, methods have been added to the {@code Logger} interface to support lambda expressions. The new methods
052 * allow client code to lazily log messages without explicitly checking if the requested log level is enabled. For
053 * example, previously one would write:
054 *
055 * <pre>
056 * // pre-Java 8 style optimization: explicitly check the log level
057 * // to make sure the expensiveOperation() method is only called if necessary
058 * if (logger.isTraceEnabled()) {
059 *     logger.trace(&quot;Some long-running operation returned {}&quot;, expensiveOperation());
060 * }
061 * </pre>
062 * <p>
063 * With Java 8, the same effect can be achieved with a lambda expression:
064 *
065 * <pre>
066 * // Java-8 style optimization: no need to explicitly check the log level:
067 * // the lambda expression is not evaluated if the TRACE level is not enabled
068 * logger.trace(&quot;Some long-running operation returned {}&quot;, () -&gt; expensiveOperation());
069 * </pre>
070 *
071 * <p>
072 * Note that although {@link MessageSupplier} is provided, using {@link Supplier Supplier<Message>} works just the
073 * same. MessageSupplier was deprecated in 2.6 and un-deprecated in 2.8.1. Anonymous class usage of these APIs
074 * should prefer using Supplier instead.
075 * </p>
076 */
077public interface Logger {
078
079    /**
080     * Logs an exception or error that has been caught to a specific logging level.
081     *
082     * @param level The logging Level.
083     * @param t The Throwable.
084     */
085    void catching(Level level, Throwable t);
086
087    /**
088     * Logs an exception or error that has been caught. Normally, one may wish to provide additional information with an
089     * exception while logging it; in these cases, one would not use this method. In other cases where simply logging
090     * the fact that an exception was swallowed somewhere (e.g., at the top of the stack trace in a {@code main()}
091     * method), this method is ideal for it.
092     *
093     * @param t The Throwable.
094     */
095    void catching(Throwable t);
096
097    /**
098     * Logs a message with the specific Marker at the {@link Level#DEBUG DEBUG} level.
099     *
100     * @param marker the marker data specific to this log statement
101     * @param msg the message string to be logged
102     */
103    void debug(Marker marker, Message msg);
104
105    /**
106     * Logs a message with the specific Marker at the {@link Level#DEBUG DEBUG} level.
107     *
108     * @param marker the marker data specific to this log statement
109     * @param msg the message string to be logged
110     * @param t A Throwable or null.
111     */
112    void debug(Marker marker, Message msg, Throwable t);
113
114    /**
115     * Logs a message which is only to be constructed if the logging level is the {@link Level#DEBUG DEBUG} level with
116     * the specified Marker. The {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the
117     * {@code Message}.
118     *
119     * @param marker the marker data specific to this log statement
120     * @param msgSupplier A function, which when called, produces the desired log message.
121     * @since 2.4
122     */
123    void debug(Marker marker, MessageSupplier msgSupplier);
124
125    /**
126     * Logs a message (only to be constructed if the logging level is the {@link Level#DEBUG DEBUG} level) with the
127     * specified Marker and including the stack trace of the {@link Throwable} <code>t</code> passed as parameter. The
128     * {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
129     *
130     * @param marker the marker data specific to this log statement
131     * @param msgSupplier A function, which when called, produces the desired log message.
132     * @param t A Throwable or null.
133     * @since 2.4
134     */
135    void debug(Marker marker, MessageSupplier msgSupplier, Throwable t);
136
137    /**
138     * Logs a message CharSequence with the {@link Level#DEBUG DEBUG} level.
139     *
140     * @param marker the marker data specific to this log statement
141     * @param message the message CharSequence to log.
142     */
143    void debug(Marker marker, CharSequence message);
144
145    /**
146     * Logs a message CharSequence at the {@link Level#DEBUG DEBUG} level including the stack trace of the
147     * {@link Throwable} <code>t</code> passed as parameter.
148     *
149     * @param marker the marker data specific to this log statement
150     * @param message the message CharSequence to log.
151     * @param t the exception to log, including its stack trace.
152     */
153    void debug(Marker marker, CharSequence message, Throwable t);
154
155    /**
156     * Logs a message object with the {@link Level#DEBUG DEBUG} level.
157     *
158     * @param marker the marker data specific to this log statement
159     * @param message the message object to log.
160     */
161    void debug(Marker marker, Object message);
162
163    /**
164     * Logs a message at the {@link Level#DEBUG DEBUG} level including the stack trace of the {@link Throwable}
165     * <code>t</code> passed as parameter.
166     *
167     * @param marker the marker data specific to this log statement
168     * @param message the message to log.
169     * @param t the exception to log, including its stack trace.
170     */
171    void debug(Marker marker, Object message, Throwable t);
172
173    /**
174     * Logs a message object with the {@link Level#DEBUG DEBUG} level.
175     *
176     * @param marker the marker data specific to this log statement
177     * @param message the message object to log.
178     */
179    void debug(Marker marker, String message);
180
181    /**
182     * Logs a message with parameters at the {@link Level#DEBUG DEBUG} level.
183     *
184     * @param marker the marker data specific to this log statement
185     * @param message the message to log; the format depends on the message factory.
186     * @param params parameters to the message.
187     * @see #getMessageFactory()
188     */
189    void debug(Marker marker, String message, Object... params);
190
191    /**
192     * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#DEBUG
193     * DEBUG} level.
194     *
195     * @param marker the marker data specific to this log statement
196     * @param message the message to log; the format depends on the message factory.
197     * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
198     * @since 2.4
199     */
200    void debug(Marker marker, String message, Supplier<?>... paramSuppliers);
201
202    /**
203     * Logs a message at the {@link Level#DEBUG DEBUG} level including the stack trace of the {@link Throwable}
204     * <code>t</code> passed as parameter.
205     *
206     * @param marker the marker data specific to this log statement
207     * @param message the message to log.
208     * @param t the exception to log, including its stack trace.
209     */
210    void debug(Marker marker, String message, Throwable t);
211
212    /**
213     * Logs a message which is only to be constructed if the logging level is the {@link Level#DEBUG DEBUG} level with
214     * the specified Marker.
215     *
216     * @param marker the marker data specific to this log statement
217     * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
218     *            message factory.
219     * @since 2.4
220     */
221    void debug(Marker marker, Supplier<?> msgSupplier);
222
223    /**
224     * Logs a message (only to be constructed if the logging level is the {@link Level#DEBUG DEBUG} level) with the
225     * specified Marker and including the stack trace of the {@link Throwable} <code>t</code> passed as parameter.
226     *
227     * @param marker the marker data specific to this log statement
228     * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
229     *            message factory.
230     * @param t A Throwable or null.
231     * @since 2.4
232     */
233    void debug(Marker marker, Supplier<?> msgSupplier, Throwable t);
234
235    /**
236     * Logs a message with the specific Marker at the {@link Level#DEBUG DEBUG} level.
237     *
238     * @param msg the message string to be logged
239     */
240    void debug(Message msg);
241
242    /**
243     * Logs a message with the specific Marker at the {@link Level#DEBUG DEBUG} level.
244     *
245     * @param msg the message string to be logged
246     * @param t A Throwable or null.
247     */
248    void debug(Message msg, Throwable t);
249
250    /**
251     * Logs a message which is only to be constructed if the logging level is the {@link Level#DEBUG DEBUG} level. The
252     * {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
253     *
254     * @param msgSupplier A function, which when called, produces the desired log message.
255     * @since 2.4
256     */
257    void debug(MessageSupplier msgSupplier);
258
259    /**
260     * Logs a message (only to be constructed if the logging level is the {@link Level#DEBUG DEBUG} level) including the
261     * stack trace of the {@link Throwable} <code>t</code> passed as parameter. The {@code MessageSupplier} may or may
262     * not use the {@link MessageFactory} to construct the {@code Message}.
263     *
264     * @param msgSupplier A function, which when called, produces the desired log message.
265     * @param t the exception to log, including its stack trace.
266     * @since 2.4
267     */
268    void debug(MessageSupplier msgSupplier, Throwable t);
269
270    /**
271     * Logs a message CharSequence with the {@link Level#DEBUG DEBUG} level.
272     *
273     * @param message the message object to log.
274     */
275    void debug(CharSequence message);
276
277    /**
278     * Logs a CharSequence at the {@link Level#DEBUG DEBUG} level including the stack trace of the {@link Throwable}
279     * <code>t</code> passed as parameter.
280     *
281     * @param message the message CharSequence to log.
282     * @param t the exception to log, including its stack trace.
283     */
284    void debug(CharSequence message, Throwable t);
285
286    /**
287     * Logs a message object with the {@link Level#DEBUG DEBUG} level.
288     *
289     * @param message the message object to log.
290     */
291    void debug(Object message);
292
293    /**
294     * Logs a message at the {@link Level#DEBUG DEBUG} level including the stack trace of the {@link Throwable}
295     * <code>t</code> passed as parameter.
296     *
297     * @param message the message to log.
298     * @param t the exception to log, including its stack trace.
299     */
300    void debug(Object message, Throwable t);
301
302    /**
303     * Logs a message object with the {@link Level#DEBUG DEBUG} level.
304     *
305     * @param message the message string to log.
306     */
307    void debug(String message);
308
309    /**
310     * Logs a message with parameters at the {@link Level#DEBUG DEBUG} level.
311     *
312     * @param message the message to log; the format depends on the message factory.
313     * @param params parameters to the message.
314     * @see #getMessageFactory()
315     */
316    void debug(String message, Object... params);
317
318    /**
319     * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#DEBUG
320     * DEBUG} level.
321     *
322     * @param message the message to log; the format depends on the message factory.
323     * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
324     * @since 2.4
325     */
326    void debug(String message, Supplier<?>... paramSuppliers);
327
328    /**
329     * Logs a message at the {@link Level#DEBUG DEBUG} level including the stack trace of the {@link Throwable}
330     * <code>t</code> passed as parameter.
331     *
332     * @param message the message to log.
333     * @param t the exception to log, including its stack trace.
334     */
335    void debug(String message, Throwable t);
336
337    /**
338     * Logs a message which is only to be constructed if the logging level is the {@link Level#DEBUG DEBUG} level.
339     *
340     * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
341     *            message factory.
342     * @since 2.4
343     */
344    void debug(Supplier<?> msgSupplier);
345
346    /**
347     * Logs a message (only to be constructed if the logging level is the {@link Level#DEBUG DEBUG} level) including the
348     * stack trace of the {@link Throwable} <code>t</code> passed as parameter.
349     *
350     * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
351     *            message factory.
352     * @param t the exception to log, including its stack trace.
353     * @since 2.4
354     */
355    void debug(Supplier<?> msgSupplier, Throwable t);
356
357    /**
358     * Logs a message with parameters at debug level.
359     *
360     * @param marker the marker data specific to this log statement
361     * @param message the message to log; the format depends on the message factory.
362     * @param p0 parameter to the message.
363     */
364    void debug(Marker marker, String message, Object p0);
365
366    /**
367     * Logs a message with parameters at debug level.
368     *
369     * @param marker the marker data specific to this log statement
370     * @param message the message to log; the format depends on the message factory.
371     * @param p0 parameter to the message.
372     * @param p1 parameter to the message.
373     */
374    void debug(Marker marker, String message, Object p0, Object p1);
375
376    /**
377     * Logs a message with parameters at debug level.
378     *
379     * @param marker the marker data specific to this log statement
380     * @param message the message to log; the format depends on the message factory.
381     * @param p0 parameter to the message.
382     * @param p1 parameter to the message.
383     * @param p2 parameter to the message.
384     */
385    void debug(Marker marker, String message, Object p0, Object p1, Object p2);
386
387    /**
388     * Logs a message with parameters at debug level.
389     *
390     * @param marker the marker data specific to this log statement
391     * @param message the message to log; the format depends on the message factory.
392     * @param p0 parameter to the message.
393     * @param p1 parameter to the message.
394     * @param p2 parameter to the message.
395     * @param p3 parameter to the message.
396     */
397    void debug(Marker marker, String message, Object p0, Object p1, Object p2, Object p3);
398
399    /**
400     * Logs a message with parameters at debug level.
401     *
402     * @param marker the marker data specific to this log statement
403     * @param message the message to log; the format depends on the message factory.
404     * @param p0 parameter to the message.
405     * @param p1 parameter to the message.
406     * @param p2 parameter to the message.
407     * @param p3 parameter to the message.
408     * @param p4 parameter to the message.
409     */
410    void debug(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4);
411
412    /**
413     * Logs a message with parameters at debug level.
414     *
415     * @param marker the marker data specific to this log statement
416     * @param message the message to log; the format depends on the message factory.
417     * @param p0 parameter to the message.
418     * @param p1 parameter to the message.
419     * @param p2 parameter to the message.
420     * @param p3 parameter to the message.
421     * @param p4 parameter to the message.
422     * @param p5 parameter to the message.
423     */
424    void debug(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5);
425
426    /**
427     * Logs a message with parameters at debug level.
428     *
429     * @param marker the marker data specific to this log statement
430     * @param message the message to log; the format depends on the message factory.
431     * @param p0 parameter to the message.
432     * @param p1 parameter to the message.
433     * @param p2 parameter to the message.
434     * @param p3 parameter to the message.
435     * @param p4 parameter to the message.
436     * @param p5 parameter to the message.
437     * @param p6 parameter to the message.
438     */
439    void debug(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5,
440            Object p6);
441
442    /**
443     * Logs a message with parameters at debug level.
444     *
445     * @param marker the marker data specific to this log statement
446     * @param message the message to log; the format depends on the message factory.
447     * @param p0 parameter to the message.
448     * @param p1 parameter to the message.
449     * @param p2 parameter to the message.
450     * @param p3 parameter to the message.
451     * @param p4 parameter to the message.
452     * @param p5 parameter to the message.
453     * @param p6 parameter to the message.
454     * @param p7 parameter to the message.
455     */
456    void debug(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6,
457            Object p7);
458
459    /**
460     * Logs a message with parameters at debug level.
461     *
462     * @param marker the marker data specific to this log statement
463     * @param message the message to log; the format depends on the message factory.
464     * @param p0 parameter to the message.
465     * @param p1 parameter to the message.
466     * @param p2 parameter to the message.
467     * @param p3 parameter to the message.
468     * @param p4 parameter to the message.
469     * @param p5 parameter to the message.
470     * @param p6 parameter to the message.
471     * @param p7 parameter to the message.
472     * @param p8 parameter to the message.
473     */
474    void debug(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6,
475            Object p7, Object p8);
476
477    /**
478     * Logs a message with parameters at debug level.
479     *
480     * @param marker the marker data specific to this log statement
481     * @param message the message to log; the format depends on the message factory.
482     * @param p0 parameter to the message.
483     * @param p1 parameter to the message.
484     * @param p2 parameter to the message.
485     * @param p3 parameter to the message.
486     * @param p4 parameter to the message.
487     * @param p5 parameter to the message.
488     * @param p6 parameter to the message.
489     * @param p7 parameter to the message.
490     * @param p8 parameter to the message.
491     * @param p9 parameter to the message.
492     */
493    void debug(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6,
494            Object p7, Object p8, Object p9);
495
496    /**
497     * Logs a message with parameters at debug level.
498     *
499     * @param message the message to log; the format depends on the message factory.
500     * @param p0 parameter to the message.
501     */
502    void debug(String message, Object p0);
503
504    /**
505     * Logs a message with parameters at debug level.
506     *
507     * @param message the message to log; the format depends on the message factory.
508     * @param p0 parameter to the message.
509     * @param p1 parameter to the message.
510     */
511    void debug(String message, Object p0, Object p1);
512
513    /**
514     * Logs a message with parameters at debug level.
515     *
516     * @param message the message to log; the format depends on the message factory.
517     * @param p0 parameter to the message.
518     * @param p1 parameter to the message.
519     * @param p2 parameter to the message.
520     */
521    void debug(String message, Object p0, Object p1, Object p2);
522
523    /**
524     * Logs a message with parameters at debug level.
525     *
526     * @param message the message to log; the format depends on the message factory.
527     * @param p0 parameter to the message.
528     * @param p1 parameter to the message.
529     * @param p2 parameter to the message.
530     * @param p3 parameter to the message.
531     */
532    void debug(String message, Object p0, Object p1, Object p2, Object p3);
533
534    /**
535     * Logs a message with parameters at debug level.
536     *
537     * @param message the message to log; the format depends on the message factory.
538     * @param p0 parameter to the message.
539     * @param p1 parameter to the message.
540     * @param p2 parameter to the message.
541     * @param p3 parameter to the message.
542     * @param p4 parameter to the message.
543     */
544    void debug(String message, Object p0, Object p1, Object p2, Object p3, Object p4);
545
546    /**
547     * Logs a message with parameters at debug level.
548     *
549     * @param message the message to log; the format depends on the message factory.
550     * @param p0 parameter to the message.
551     * @param p1 parameter to the message.
552     * @param p2 parameter to the message.
553     * @param p3 parameter to the message.
554     * @param p4 parameter to the message.
555     * @param p5 parameter to the message.
556     */
557    void debug(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5);
558
559    /**
560     * Logs a message with parameters at debug level.
561     *
562     * @param message the message to log; the format depends on the message factory.
563     * @param p0 parameter to the message.
564     * @param p1 parameter to the message.
565     * @param p2 parameter to the message.
566     * @param p3 parameter to the message.
567     * @param p4 parameter to the message.
568     * @param p5 parameter to the message.
569     * @param p6 parameter to the message.
570     */
571    void debug(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6);
572
573    /**
574     * Logs a message with parameters at debug level.
575     *
576     * @param message the message to log; the format depends on the message factory.
577     * @param p0 parameter to the message.
578     * @param p1 parameter to the message.
579     * @param p2 parameter to the message.
580     * @param p3 parameter to the message.
581     * @param p4 parameter to the message.
582     * @param p5 parameter to the message.
583     * @param p6 parameter to the message.
584     * @param p7 parameter to the message.
585     */
586    void debug(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7);
587
588    /**
589     * Logs a message with parameters at debug level.
590     *
591     * @param message the message to log; the format depends on the message factory.
592     * @param p0 parameter to the message.
593     * @param p1 parameter to the message.
594     * @param p2 parameter to the message.
595     * @param p3 parameter to the message.
596     * @param p4 parameter to the message.
597     * @param p5 parameter to the message.
598     * @param p6 parameter to the message.
599     * @param p7 parameter to the message.
600     * @param p8 parameter to the message.
601     */
602    void debug(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7,
603            Object p8);
604
605    /**
606     * Logs a message with parameters at debug level.
607     *
608     * @param message the message to log; the format depends on the message factory.
609     * @param p0 parameter to the message.
610     * @param p1 parameter to the message.
611     * @param p2 parameter to the message.
612     * @param p3 parameter to the message.
613     * @param p4 parameter to the message.
614     * @param p5 parameter to the message.
615     * @param p6 parameter to the message.
616     * @param p7 parameter to the message.
617     * @param p8 parameter to the message.
618     * @param p9 parameter to the message.
619     */
620    void debug(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7,
621            Object p8, Object p9);
622
623    /**
624     * Logs entry to a method. Used when the method in question has no parameters or when the parameters should not be
625     * logged.
626     * @deprecated Use {@link #traceEntry()} instead which performs the same function.
627     */
628    @Deprecated
629    void entry();
630
631    /**
632     * Logs entry to a method along with its parameters (consider using one of the {@code traceEntry(...)} methods instead.)
633     * <p>
634     * For example:
635     * </p>
636     * <pre>
637     * public void doSomething(String foo, int bar) {
638     *     LOGGER.entry(foo, bar);
639     *     // do something
640     * }
641     * </pre>
642     * <p>
643     * The use of methods such as this are more effective when combined with aspect-oriented programming or other
644     * bytecode manipulation tools. It can be rather tedious (and messy) to use this type of method manually.
645     * </p>
646     *
647     * @param params The parameters to the method.
648     */
649    void entry(Object... params);
650
651    /**
652     * Logs a message with the specific Marker at the {@link Level#ERROR ERROR} level.
653     *
654     * @param marker the marker data specific to this log statement
655     * @param msg the message string to be logged
656     */
657    void error(Marker marker, Message msg);
658
659    /**
660     * Logs a message with the specific Marker at the {@link Level#ERROR ERROR} level.
661     *
662     * @param marker the marker data specific to this log statement
663     * @param msg the message string to be logged
664     * @param t A Throwable or null.
665     */
666    void error(Marker marker, Message msg, Throwable t);
667
668    /**
669     * Logs a message which is only to be constructed if the logging level is the {@link Level#ERROR ERROR} level with
670     * the specified Marker. The {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the
671     * {@code Message}.
672     *
673     * @param marker the marker data specific to this log statement
674     * @param msgSupplier A function, which when called, produces the desired log message.
675     * @since 2.4
676     */
677    void error(Marker marker, MessageSupplier msgSupplier);
678
679    /**
680     * Logs a message (only to be constructed if the logging level is the {@link Level#ERROR ERROR} level) with the
681     * specified Marker and including the stack trace of the {@link Throwable} <code>t</code> passed as parameter. The
682     * {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
683     *
684     * @param marker the marker data specific to this log statement
685     * @param msgSupplier A function, which when called, produces the desired log message.
686     * @param t A Throwable or null.
687     * @since 2.4
688     */
689    void error(Marker marker, MessageSupplier msgSupplier, Throwable t);
690
691    /**
692     * Logs a message CharSequence with the {@link Level#ERROR ERROR} level.
693     *
694     * @param marker the marker data specific to this log statement.
695     * @param message the message CharSequence to log.
696     */
697    void error(Marker marker, CharSequence message);
698
699    /**
700     * Logs a CharSequence at the {@link Level#ERROR ERROR} level including the stack trace of the {@link Throwable}
701     * <code>t</code> passed as parameter.
702     *
703     * @param marker the marker data specific to this log statement.
704     * @param message the message CharSequence to log.
705     * @param t the exception to log, including its stack trace.
706     */
707    void error(Marker marker, CharSequence message, Throwable t);
708
709    /**
710     * Logs a message object with the {@link Level#ERROR ERROR} level.
711     *
712     * @param marker the marker data specific to this log statement.
713     * @param message the message object to log.
714     */
715    void error(Marker marker, Object message);
716
717    /**
718     * Logs a message at the {@link Level#ERROR ERROR} level including the stack trace of the {@link Throwable}
719     * <code>t</code> passed as parameter.
720     *
721     * @param marker the marker data specific to this log statement.
722     * @param message the message object to log.
723     * @param t the exception to log, including its stack trace.
724     */
725    void error(Marker marker, Object message, Throwable t);
726
727    /**
728     * Logs a message object with the {@link Level#ERROR ERROR} level.
729     *
730     * @param marker the marker data specific to this log statement.
731     * @param message the message object to log.
732     */
733    void error(Marker marker, String message);
734
735    /**
736     * Logs a message with parameters at the {@link Level#ERROR ERROR} level.
737     *
738     * @param marker the marker data specific to this log statement.
739     * @param message the message to log; the format depends on the message factory.
740     * @param params parameters to the message.
741     * @see #getMessageFactory()
742     */
743    void error(Marker marker, String message, Object... params);
744
745    /**
746     * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#ERROR
747     * ERROR} level.
748     *
749     * @param marker the marker data specific to this log statement
750     * @param message the message to log; the format depends on the message factory.
751     * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
752     * @since 2.4
753     */
754    void error(Marker marker, String message, Supplier<?>... paramSuppliers);
755
756    /**
757     * Logs a message at the {@link Level#ERROR ERROR} level including the stack trace of the {@link Throwable}
758     * <code>t</code> passed as parameter.
759     *
760     * @param marker the marker data specific to this log statement.
761     * @param message the message object to log.
762     * @param t the exception to log, including its stack trace.
763     */
764    void error(Marker marker, String message, Throwable t);
765
766    /**
767     * Logs a message which is only to be constructed if the logging level is the {@link Level#ERROR ERROR} level with
768     * the specified Marker.
769     *
770     * @param marker the marker data specific to this log statement
771     * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
772     *            message factory.
773     * @since 2.4
774     */
775    void error(Marker marker, Supplier<?> msgSupplier);
776
777    /**
778     * Logs a message (only to be constructed if the logging level is the {@link Level#ERROR ERROR} level) with the
779     * specified Marker and including the stack trace of the {@link Throwable} <code>t</code> passed as parameter.
780     *
781     * @param marker the marker data specific to this log statement
782     * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
783     *            message factory.
784     * @param t A Throwable or null.
785     * @since 2.4
786     */
787    void error(Marker marker, Supplier<?> msgSupplier, Throwable t);
788
789    /**
790     * Logs a message with the specific Marker at the {@link Level#ERROR ERROR} level.
791     *
792     * @param msg the message string to be logged
793     */
794    void error(Message msg);
795
796    /**
797     * Logs a message with the specific Marker at the {@link Level#ERROR ERROR} level.
798     *
799     * @param msg the message string to be logged
800     * @param t A Throwable or null.
801     */
802    void error(Message msg, Throwable t);
803
804    /**
805     * Logs a message which is only to be constructed if the logging level is the {@link Level#ERROR ERROR} level. The
806     * {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
807     *
808     * @param msgSupplier A function, which when called, produces the desired log message.
809     * @since 2.4
810     */
811    void error(MessageSupplier msgSupplier);
812
813    /**
814     * Logs a message (only to be constructed if the logging level is the {@link Level#ERROR ERROR} level) including the
815     * stack trace of the {@link Throwable} <code>t</code> passed as parameter. The {@code MessageSupplier} may or may
816     * not use the {@link MessageFactory} to construct the {@code Message}.
817     *
818     * @param msgSupplier A function, which when called, produces the desired log message.
819     * @param t the exception to log, including its stack trace.
820     * @since 2.4
821     */
822    void error(MessageSupplier msgSupplier, Throwable t);
823
824    /**
825     * Logs a message CharSequence with the {@link Level#ERROR ERROR} level.
826     *
827     * @param message the message CharSequence to log.
828     */
829    void error(CharSequence message);
830
831    /**
832     * Logs a CharSequence at the {@link Level#ERROR ERROR} level including the stack trace of the {@link Throwable}
833     * <code>t</code> passed as parameter.
834     *
835     * @param message the message CharSequence to log.
836     * @param t the exception to log, including its stack trace.
837     */
838    void error(CharSequence message, Throwable t);
839
840    /**
841     * Logs a message object with the {@link Level#ERROR ERROR} level.
842     *
843     * @param message the message object to log.
844     */
845    void error(Object message);
846
847    /**
848     * Logs a message at the {@link Level#ERROR ERROR} level including the stack trace of the {@link Throwable}
849     * <code>t</code> passed as parameter.
850     *
851     * @param message the message object to log.
852     * @param t the exception to log, including its stack trace.
853     */
854    void error(Object message, Throwable t);
855
856    /**
857     * Logs a message object with the {@link Level#ERROR ERROR} level.
858     *
859     * @param message the message string to log.
860     */
861    void error(String message);
862
863    /**
864     * Logs a message with parameters at the {@link Level#ERROR ERROR} level.
865     *
866     * @param message the message to log; the format depends on the message factory.
867     * @param params parameters to the message.
868     * @see #getMessageFactory()
869     */
870    void error(String message, Object... params);
871
872    /**
873     * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#ERROR
874     * ERROR} level.
875     *
876     * @param message the message to log; the format depends on the message factory.
877     * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
878     * @since 2.4
879     */
880    void error(String message, Supplier<?>... paramSuppliers);
881
882    /**
883     * Logs a message at the {@link Level#ERROR ERROR} level including the stack trace of the {@link Throwable}
884     * <code>t</code> passed as parameter.
885     *
886     * @param message the message object to log.
887     * @param t the exception to log, including its stack trace.
888     */
889    void error(String message, Throwable t);
890
891    /**
892     * Logs a message which is only to be constructed if the logging level is the {@link Level#ERROR ERROR} level.
893     *
894     * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
895     *            message factory.
896     * @since 2.4
897     */
898    void error(Supplier<?> msgSupplier);
899
900    /**
901     * Logs a message (only to be constructed if the logging level is the {@link Level#ERROR ERROR} level) including the
902     * stack trace of the {@link Throwable} <code>t</code> passed as parameter.
903     *
904     * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
905     *            message factory.
906     * @param t the exception to log, including its stack trace.
907     * @since 2.4
908     */
909    void error(Supplier<?> msgSupplier, Throwable t);
910
911    /**
912     * Logs a message with parameters at error level.
913     *
914     * @param marker the marker data specific to this log statement
915     * @param message the message to log; the format depends on the message factory.
916     * @param p0 parameter to the message.
917     */
918    void error(Marker marker, String message, Object p0);
919
920    /**
921     * Logs a message with parameters at error level.
922     *
923     * @param marker the marker data specific to this log statement
924     * @param message the message to log; the format depends on the message factory.
925     * @param p0 parameter to the message.
926     * @param p1 parameter to the message.
927     */
928    void error(Marker marker, String message, Object p0, Object p1);
929
930    /**
931     * Logs a message with parameters at error level.
932     *
933     * @param marker the marker data specific to this log statement
934     * @param message the message to log; the format depends on the message factory.
935     * @param p0 parameter to the message.
936     * @param p1 parameter to the message.
937     * @param p2 parameter to the message.
938     */
939    void error(Marker marker, String message, Object p0, Object p1, Object p2);
940
941    /**
942     * Logs a message with parameters at error level.
943     *
944     * @param marker the marker data specific to this log statement
945     * @param message the message to log; the format depends on the message factory.
946     * @param p0 parameter to the message.
947     * @param p1 parameter to the message.
948     * @param p2 parameter to the message.
949     * @param p3 parameter to the message.
950     */
951    void error(Marker marker, String message, Object p0, Object p1, Object p2, Object p3);
952
953    /**
954     * Logs a message with parameters at error level.
955     *
956     * @param marker the marker data specific to this log statement
957     * @param message the message to log; the format depends on the message factory.
958     * @param p0 parameter to the message.
959     * @param p1 parameter to the message.
960     * @param p2 parameter to the message.
961     * @param p3 parameter to the message.
962     * @param p4 parameter to the message.
963     */
964    void error(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4);
965
966    /**
967     * Logs a message with parameters at error level.
968     *
969     * @param marker the marker data specific to this log statement
970     * @param message the message to log; the format depends on the message factory.
971     * @param p0 parameter to the message.
972     * @param p1 parameter to the message.
973     * @param p2 parameter to the message.
974     * @param p3 parameter to the message.
975     * @param p4 parameter to the message.
976     * @param p5 parameter to the message.
977     */
978    void error(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5);
979
980    /**
981     * Logs a message with parameters at error level.
982     *
983     * @param marker the marker data specific to this log statement
984     * @param message the message to log; the format depends on the message factory.
985     * @param p0 parameter to the message.
986     * @param p1 parameter to the message.
987     * @param p2 parameter to the message.
988     * @param p3 parameter to the message.
989     * @param p4 parameter to the message.
990     * @param p5 parameter to the message.
991     * @param p6 parameter to the message.
992     */
993    void error(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5,
994            Object p6);
995
996    /**
997     * Logs a message with parameters at error level.
998     *
999     * @param marker the marker data specific to this log statement
1000     * @param message the message to log; the format depends on the message factory.
1001     * @param p0 parameter to the message.
1002     * @param p1 parameter to the message.
1003     * @param p2 parameter to the message.
1004     * @param p3 parameter to the message.
1005     * @param p4 parameter to the message.
1006     * @param p5 parameter to the message.
1007     * @param p6 parameter to the message.
1008     * @param p7 parameter to the message.
1009     */
1010    void error(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6,
1011            Object p7);
1012
1013    /**
1014     * Logs a message with parameters at error level.
1015     *
1016     * @param marker the marker data specific to this log statement
1017     * @param message the message to log; the format depends on the message factory.
1018     * @param p0 parameter to the message.
1019     * @param p1 parameter to the message.
1020     * @param p2 parameter to the message.
1021     * @param p3 parameter to the message.
1022     * @param p4 parameter to the message.
1023     * @param p5 parameter to the message.
1024     * @param p6 parameter to the message.
1025     * @param p7 parameter to the message.
1026     * @param p8 parameter to the message.
1027     */
1028    void error(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6,
1029            Object p7, Object p8);
1030
1031    /**
1032     * Logs a message with parameters at error level.
1033     *
1034     * @param marker the marker data specific to this log statement
1035     * @param message the message to log; the format depends on the message factory.
1036     * @param p0 parameter to the message.
1037     * @param p1 parameter to the message.
1038     * @param p2 parameter to the message.
1039     * @param p3 parameter to the message.
1040     * @param p4 parameter to the message.
1041     * @param p5 parameter to the message.
1042     * @param p6 parameter to the message.
1043     * @param p7 parameter to the message.
1044     * @param p8 parameter to the message.
1045     * @param p9 parameter to the message.
1046     */
1047    void error(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6,
1048            Object p7, Object p8, Object p9);
1049
1050    /**
1051     * Logs a message with parameters at error level.
1052     *
1053     * @param message the message to log; the format depends on the message factory.
1054     * @param p0 parameter to the message.
1055     */
1056    void error(String message, Object p0);
1057
1058    /**
1059     * Logs a message with parameters at error level.
1060     *
1061     * @param message the message to log; the format depends on the message factory.
1062     * @param p0 parameter to the message.
1063     * @param p1 parameter to the message.
1064     */
1065    void error(String message, Object p0, Object p1);
1066
1067    /**
1068     * Logs a message with parameters at error level.
1069     *
1070     * @param message the message to log; the format depends on the message factory.
1071     * @param p0 parameter to the message.
1072     * @param p1 parameter to the message.
1073     * @param p2 parameter to the message.
1074     */
1075    void error(String message, Object p0, Object p1, Object p2);
1076
1077    /**
1078     * Logs a message with parameters at error level.
1079     *
1080     * @param message the message to log; the format depends on the message factory.
1081     * @param p0 parameter to the message.
1082     * @param p1 parameter to the message.
1083     * @param p2 parameter to the message.
1084     * @param p3 parameter to the message.
1085     */
1086    void error(String message, Object p0, Object p1, Object p2, Object p3);
1087
1088    /**
1089     * Logs a message with parameters at error level.
1090     *
1091     * @param message the message to log; the format depends on the message factory.
1092     * @param p0 parameter to the message.
1093     * @param p1 parameter to the message.
1094     * @param p2 parameter to the message.
1095     * @param p3 parameter to the message.
1096     * @param p4 parameter to the message.
1097     */
1098    void error(String message, Object p0, Object p1, Object p2, Object p3, Object p4);
1099
1100    /**
1101     * Logs a message with parameters at error level.
1102     *
1103     * @param message the message to log; the format depends on the message factory.
1104     * @param p0 parameter to the message.
1105     * @param p1 parameter to the message.
1106     * @param p2 parameter to the message.
1107     * @param p3 parameter to the message.
1108     * @param p4 parameter to the message.
1109     * @param p5 parameter to the message.
1110     */
1111    void error(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5);
1112
1113    /**
1114     * Logs a message with parameters at error level.
1115     *
1116     * @param message the message to log; the format depends on the message factory.
1117     * @param p0 parameter to the message.
1118     * @param p1 parameter to the message.
1119     * @param p2 parameter to the message.
1120     * @param p3 parameter to the message.
1121     * @param p4 parameter to the message.
1122     * @param p5 parameter to the message.
1123     * @param p6 parameter to the message.
1124     */
1125    void error(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6);
1126
1127    /**
1128     * Logs a message with parameters at error level.
1129     *
1130     * @param message the message to log; the format depends on the message factory.
1131     * @param p0 parameter to the message.
1132     * @param p1 parameter to the message.
1133     * @param p2 parameter to the message.
1134     * @param p3 parameter to the message.
1135     * @param p4 parameter to the message.
1136     * @param p5 parameter to the message.
1137     * @param p6 parameter to the message.
1138     * @param p7 parameter to the message.
1139     */
1140    void error(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7);
1141
1142    /**
1143     * Logs a message with parameters at error level.
1144     *
1145     * @param message the message to log; the format depends on the message factory.
1146     * @param p0 parameter to the message.
1147     * @param p1 parameter to the message.
1148     * @param p2 parameter to the message.
1149     * @param p3 parameter to the message.
1150     * @param p4 parameter to the message.
1151     * @param p5 parameter to the message.
1152     * @param p6 parameter to the message.
1153     * @param p7 parameter to the message.
1154     * @param p8 parameter to the message.
1155     */
1156    void error(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7,
1157            Object p8);
1158
1159    /**
1160     * Logs a message with parameters at error level.
1161     *
1162     * @param message the message to log; the format depends on the message factory.
1163     * @param p0 parameter to the message.
1164     * @param p1 parameter to the message.
1165     * @param p2 parameter to the message.
1166     * @param p3 parameter to the message.
1167     * @param p4 parameter to the message.
1168     * @param p5 parameter to the message.
1169     * @param p6 parameter to the message.
1170     * @param p7 parameter to the message.
1171     * @param p8 parameter to the message.
1172     * @param p9 parameter to the message.
1173     */
1174    void error(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7,
1175            Object p8, Object p9);
1176
1177    /**
1178     * Logs exit from a method. Used for methods that do not return anything.
1179     * @deprecated Use {@link #traceExit()} instead which performs the same function.
1180     */
1181    @Deprecated
1182    void exit();
1183
1184    /**
1185     * Logs exiting from a method with the result. This may be coded as:
1186     *
1187     * <pre>
1188     * return LOGGER.exit(myResult);
1189     * </pre>
1190     *
1191     * @param <R> The type of the parameter and object being returned.
1192     * @param result The result being returned from the method call.
1193     * @return the result.
1194     * @deprecated Use {@link #traceExit(Object)} instead which performs the same function.
1195     */
1196    @Deprecated
1197    <R> R exit(R result);
1198
1199    /**
1200     * Logs a message with the specific Marker at the {@link Level#FATAL FATAL} level.
1201     *
1202     * @param marker the marker data specific to this log statement
1203     * @param msg the message string to be logged
1204     */
1205    void fatal(Marker marker, Message msg);
1206
1207    /**
1208     * Logs a message with the specific Marker at the {@link Level#FATAL FATAL} level.
1209     *
1210     * @param marker the marker data specific to this log statement
1211     * @param msg the message string to be logged
1212     * @param t A Throwable or null.
1213     */
1214    void fatal(Marker marker, Message msg, Throwable t);
1215
1216    /**
1217     * Logs a message which is only to be constructed if the logging level is the {@link Level#FATAL FATAL} level with
1218     * the specified Marker. The {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the
1219     * {@code Message}.
1220     *
1221     * @param marker the marker data specific to this log statement
1222     * @param msgSupplier A function, which when called, produces the desired log message.
1223     * @since 2.4
1224     */
1225    void fatal(Marker marker, MessageSupplier msgSupplier);
1226
1227    /**
1228     * Logs a message (only to be constructed if the logging level is the {@link Level#FATAL FATAL} level) with the
1229     * specified Marker and including the stack trace of the {@link Throwable} <code>t</code> passed as parameter. The
1230     * {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
1231     *
1232     * @param marker the marker data specific to this log statement
1233     * @param msgSupplier A function, which when called, produces the desired log message.
1234     * @param t A Throwable or null.
1235     * @since 2.4
1236     */
1237    void fatal(Marker marker, MessageSupplier msgSupplier, Throwable t);
1238
1239    /**
1240     * Logs a message CharSequence with the {@link Level#FATAL FATAL} level.
1241     *
1242     * @param marker The marker data specific to this log statement.
1243     * @param message the message CharSequence to log.
1244     */
1245    void fatal(Marker marker, CharSequence message);
1246
1247    /**
1248     * Logs a CharSequence at the {@link Level#FATAL FATAL} level including the stack trace of the {@link Throwable}
1249     * <code>t</code> passed as parameter.
1250     *
1251     * @param marker The marker data specific to this log statement.
1252     * @param message the message CharSequence to log.
1253     * @param t the exception to log, including its stack trace.
1254     */
1255    void fatal(Marker marker, CharSequence message, Throwable t);
1256
1257    /**
1258     * Logs a message object with the {@link Level#FATAL FATAL} level.
1259     *
1260     * @param marker The marker data specific to this log statement.
1261     * @param message the message object to log.
1262     */
1263    void fatal(Marker marker, Object message);
1264
1265    /**
1266     * Logs a message at the {@link Level#FATAL FATAL} level including the stack trace of the {@link Throwable}
1267     * <code>t</code> passed as parameter.
1268     *
1269     * @param marker The marker data specific to this log statement.
1270     * @param message the message object to log.
1271     * @param t the exception to log, including its stack trace.
1272     */
1273    void fatal(Marker marker, Object message, Throwable t);
1274
1275    /**
1276     * Logs a message object with the {@link Level#FATAL FATAL} level.
1277     *
1278     * @param marker The marker data specific to this log statement.
1279     * @param message the message object to log.
1280     */
1281    void fatal(Marker marker, String message);
1282
1283    /**
1284     * Logs a message with parameters at the {@link Level#FATAL FATAL} level.
1285     *
1286     * @param marker The marker data specific to this log statement.
1287     * @param message the message to log; the format depends on the message factory.
1288     * @param params parameters to the message.
1289     * @see #getMessageFactory()
1290     */
1291    void fatal(Marker marker, String message, Object... params);
1292
1293    /**
1294     * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#FATAL
1295     * FATAL} level.
1296     *
1297     * @param marker the marker data specific to this log statement
1298     * @param message the message to log; the format depends on the message factory.
1299     * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
1300     * @since 2.4
1301     */
1302    void fatal(Marker marker, String message, Supplier<?>... paramSuppliers);
1303
1304    /**
1305     * Logs a message at the {@link Level#FATAL FATAL} level including the stack trace of the {@link Throwable}
1306     * <code>t</code> passed as parameter.
1307     *
1308     * @param marker The marker data specific to this log statement.
1309     * @param message the message object to log.
1310     * @param t the exception to log, including its stack trace.
1311     */
1312    void fatal(Marker marker, String message, Throwable t);
1313
1314    /**
1315     * Logs a message which is only to be constructed if the logging level is the {@link Level#FATAL FATAL} level with
1316     * the specified Marker.
1317     *
1318     * @param marker the marker data specific to this log statement
1319     * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
1320     *            message factory.
1321     * @since 2.4
1322     */
1323    void fatal(Marker marker, Supplier<?> msgSupplier);
1324
1325    /**
1326     * Logs a message (only to be constructed if the logging level is the {@link Level#FATAL FATAL} level) with the
1327     * specified Marker and including the stack trace of the {@link Throwable} <code>t</code> passed as parameter.
1328     *
1329     * @param marker the marker data specific to this log statement
1330     * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
1331     *            message factory.
1332     * @param t A Throwable or null.
1333     * @since 2.4
1334     */
1335    void fatal(Marker marker, Supplier<?> msgSupplier, Throwable t);
1336
1337    /**
1338     * Logs a message with the specific Marker at the {@link Level#FATAL FATAL} level.
1339     *
1340     * @param msg the message string to be logged
1341     */
1342    void fatal(Message msg);
1343
1344    /**
1345     * Logs a message with the specific Marker at the {@link Level#FATAL FATAL} level.
1346     *
1347     * @param msg the message string to be logged
1348     * @param t A Throwable or null.
1349     */
1350    void fatal(Message msg, Throwable t);
1351
1352    /**
1353     * Logs a message which is only to be constructed if the logging level is the {@link Level#FATAL FATAL} level. The
1354     * {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
1355     *
1356     * @param msgSupplier A function, which when called, produces the desired log message.
1357     * @since 2.4
1358     */
1359    void fatal(MessageSupplier msgSupplier);
1360
1361    /**
1362     * Logs a message (only to be constructed if the logging level is the {@link Level#FATAL FATAL} level) including the
1363     * stack trace of the {@link Throwable} <code>t</code> passed as parameter. The {@code MessageSupplier} may or may
1364     * not use the {@link MessageFactory} to construct the {@code Message}.
1365     *
1366     * @param msgSupplier A function, which when called, produces the desired log message.
1367     * @param t the exception to log, including its stack trace.
1368     * @since 2.4
1369     */
1370    void fatal(MessageSupplier msgSupplier, Throwable t);
1371
1372    /**
1373     * Logs a message CharSequence with the {@link Level#FATAL FATAL} level.
1374     *
1375     * @param message the message CharSequence to log.
1376     */
1377    void fatal(CharSequence message);
1378
1379    /**
1380     * Logs a CharSequence at the {@link Level#FATAL FATAL} level including the stack trace of the {@link Throwable}
1381     * <code>t</code> passed as parameter.
1382     *
1383     * @param message the message CharSequence to log.
1384     * @param t the exception to log, including its stack trace.
1385     */
1386    void fatal(CharSequence message, Throwable t);
1387
1388    /**
1389     * Logs a message object with the {@link Level#FATAL FATAL} level.
1390     *
1391     * @param message the message object to log.
1392     */
1393    void fatal(Object message);
1394
1395    /**
1396     * Logs a message at the {@link Level#FATAL FATAL} level including the stack trace of the {@link Throwable}
1397     * <code>t</code> passed as parameter.
1398     *
1399     * @param message the message object to log.
1400     * @param t the exception to log, including its stack trace.
1401     */
1402    void fatal(Object message, Throwable t);
1403
1404    /**
1405     * Logs a message object with the {@link Level#FATAL FATAL} level.
1406     *
1407     * @param message the message string to log.
1408     */
1409    void fatal(String message);
1410
1411    /**
1412     * Logs a message with parameters at the {@link Level#FATAL FATAL} level.
1413     *
1414     * @param message the message to log; the format depends on the message factory.
1415     * @param params parameters to the message.
1416     * @see #getMessageFactory()
1417     */
1418    void fatal(String message, Object... params);
1419
1420    /**
1421     * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#FATAL
1422     * FATAL} level.
1423     *
1424     * @param message the message to log; the format depends on the message factory.
1425     * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
1426     * @since 2.4
1427     */
1428    void fatal(String message, Supplier<?>... paramSuppliers);
1429
1430    /**
1431     * Logs a message at the {@link Level#FATAL FATAL} level including the stack trace of the {@link Throwable}
1432     * <code>t</code> passed as parameter.
1433     *
1434     * @param message the message object to log.
1435     * @param t the exception to log, including its stack trace.
1436     */
1437    void fatal(String message, Throwable t);
1438
1439    /**
1440     * Logs a message which is only to be constructed if the logging level is the {@link Level#FATAL FATAL} level.
1441     *
1442     * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
1443     *            message factory.
1444     * @since 2.4
1445     */
1446    void fatal(Supplier<?> msgSupplier);
1447
1448    /**
1449     * Logs a message (only to be constructed if the logging level is the {@link Level#FATAL FATAL} level) including the
1450     * stack trace of the {@link Throwable} <code>t</code> passed as parameter.
1451     *
1452     * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
1453     *            message factory.
1454     * @param t the exception to log, including its stack trace.
1455     * @since 2.4
1456     */
1457    void fatal(Supplier<?> msgSupplier, Throwable t);
1458
1459    /**
1460     * Logs a message with parameters at fatal level.
1461     *
1462     * @param marker the marker data specific to this log statement
1463     * @param message the message to log; the format depends on the message factory.
1464     * @param p0 parameter to the message.
1465     */
1466    void fatal(Marker marker, String message, Object p0);
1467
1468    /**
1469     * Logs a message with parameters at fatal level.
1470     *
1471     * @param marker the marker data specific to this log statement
1472     * @param message the message to log; the format depends on the message factory.
1473     * @param p0 parameter to the message.
1474     * @param p1 parameter to the message.
1475     */
1476    void fatal(Marker marker, String message, Object p0, Object p1);
1477
1478    /**
1479     * Logs a message with parameters at fatal level.
1480     *
1481     * @param marker the marker data specific to this log statement
1482     * @param message the message to log; the format depends on the message factory.
1483     * @param p0 parameter to the message.
1484     * @param p1 parameter to the message.
1485     * @param p2 parameter to the message.
1486     */
1487    void fatal(Marker marker, String message, Object p0, Object p1, Object p2);
1488
1489    /**
1490     * Logs a message with parameters at fatal level.
1491     *
1492     * @param marker the marker data specific to this log statement
1493     * @param message the message to log; the format depends on the message factory.
1494     * @param p0 parameter to the message.
1495     * @param p1 parameter to the message.
1496     * @param p2 parameter to the message.
1497     * @param p3 parameter to the message.
1498     */
1499    void fatal(Marker marker, String message, Object p0, Object p1, Object p2, Object p3);
1500
1501    /**
1502     * Logs a message with parameters at fatal level.
1503     *
1504     * @param marker the marker data specific to this log statement
1505     * @param message the message to log; the format depends on the message factory.
1506     * @param p0 parameter to the message.
1507     * @param p1 parameter to the message.
1508     * @param p2 parameter to the message.
1509     * @param p3 parameter to the message.
1510     * @param p4 parameter to the message.
1511     */
1512    void fatal(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4);
1513
1514    /**
1515     * Logs a message with parameters at fatal level.
1516     *
1517     * @param marker the marker data specific to this log statement
1518     * @param message the message to log; the format depends on the message factory.
1519     * @param p0 parameter to the message.
1520     * @param p1 parameter to the message.
1521     * @param p2 parameter to the message.
1522     * @param p3 parameter to the message.
1523     * @param p4 parameter to the message.
1524     * @param p5 parameter to the message.
1525     */
1526    void fatal(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5);
1527
1528    /**
1529     * Logs a message with parameters at fatal level.
1530     *
1531     * @param marker the marker data specific to this log statement
1532     * @param message the message to log; the format depends on the message factory.
1533     * @param p0 parameter to the message.
1534     * @param p1 parameter to the message.
1535     * @param p2 parameter to the message.
1536     * @param p3 parameter to the message.
1537     * @param p4 parameter to the message.
1538     * @param p5 parameter to the message.
1539     * @param p6 parameter to the message.
1540     */
1541    void fatal(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5,
1542            Object p6);
1543
1544    /**
1545     * Logs a message with parameters at fatal level.
1546     *
1547     * @param marker the marker data specific to this log statement
1548     * @param message the message to log; the format depends on the message factory.
1549     * @param p0 parameter to the message.
1550     * @param p1 parameter to the message.
1551     * @param p2 parameter to the message.
1552     * @param p3 parameter to the message.
1553     * @param p4 parameter to the message.
1554     * @param p5 parameter to the message.
1555     * @param p6 parameter to the message.
1556     * @param p7 parameter to the message.
1557     */
1558    void fatal(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6,
1559            Object p7);
1560
1561    /**
1562     * Logs a message with parameters at fatal level.
1563     *
1564     * @param marker the marker data specific to this log statement
1565     * @param message the message to log; the format depends on the message factory.
1566     * @param p0 parameter to the message.
1567     * @param p1 parameter to the message.
1568     * @param p2 parameter to the message.
1569     * @param p3 parameter to the message.
1570     * @param p4 parameter to the message.
1571     * @param p5 parameter to the message.
1572     * @param p6 parameter to the message.
1573     * @param p7 parameter to the message.
1574     * @param p8 parameter to the message.
1575     */
1576    void fatal(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6,
1577            Object p7, Object p8);
1578
1579    /**
1580     * Logs a message with parameters at fatal level.
1581     *
1582     * @param marker the marker data specific to this log statement
1583     * @param message the message to log; the format depends on the message factory.
1584     * @param p0 parameter to the message.
1585     * @param p1 parameter to the message.
1586     * @param p2 parameter to the message.
1587     * @param p3 parameter to the message.
1588     * @param p4 parameter to the message.
1589     * @param p5 parameter to the message.
1590     * @param p6 parameter to the message.
1591     * @param p7 parameter to the message.
1592     * @param p8 parameter to the message.
1593     * @param p9 parameter to the message.
1594     */
1595    void fatal(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6,
1596            Object p7, Object p8, Object p9);
1597
1598    /**
1599     * Logs a message with parameters at fatal level.
1600     *
1601     * @param message the message to log; the format depends on the message factory.
1602     * @param p0 parameter to the message.
1603     */
1604    void fatal(String message, Object p0);
1605
1606    /**
1607     * Logs a message with parameters at fatal level.
1608     *
1609     * @param message the message to log; the format depends on the message factory.
1610     * @param p0 parameter to the message.
1611     * @param p1 parameter to the message.
1612     */
1613    void fatal(String message, Object p0, Object p1);
1614
1615    /**
1616     * Logs a message with parameters at fatal level.
1617     *
1618     * @param message the message to log; the format depends on the message factory.
1619     * @param p0 parameter to the message.
1620     * @param p1 parameter to the message.
1621     * @param p2 parameter to the message.
1622     */
1623    void fatal(String message, Object p0, Object p1, Object p2);
1624
1625    /**
1626     * Logs a message with parameters at fatal level.
1627     *
1628     * @param message the message to log; the format depends on the message factory.
1629     * @param p0 parameter to the message.
1630     * @param p1 parameter to the message.
1631     * @param p2 parameter to the message.
1632     * @param p3 parameter to the message.
1633     */
1634    void fatal(String message, Object p0, Object p1, Object p2, Object p3);
1635
1636    /**
1637     * Logs a message with parameters at fatal level.
1638     *
1639     * @param message the message to log; the format depends on the message factory.
1640     * @param p0 parameter to the message.
1641     * @param p1 parameter to the message.
1642     * @param p2 parameter to the message.
1643     * @param p3 parameter to the message.
1644     * @param p4 parameter to the message.
1645     */
1646    void fatal(String message, Object p0, Object p1, Object p2, Object p3, Object p4);
1647
1648    /**
1649     * Logs a message with parameters at fatal level.
1650     *
1651     * @param message the message to log; the format depends on the message factory.
1652     * @param p0 parameter to the message.
1653     * @param p1 parameter to the message.
1654     * @param p2 parameter to the message.
1655     * @param p3 parameter to the message.
1656     * @param p4 parameter to the message.
1657     * @param p5 parameter to the message.
1658     */
1659    void fatal(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5);
1660
1661    /**
1662     * Logs a message with parameters at fatal level.
1663     *
1664     * @param message the message to log; the format depends on the message factory.
1665     * @param p0 parameter to the message.
1666     * @param p1 parameter to the message.
1667     * @param p2 parameter to the message.
1668     * @param p3 parameter to the message.
1669     * @param p4 parameter to the message.
1670     * @param p5 parameter to the message.
1671     * @param p6 parameter to the message.
1672     */
1673    void fatal(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6);
1674
1675    /**
1676     * Logs a message with parameters at fatal level.
1677     *
1678     * @param message the message to log; the format depends on the message factory.
1679     * @param p0 parameter to the message.
1680     * @param p1 parameter to the message.
1681     * @param p2 parameter to the message.
1682     * @param p3 parameter to the message.
1683     * @param p4 parameter to the message.
1684     * @param p5 parameter to the message.
1685     * @param p6 parameter to the message.
1686     * @param p7 parameter to the message.
1687     */
1688    void fatal(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7);
1689
1690    /**
1691     * Logs a message with parameters at fatal level.
1692     *
1693     * @param message the message to log; the format depends on the message factory.
1694     * @param p0 parameter to the message.
1695     * @param p1 parameter to the message.
1696     * @param p2 parameter to the message.
1697     * @param p3 parameter to the message.
1698     * @param p4 parameter to the message.
1699     * @param p5 parameter to the message.
1700     * @param p6 parameter to the message.
1701     * @param p7 parameter to the message.
1702     * @param p8 parameter to the message.
1703     */
1704    void fatal(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7,
1705            Object p8);
1706
1707    /**
1708     * Logs a message with parameters at fatal level.
1709     *
1710     * @param message the message to log; the format depends on the message factory.
1711     * @param p0 parameter to the message.
1712     * @param p1 parameter to the message.
1713     * @param p2 parameter to the message.
1714     * @param p3 parameter to the message.
1715     * @param p4 parameter to the message.
1716     * @param p5 parameter to the message.
1717     * @param p6 parameter to the message.
1718     * @param p7 parameter to the message.
1719     * @param p8 parameter to the message.
1720     * @param p9 parameter to the message.
1721     */
1722    void fatal(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7,
1723            Object p8, Object p9);
1724
1725    /**
1726     * Gets the Level associated with the Logger.
1727     *
1728     * @return the Level associate with the Logger.
1729     */
1730    Level getLevel();
1731
1732    /**
1733     * Gets the message factory used to convert message Objects and Strings/CharSequences into actual log Messages.
1734     *
1735     * Since version 2.6, Log4j internally uses message factories that implement the {@link MessageFactory2} interface.
1736     * From version 2.6.2, the return type of this method was changed from {@link MessageFactory} to
1737     * {@code <MF extends MessageFactory> MF}. The returned factory will always implement {@link MessageFactory2},
1738     * but the return type of this method could not be changed to {@link MessageFactory2} without breaking binary
1739     * compatibility.
1740     *
1741     * @return the message factory, as an instance of {@link MessageFactory2}
1742     */
1743    <MF extends MessageFactory> MF getMessageFactory();
1744
1745    /**
1746     * Gets the logger name.
1747     *
1748     * @return the logger name.
1749     */
1750    String getName();
1751
1752    /**
1753     * Logs a message with the specific Marker at the {@link Level#INFO INFO} level.
1754     *
1755     * @param marker the marker data specific to this log statement
1756     * @param msg the message string to be logged
1757     */
1758    void info(Marker marker, Message msg);
1759
1760    /**
1761     * Logs a message with the specific Marker at the {@link Level#INFO INFO} level.
1762     *
1763     * @param marker the marker data specific to this log statement
1764     * @param msg the message string to be logged
1765     * @param t A Throwable or null.
1766     */
1767    void info(Marker marker, Message msg, Throwable t);
1768
1769    /**
1770     * Logs a message which is only to be constructed if the logging level is the {@link Level#INFO INFO} level with the
1771     * specified Marker. The {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the
1772     * {@code Message}.
1773     *
1774     * @param marker the marker data specific to this log statement
1775     * @param msgSupplier A function, which when called, produces the desired log message.
1776     * @since 2.4
1777     */
1778    void info(Marker marker, MessageSupplier msgSupplier);
1779
1780    /**
1781     * Logs a message (only to be constructed if the logging level is the {@link Level#INFO INFO} level) with the
1782     * specified Marker and including the stack trace of the {@link Throwable} <code>t</code> passed as parameter. The
1783     * {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
1784     *
1785     * @param marker the marker data specific to this log statement
1786     * @param msgSupplier A function, which when called, produces the desired log message.
1787     * @param t A Throwable or null.
1788     * @since 2.4
1789     */
1790    void info(Marker marker, MessageSupplier msgSupplier, Throwable t);
1791
1792    /**
1793     * Logs a message CharSequence with the {@link Level#INFO INFO} level.
1794     *
1795     * @param marker the marker data specific to this log statement
1796     * @param message the message CharSequence to log.
1797     */
1798    void info(Marker marker, CharSequence message);
1799
1800    /**
1801     * Logs a CharSequence at the {@link Level#INFO INFO} level including the stack trace of the {@link Throwable}
1802     * <code>t</code> passed as parameter.
1803     *
1804     * @param marker the marker data specific to this log statement
1805     * @param message the message CharSequence to log.
1806     * @param t the exception to log, including its stack trace.
1807     */
1808    void info(Marker marker, CharSequence message, Throwable t);
1809
1810    /**
1811     * Logs a message object with the {@link Level#INFO INFO} level.
1812     *
1813     * @param marker the marker data specific to this log statement
1814     * @param message the message object to log.
1815     */
1816    void info(Marker marker, Object message);
1817
1818    /**
1819     * Logs a message at the {@link Level#INFO INFO} level including the stack trace of the {@link Throwable}
1820     * <code>t</code> passed as parameter.
1821     *
1822     * @param marker the marker data specific to this log statement
1823     * @param message the message object to log.
1824     * @param t the exception to log, including its stack trace.
1825     */
1826    void info(Marker marker, Object message, Throwable t);
1827
1828    /**
1829     * Logs a message object with the {@link Level#INFO INFO} level.
1830     *
1831     * @param marker the marker data specific to this log statement
1832     * @param message the message object to log.
1833     */
1834    void info(Marker marker, String message);
1835
1836    /**
1837     * Logs a message with parameters at the {@link Level#INFO INFO} level.
1838     *
1839     * @param marker the marker data specific to this log statement
1840     * @param message the message to log; the format depends on the message factory.
1841     * @param params parameters to the message.
1842     * @see #getMessageFactory()
1843     */
1844    void info(Marker marker, String message, Object... params);
1845
1846    /**
1847     * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#INFO
1848     * INFO} level.
1849     *
1850     * @param marker the marker data specific to this log statement
1851     * @param message the message to log; the format depends on the message factory.
1852     * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
1853     * @since 2.4
1854     */
1855    void info(Marker marker, String message, Supplier<?>... paramSuppliers);
1856
1857    /**
1858     * Logs a message at the {@link Level#INFO INFO} level including the stack trace of the {@link Throwable}
1859     * <code>t</code> passed as parameter.
1860     *
1861     * @param marker the marker data specific to this log statement
1862     * @param message the message object to log.
1863     * @param t the exception to log, including its stack trace.
1864     */
1865    void info(Marker marker, String message, Throwable t);
1866
1867    /**
1868     * Logs a message which is only to be constructed if the logging level is the {@link Level#INFO INFO} level with the
1869     * specified Marker.
1870     *
1871     * @param marker the marker data specific to this log statement
1872     * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
1873     *            message factory.
1874     * @since 2.4
1875     */
1876    void info(Marker marker, Supplier<?> msgSupplier);
1877
1878    /**
1879     * Logs a message (only to be constructed if the logging level is the {@link Level#INFO INFO} level) with the
1880     * specified Marker and including the stack trace of the {@link Throwable} <code>t</code> passed as parameter.
1881     *
1882     * @param marker the marker data specific to this log statement
1883     * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
1884     *            message factory.
1885     * @param t A Throwable or null.
1886     * @since 2.4
1887     */
1888    void info(Marker marker, Supplier<?> msgSupplier, Throwable t);
1889
1890    /**
1891     * Logs a message with the specific Marker at the {@link Level#INFO INFO} level.
1892     *
1893     * @param msg the message string to be logged
1894     */
1895    void info(Message msg);
1896
1897    /**
1898     * Logs a message with the specific Marker at the {@link Level#INFO INFO} level.
1899     *
1900     * @param msg the message string to be logged
1901     * @param t A Throwable or null.
1902     */
1903    void info(Message msg, Throwable t);
1904
1905    /**
1906     * Logs a message which is only to be constructed if the logging level is the {@link Level#INFO INFO} level. The
1907     * {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
1908     *
1909     * @param msgSupplier A function, which when called, produces the desired log message.
1910     * @since 2.4
1911     */
1912    void info(MessageSupplier msgSupplier);
1913
1914    /**
1915     * Logs a message (only to be constructed if the logging level is the {@link Level#INFO INFO} level) including the
1916     * stack trace of the {@link Throwable} <code>t</code> passed as parameter. The {@code MessageSupplier} may or may
1917     * not use the {@link MessageFactory} to construct the {@code Message}.
1918     *
1919     * @param msgSupplier A function, which when called, produces the desired log message.
1920     * @param t the exception to log, including its stack trace.
1921     * @since 2.4
1922     */
1923    void info(MessageSupplier msgSupplier, Throwable t);
1924
1925    /**
1926     * Logs a message CharSequence with the {@link Level#INFO INFO} level.
1927     *
1928     * @param message the message CharSequence to log.
1929     */
1930    void info(CharSequence message);
1931
1932    /**
1933     * Logs a CharSequence at the {@link Level#INFO INFO} level including the stack trace of the {@link Throwable}
1934     * <code>t</code> passed as parameter.
1935     *
1936     * @param message the message CharSequence to log.
1937     * @param t the exception to log, including its stack trace.
1938     */
1939    void info(CharSequence message, Throwable t);
1940
1941    /**
1942     * Logs a message object with the {@link Level#INFO INFO} level.
1943     *
1944     * @param message the message object to log.
1945     */
1946    void info(Object message);
1947
1948    /**
1949     * Logs a message at the {@link Level#INFO INFO} level including the stack trace of the {@link Throwable}
1950     * <code>t</code> passed as parameter.
1951     *
1952     * @param message the message object to log.
1953     * @param t the exception to log, including its stack trace.
1954     */
1955    void info(Object message, Throwable t);
1956
1957    /**
1958     * Logs a message object with the {@link Level#INFO INFO} level.
1959     *
1960     * @param message the message string to log.
1961     */
1962    void info(String message);
1963
1964    /**
1965     * Logs a message with parameters at the {@link Level#INFO INFO} level.
1966     *
1967     * @param message the message to log; the format depends on the message factory.
1968     * @param params parameters to the message.
1969     * @see #getMessageFactory()
1970     */
1971    void info(String message, Object... params);
1972
1973    /**
1974     * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#INFO
1975     * INFO} level.
1976     *
1977     * @param message the message to log; the format depends on the message factory.
1978     * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
1979     * @since 2.4
1980     */
1981    void info(String message, Supplier<?>... paramSuppliers);
1982
1983    /**
1984     * Logs a message at the {@link Level#INFO INFO} level including the stack trace of the {@link Throwable}
1985     * <code>t</code> passed as parameter.
1986     *
1987     * @param message the message object to log.
1988     * @param t the exception to log, including its stack trace.
1989     */
1990    void info(String message, Throwable t);
1991
1992    /**
1993     * Logs a message which is only to be constructed if the logging level is the {@link Level#INFO INFO} level.
1994     *
1995     * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
1996     *            message factory.
1997     * @since 2.4
1998     */
1999    void info(Supplier<?> msgSupplier);
2000
2001    /**
2002     * Logs a message (only to be constructed if the logging level is the {@link Level#INFO INFO} level) including the
2003     * stack trace of the {@link Throwable} <code>t</code> passed as parameter.
2004     *
2005     * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
2006     *            message factory.
2007     * @param t the exception to log, including its stack trace.
2008     * @since 2.4
2009     */
2010    void info(Supplier<?> msgSupplier, Throwable t);
2011
2012    /**
2013     * Logs a message with parameters at info level.
2014     *
2015     * @param marker the marker data specific to this log statement
2016     * @param message the message to log; the format depends on the message factory.
2017     * @param p0 parameter to the message.
2018     */
2019    void info(Marker marker, String message, Object p0);
2020
2021    /**
2022     * Logs a message with parameters at info level.
2023     *
2024     * @param marker the marker data specific to this log statement
2025     * @param message the message to log; the format depends on the message factory.
2026     * @param p0 parameter to the message.
2027     * @param p1 parameter to the message.
2028     */
2029    void info(Marker marker, String message, Object p0, Object p1);
2030
2031    /**
2032     * Logs a message with parameters at info level.
2033     *
2034     * @param marker the marker data specific to this log statement
2035     * @param message the message to log; the format depends on the message factory.
2036     * @param p0 parameter to the message.
2037     * @param p1 parameter to the message.
2038     * @param p2 parameter to the message.
2039     */
2040    void info(Marker marker, String message, Object p0, Object p1, Object p2);
2041
2042    /**
2043     * Logs a message with parameters at info level.
2044     *
2045     * @param marker the marker data specific to this log statement
2046     * @param message the message to log; the format depends on the message factory.
2047     * @param p0 parameter to the message.
2048     * @param p1 parameter to the message.
2049     * @param p2 parameter to the message.
2050     * @param p3 parameter to the message.
2051     */
2052    void info(Marker marker, String message, Object p0, Object p1, Object p2, Object p3);
2053
2054    /**
2055     * Logs a message with parameters at info level.
2056     *
2057     * @param marker the marker data specific to this log statement
2058     * @param message the message to log; the format depends on the message factory.
2059     * @param p0 parameter to the message.
2060     * @param p1 parameter to the message.
2061     * @param p2 parameter to the message.
2062     * @param p3 parameter to the message.
2063     * @param p4 parameter to the message.
2064     */
2065    void info(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4);
2066
2067    /**
2068     * Logs a message with parameters at info level.
2069     *
2070     * @param marker the marker data specific to this log statement
2071     * @param message the message to log; the format depends on the message factory.
2072     * @param p0 parameter to the message.
2073     * @param p1 parameter to the message.
2074     * @param p2 parameter to the message.
2075     * @param p3 parameter to the message.
2076     * @param p4 parameter to the message.
2077     * @param p5 parameter to the message.
2078     */
2079    void info(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5);
2080
2081    /**
2082     * Logs a message with parameters at info level.
2083     *
2084     * @param marker the marker data specific to this log statement
2085     * @param message the message to log; the format depends on the message factory.
2086     * @param p0 parameter to the message.
2087     * @param p1 parameter to the message.
2088     * @param p2 parameter to the message.
2089     * @param p3 parameter to the message.
2090     * @param p4 parameter to the message.
2091     * @param p5 parameter to the message.
2092     * @param p6 parameter to the message.
2093     */
2094    void info(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5,
2095            Object p6);
2096
2097    /**
2098     * Logs a message with parameters at info level.
2099     *
2100     * @param marker the marker data specific to this log statement
2101     * @param message the message to log; the format depends on the message factory.
2102     * @param p0 parameter to the message.
2103     * @param p1 parameter to the message.
2104     * @param p2 parameter to the message.
2105     * @param p3 parameter to the message.
2106     * @param p4 parameter to the message.
2107     * @param p5 parameter to the message.
2108     * @param p6 parameter to the message.
2109     * @param p7 parameter to the message.
2110     */
2111    void info(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6,
2112            Object p7);
2113
2114    /**
2115     * Logs a message with parameters at info level.
2116     *
2117     * @param marker the marker data specific to this log statement
2118     * @param message the message to log; the format depends on the message factory.
2119     * @param p0 parameter to the message.
2120     * @param p1 parameter to the message.
2121     * @param p2 parameter to the message.
2122     * @param p3 parameter to the message.
2123     * @param p4 parameter to the message.
2124     * @param p5 parameter to the message.
2125     * @param p6 parameter to the message.
2126     * @param p7 parameter to the message.
2127     * @param p8 parameter to the message.
2128     */
2129    void info(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6,
2130            Object p7, Object p8);
2131
2132    /**
2133     * Logs a message with parameters at info level.
2134     *
2135     * @param marker the marker data specific to this log statement
2136     * @param message the message to log; the format depends on the message factory.
2137     * @param p0 parameter to the message.
2138     * @param p1 parameter to the message.
2139     * @param p2 parameter to the message.
2140     * @param p3 parameter to the message.
2141     * @param p4 parameter to the message.
2142     * @param p5 parameter to the message.
2143     * @param p6 parameter to the message.
2144     * @param p7 parameter to the message.
2145     * @param p8 parameter to the message.
2146     * @param p9 parameter to the message.
2147     */
2148    void info(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6,
2149            Object p7, Object p8, Object p9);
2150
2151    /**
2152     * Logs a message with parameters at info level.
2153     *
2154     * @param message the message to log; the format depends on the message factory.
2155     * @param p0 parameter to the message.
2156     */
2157    void info(String message, Object p0);
2158
2159    /**
2160     * Logs a message with parameters at info level.
2161     *
2162     * @param message the message to log; the format depends on the message factory.
2163     * @param p0 parameter to the message.
2164     * @param p1 parameter to the message.
2165     */
2166    void info(String message, Object p0, Object p1);
2167
2168    /**
2169     * Logs a message with parameters at info level.
2170     *
2171     * @param message the message to log; the format depends on the message factory.
2172     * @param p0 parameter to the message.
2173     * @param p1 parameter to the message.
2174     * @param p2 parameter to the message.
2175     */
2176    void info(String message, Object p0, Object p1, Object p2);
2177
2178    /**
2179     * Logs a message with parameters at info level.
2180     *
2181     * @param message the message to log; the format depends on the message factory.
2182     * @param p0 parameter to the message.
2183     * @param p1 parameter to the message.
2184     * @param p2 parameter to the message.
2185     * @param p3 parameter to the message.
2186     */
2187    void info(String message, Object p0, Object p1, Object p2, Object p3);
2188
2189    /**
2190     * Logs a message with parameters at info level.
2191     *
2192     * @param message the message to log; the format depends on the message factory.
2193     * @param p0 parameter to the message.
2194     * @param p1 parameter to the message.
2195     * @param p2 parameter to the message.
2196     * @param p3 parameter to the message.
2197     * @param p4 parameter to the message.
2198     */
2199    void info(String message, Object p0, Object p1, Object p2, Object p3, Object p4);
2200
2201    /**
2202     * Logs a message with parameters at info level.
2203     *
2204     * @param message the message to log; the format depends on the message factory.
2205     * @param p0 parameter to the message.
2206     * @param p1 parameter to the message.
2207     * @param p2 parameter to the message.
2208     * @param p3 parameter to the message.
2209     * @param p4 parameter to the message.
2210     * @param p5 parameter to the message.
2211     */
2212    void info(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5);
2213
2214    /**
2215     * Logs a message with parameters at info level.
2216     *
2217     * @param message the message to log; the format depends on the message factory.
2218     * @param p0 parameter to the message.
2219     * @param p1 parameter to the message.
2220     * @param p2 parameter to the message.
2221     * @param p3 parameter to the message.
2222     * @param p4 parameter to the message.
2223     * @param p5 parameter to the message.
2224     * @param p6 parameter to the message.
2225     */
2226    void info(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6);
2227
2228    /**
2229     * Logs a message with parameters at info level.
2230     *
2231     * @param message the message to log; the format depends on the message factory.
2232     * @param p0 parameter to the message.
2233     * @param p1 parameter to the message.
2234     * @param p2 parameter to the message.
2235     * @param p3 parameter to the message.
2236     * @param p4 parameter to the message.
2237     * @param p5 parameter to the message.
2238     * @param p6 parameter to the message.
2239     * @param p7 parameter to the message.
2240     */
2241    void info(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7);
2242
2243    /**
2244     * Logs a message with parameters at info level.
2245     *
2246     * @param message the message to log; the format depends on the message factory.
2247     * @param p0 parameter to the message.
2248     * @param p1 parameter to the message.
2249     * @param p2 parameter to the message.
2250     * @param p3 parameter to the message.
2251     * @param p4 parameter to the message.
2252     * @param p5 parameter to the message.
2253     * @param p6 parameter to the message.
2254     * @param p7 parameter to the message.
2255     * @param p8 parameter to the message.
2256     */
2257    void info(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7,
2258            Object p8);
2259
2260    /**
2261     * Logs a message with parameters at info level.
2262     *
2263     * @param message the message to log; the format depends on the message factory.
2264     * @param p0 parameter to the message.
2265     * @param p1 parameter to the message.
2266     * @param p2 parameter to the message.
2267     * @param p3 parameter to the message.
2268     * @param p4 parameter to the message.
2269     * @param p5 parameter to the message.
2270     * @param p6 parameter to the message.
2271     * @param p7 parameter to the message.
2272     * @param p8 parameter to the message.
2273     * @param p9 parameter to the message.
2274     */
2275    void info(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7,
2276            Object p8, Object p9);
2277
2278    /**
2279     * Checks whether this Logger is enabled for the {@link Level#DEBUG DEBUG} Level.
2280     *
2281     * @return boolean - {@code true} if this Logger is enabled for level DEBUG, {@code false} otherwise.
2282     */
2283    boolean isDebugEnabled();
2284
2285    /**
2286     * Checks whether this Logger is enabled for the {@link Level#DEBUG DEBUG} Level.
2287     *
2288     * @param marker The Marker to check
2289     * @return boolean - {@code true} if this Logger is enabled for level DEBUG, {@code false} otherwise.
2290     */
2291    boolean isDebugEnabled(Marker marker);
2292
2293    /**
2294     * Checks whether this Logger is enabled for the given Level.
2295     * <p>
2296     * Note that passing in {@link Level#OFF OFF} always returns {@code true}.
2297     * </p>
2298     *
2299     * @param level the Level to check
2300     * @return boolean - {@code true} if this Logger is enabled for level, {@code false} otherwise.
2301     */
2302    boolean isEnabled(Level level);
2303
2304    /**
2305     * Checks whether this Logger is enabled for the given Level and Marker.
2306     *
2307     * @param level The Level to check
2308     * @param marker The Marker to check
2309     * @return boolean - {@code true} if this Logger is enabled for level and marker, {@code false} otherwise.
2310     */
2311    boolean isEnabled(Level level, Marker marker);
2312
2313    /**
2314     * Checks whether this Logger is enabled for the {@link Level#ERROR ERROR} Level.
2315     *
2316     * @return boolean - {@code true} if this Logger is enabled for level {@link Level#ERROR ERROR}, {@code false}
2317     *         otherwise.
2318     */
2319    boolean isErrorEnabled();
2320
2321    /**
2322     * Checks whether this Logger is enabled for the {@link Level#ERROR ERROR} Level.
2323     *
2324     * @param marker The Marker to check
2325     * @return boolean - {@code true} if this Logger is enabled for level {@link Level#ERROR ERROR}, {@code false}
2326     *         otherwise.
2327     */
2328    boolean isErrorEnabled(Marker marker);
2329
2330    /**
2331     * Checks whether this Logger is enabled for the {@link Level#FATAL FATAL} Level.
2332     *
2333     * @return boolean - {@code true} if this Logger is enabled for level {@link Level#FATAL FATAL}, {@code false}
2334     *         otherwise.
2335     */
2336    boolean isFatalEnabled();
2337
2338    /**
2339     * Checks whether this Logger is enabled for the {@link Level#FATAL FATAL} Level.
2340     *
2341     * @param marker The Marker to check
2342     * @return boolean - {@code true} if this Logger is enabled for level {@link Level#FATAL FATAL}, {@code false}
2343     *         otherwise.
2344     */
2345    boolean isFatalEnabled(Marker marker);
2346
2347    /**
2348     * Checks whether this Logger is enabled for the {@link Level#INFO INFO} Level.
2349     *
2350     * @return boolean - {@code true} if this Logger is enabled for level INFO, {@code false} otherwise.
2351     */
2352    boolean isInfoEnabled();
2353
2354    /**
2355     * Checks whether this Logger is enabled for the {@link Level#INFO INFO} Level.
2356     *
2357     * @param marker The Marker to check
2358     * @return boolean - {@code true} if this Logger is enabled for level INFO, {@code false} otherwise.
2359     */
2360    boolean isInfoEnabled(Marker marker);
2361
2362    /**
2363     * Checks whether this Logger is enabled for the {@link Level#TRACE TRACE} level.
2364     *
2365     * @return boolean - {@code true} if this Logger is enabled for level TRACE, {@code false} otherwise.
2366     */
2367    boolean isTraceEnabled();
2368
2369    /**
2370     * Checks whether this Logger is enabled for the {@link Level#TRACE TRACE} level.
2371     *
2372     * @param marker The Marker to check
2373     * @return boolean - {@code true} if this Logger is enabled for level TRACE, {@code false} otherwise.
2374     */
2375    boolean isTraceEnabled(Marker marker);
2376
2377    /**
2378     * Checks whether this Logger is enabled for the {@link Level#WARN WARN} Level.
2379     *
2380     * @return boolean - {@code true} if this Logger is enabled for level {@link Level#WARN WARN}, {@code false}
2381     *         otherwise.
2382     */
2383    boolean isWarnEnabled();
2384
2385    /**
2386     * Checks whether this Logger is enabled for the {@link Level#WARN WARN} Level.
2387     *
2388     * @param marker The Marker to check
2389     * @return boolean - {@code true} if this Logger is enabled for level {@link Level#WARN WARN}, {@code false}
2390     *         otherwise.
2391     */
2392    boolean isWarnEnabled(Marker marker);
2393
2394    /**
2395     * Logs a message with the specific Marker at the given level.
2396     *
2397     * @param level the logging level
2398     * @param marker the marker data specific to this log statement
2399     * @param msg the message string to be logged
2400     */
2401    void log(Level level, Marker marker, Message msg);
2402
2403    /**
2404     * Logs a message with the specific Marker at the given level.
2405     *
2406     * @param level the logging level
2407     * @param marker the marker data specific to this log statement
2408     * @param msg the message string to be logged
2409     * @param t A Throwable or null.
2410     */
2411    void log(Level level, Marker marker, Message msg, Throwable t);
2412
2413    /**
2414     * Logs a message which is only to be constructed if the logging level is the specified level with the specified
2415     * Marker. The {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the
2416     * {@code Message}.
2417     *
2418     * @param level the logging level
2419     * @param marker the marker data specific to this log statement
2420     * @param msgSupplier A function, which when called, produces the desired log message.
2421     * @since 2.4
2422     */
2423    void log(Level level, Marker marker, MessageSupplier msgSupplier);
2424
2425    /**
2426     * Logs a message (only to be constructed if the logging level is the specified level) with the specified Marker and
2427     * including the stack log of the {@link Throwable} <code>t</code> passed as parameter. The {@code MessageSupplier}
2428     * may or may not use the {@link MessageFactory} to construct the {@code Message}.
2429     *
2430     * @param level the logging level
2431     * @param marker the marker data specific to this log statement
2432     * @param msgSupplier A function, which when called, produces the desired log message.
2433     * @param t A Throwable or null.
2434     * @since 2.4
2435     */
2436    void log(Level level, Marker marker, MessageSupplier msgSupplier, Throwable t);
2437
2438    /**
2439     * Logs a message CharSequence with the given level.
2440     *
2441     * @param level the logging level
2442     * @param marker the marker data specific to this log statement
2443     * @param message the message CharSequence to log.
2444     */
2445    void log(Level level, Marker marker, CharSequence message);
2446
2447    /**
2448     * Logs a CharSequence at the given level including the stack trace of the {@link Throwable} <code>t</code> passed as
2449     * parameter.
2450     *
2451     * @param level the logging level
2452     * @param marker the marker data specific to this log statement
2453     * @param message the message CharSequence to log.
2454     * @param t the exception to log, including its stack trace.
2455     */
2456    void log(Level level, Marker marker, CharSequence message, Throwable t);
2457
2458    /**
2459     * Logs a message object with the given level.
2460     *
2461     * @param level the logging level
2462     * @param marker the marker data specific to this log statement
2463     * @param message the message object to log.
2464     */
2465    void log(Level level, Marker marker, Object message);
2466
2467    /**
2468     * Logs a message at the given level including the stack trace of the {@link Throwable} <code>t</code> passed as
2469     * parameter.
2470     *
2471     * @param level the logging level
2472     * @param marker the marker data specific to this log statement
2473     * @param message the message to log.
2474     * @param t the exception to log, including its stack trace.
2475     */
2476    void log(Level level, Marker marker, Object message, Throwable t);
2477
2478    /**
2479     * Logs a message object with the given level.
2480     *
2481     * @param level the logging level
2482     * @param marker the marker data specific to this log statement
2483     * @param message the message object to log.
2484     */
2485    void log(Level level, Marker marker, String message);
2486
2487    /**
2488     * Logs a message with parameters at the given level.
2489     *
2490     * @param level the logging level
2491     * @param marker the marker data specific to this log statement
2492     * @param message the message to log; the format depends on the message factory.
2493     * @param params parameters to the message.
2494     * @see #getMessageFactory()
2495     */
2496    void log(Level level, Marker marker, String message, Object... params);
2497
2498    /**
2499     * Logs a message with parameters which are only to be constructed if the logging level is the specified level.
2500     *
2501     * @param level the logging level
2502     * @param marker the marker data specific to this log statement
2503     * @param message the message to log; the format depends on the message factory.
2504     * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
2505     * @since 2.4
2506     */
2507    void log(Level level, Marker marker, String message, Supplier<?>... paramSuppliers);
2508
2509    /**
2510     * Logs a message at the given level including the stack trace of the {@link Throwable} <code>t</code> passed as
2511     * parameter.
2512     *
2513     * @param level the logging level
2514     * @param marker the marker data specific to this log statement
2515     * @param message the message to log.
2516     * @param t the exception to log, including its stack trace.
2517     */
2518    void log(Level level, Marker marker, String message, Throwable t);
2519
2520    /**
2521     * Logs a message (only to be constructed if the logging level is the specified level) with the specified Marker.
2522     *
2523     * @param level the logging level
2524     * @param marker the marker data specific to this log statement
2525     * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
2526     *            message factory.
2527     * @since 2.4
2528     */
2529    void log(Level level, Marker marker, Supplier<?> msgSupplier);
2530
2531    /**
2532     * Logs a message (only to be constructed if the logging level is the specified level) with the specified Marker and
2533     * including the stack log of the {@link Throwable} <code>t</code> passed as parameter.
2534     *
2535     * @param level the logging level
2536     * @param marker the marker data specific to this log statement
2537     * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
2538     *            message factory.
2539     * @param t A Throwable or null.
2540     * @since 2.4
2541     */
2542    void log(Level level, Marker marker, Supplier<?> msgSupplier, Throwable t);
2543
2544    /**
2545     * Logs a message with the specific Marker at the given level.
2546     *
2547     * @param level the logging level
2548     * @param msg the message string to be logged
2549     */
2550    void log(Level level, Message msg);
2551
2552    /**
2553     * Logs a message with the specific Marker at the given level.
2554     *
2555     * @param level the logging level
2556     * @param msg the message string to be logged
2557     * @param t A Throwable or null.
2558     */
2559    void log(Level level, Message msg, Throwable t);
2560
2561    /**
2562     * Logs a message which is only to be constructed if the logging level is the specified level. The
2563     * {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
2564     *
2565     * @param level the logging level
2566     * @param msgSupplier A function, which when called, produces the desired log message.
2567     * @since 2.4
2568     */
2569    void log(Level level, MessageSupplier msgSupplier);
2570
2571    /**
2572     * Logs a message (only to be constructed if the logging level is the specified level) including the stack log of
2573     * the {@link Throwable} <code>t</code> passed as parameter. The {@code MessageSupplier} may or may not use the
2574     * {@link MessageFactory} to construct the {@code Message}.
2575     *
2576     * @param level the logging level
2577     * @param msgSupplier A function, which when called, produces the desired log message.
2578     * @param t the exception to log, including its stack log.
2579     * @since 2.4
2580     */
2581    void log(Level level, MessageSupplier msgSupplier, Throwable t);
2582
2583    /**
2584     * Logs a message CharSequence with the given level.
2585     *
2586     * @param level the logging level
2587     * @param message the message CharSequence to log.
2588     */
2589    void log(Level level, CharSequence message);
2590
2591    /**
2592     * Logs a CharSequence at the given level including the stack trace of the {@link Throwable} <code>t</code> passed as
2593     * parameter.
2594     *
2595     * @param level the logging level
2596     * @param message the message CharSequence to log.
2597     * @param t the exception to log, including its stack trace.
2598     */
2599    void log(Level level, CharSequence message, Throwable t);
2600
2601    /**
2602     * Logs a message object with the given level.
2603     *
2604     * @param level the logging level
2605     * @param message the message object to log.
2606     */
2607    void log(Level level, Object message);
2608
2609    /**
2610     * Logs a message at the given level including the stack trace of the {@link Throwable} <code>t</code> passed as
2611     * parameter.
2612     *
2613     * @param level the logging level
2614     * @param message the message to log.
2615     * @param t the exception to log, including its stack trace.
2616     */
2617    void log(Level level, Object message, Throwable t);
2618
2619    /**
2620     * Logs a message object with the given level.
2621     *
2622     * @param level the logging level
2623     * @param message the message string to log.
2624     */
2625    void log(Level level, String message);
2626
2627    /**
2628     * Logs a message with parameters at the given level.
2629     *
2630     * @param level the logging level
2631     * @param message the message to log; the format depends on the message factory.
2632     * @param params parameters to the message.
2633     * @see #getMessageFactory()
2634     */
2635    void log(Level level, String message, Object... params);
2636
2637    /**
2638     * Logs a message with parameters which are only to be constructed if the logging level is the specified level.
2639     *
2640     * @param level the logging level
2641     * @param message the message to log; the format depends on the message factory.
2642     * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
2643     * @since 2.4
2644     */
2645    void log(Level level, String message, Supplier<?>... paramSuppliers);
2646
2647    /**
2648     * Logs a message at the given level including the stack trace of the {@link Throwable} <code>t</code> passed as
2649     * parameter.
2650     *
2651     * @param level the logging level
2652     * @param message the message to log.
2653     * @param t the exception to log, including its stack trace.
2654     */
2655    void log(Level level, String message, Throwable t);
2656
2657    /**
2658     * Logs a message which is only to be constructed if the logging level is the specified level.
2659     *
2660     * @param level the logging level
2661     * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
2662     *            message factory.
2663     * @since 2.4
2664     */
2665    void log(Level level, Supplier<?> msgSupplier);
2666
2667    /**
2668     * Logs a message (only to be constructed if the logging level is the specified level) including the stack log of
2669     * the {@link Throwable} <code>t</code> passed as parameter.
2670     *
2671     * @param level the logging level
2672     * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
2673     *            message factory.
2674     * @param t the exception to log, including its stack log.
2675     * @since 2.4
2676     */
2677    void log(Level level, Supplier<?> msgSupplier, Throwable t);
2678
2679    /**
2680     * Logs a message with parameters at the specified level.
2681     *
2682     * @param level the logging level
2683     * @param marker the marker data specific to this log statement
2684     * @param message the message to log; the format depends on the message factory.
2685     * @param p0 parameter to the message.
2686     */
2687    void log(Level level, Marker marker, String message, Object p0);
2688
2689    /**
2690     * Logs a message with parameters at the specified level.
2691     *
2692     * @param level the logging level
2693     * @param marker the marker data specific to this log statement
2694     * @param message the message to log; the format depends on the message factory.
2695     * @param p0 parameter to the message.
2696     * @param p1 parameter to the message.
2697     */
2698    void log(Level level, Marker marker, String message, Object p0, Object p1);
2699
2700    /**
2701     * Logs a message with parameters at the specified level.
2702     *
2703     * @param level the logging level
2704     * @param marker the marker data specific to this log statement
2705     * @param message the message to log; the format depends on the message factory.
2706     * @param p0 parameter to the message.
2707     * @param p1 parameter to the message.
2708     * @param p2 parameter to the message.
2709     */
2710    void log(Level level, Marker marker, String message, Object p0, Object p1, Object p2);
2711
2712    /**
2713     * Logs a message with parameters at the specified level.
2714     *
2715     * @param level the logging level
2716     * @param marker the marker data specific to this log statement
2717     * @param message the message to log; the format depends on the message factory.
2718     * @param p0 parameter to the message.
2719     * @param p1 parameter to the message.
2720     * @param p2 parameter to the message.
2721     * @param p3 parameter to the message.
2722     */
2723    void log(Level level, Marker marker, String message, Object p0, Object p1, Object p2, Object p3);
2724
2725    /**
2726     * Logs a message with parameters at the specified level.
2727     *
2728     * @param level the logging level
2729     * @param marker the marker data specific to this log statement
2730     * @param message the message to log; the format depends on the message factory.
2731     * @param p0 parameter to the message.
2732     * @param p1 parameter to the message.
2733     * @param p2 parameter to the message.
2734     * @param p3 parameter to the message.
2735     * @param p4 parameter to the message.
2736     */
2737    void log(Level level, Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4);
2738
2739    /**
2740     * Logs a message with parameters at the specified level.
2741     *
2742     * @param level the logging level
2743     * @param marker the marker data specific to this log statement
2744     * @param message the message to log; the format depends on the message factory.
2745     * @param p0 parameter to the message.
2746     * @param p1 parameter to the message.
2747     * @param p2 parameter to the message.
2748     * @param p3 parameter to the message.
2749     * @param p4 parameter to the message.
2750     * @param p5 parameter to the message.
2751     */
2752    void log(Level level, Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5);
2753
2754    /**
2755     * Logs a message with parameters at the specified level.
2756     *
2757     * @param level the logging level
2758     * @param marker the marker data specific to this log statement
2759     * @param message the message to log; the format depends on the message factory.
2760     * @param p0 parameter to the message.
2761     * @param p1 parameter to the message.
2762     * @param p2 parameter to the message.
2763     * @param p3 parameter to the message.
2764     * @param p4 parameter to the message.
2765     * @param p5 parameter to the message.
2766     * @param p6 parameter to the message.
2767     */
2768    void log(Level level, Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5,
2769            Object p6);
2770
2771    /**
2772     * Logs a message with parameters at the specified level.
2773     *
2774     * @param level the logging level
2775     * @param marker the marker data specific to this log statement
2776     * @param message the message to log; the format depends on the message factory.
2777     * @param p0 parameter to the message.
2778     * @param p1 parameter to the message.
2779     * @param p2 parameter to the message.
2780     * @param p3 parameter to the message.
2781     * @param p4 parameter to the message.
2782     * @param p5 parameter to the message.
2783     * @param p6 parameter to the message.
2784     * @param p7 parameter to the message.
2785     */
2786    void log(Level level, Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6,
2787            Object p7);
2788
2789    /**
2790     * Logs a message with parameters at the specified level.
2791     *
2792     * @param level the logging level
2793     * @param marker the marker data specific to this log statement
2794     * @param message the message to log; the format depends on the message factory.
2795     * @param p0 parameter to the message.
2796     * @param p1 parameter to the message.
2797     * @param p2 parameter to the message.
2798     * @param p3 parameter to the message.
2799     * @param p4 parameter to the message.
2800     * @param p5 parameter to the message.
2801     * @param p6 parameter to the message.
2802     * @param p7 parameter to the message.
2803     * @param p8 parameter to the message.
2804     */
2805    void log(Level level, Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6,
2806            Object p7, Object p8);
2807
2808    /**
2809     * Logs a message with parameters at the specified level.
2810     *
2811     * @param level the logging level
2812     * @param marker the marker data specific to this log statement
2813     * @param message the message to log; the format depends on the message factory.
2814     * @param p0 parameter to the message.
2815     * @param p1 parameter to the message.
2816     * @param p2 parameter to the message.
2817     * @param p3 parameter to the message.
2818     * @param p4 parameter to the message.
2819     * @param p5 parameter to the message.
2820     * @param p6 parameter to the message.
2821     * @param p7 parameter to the message.
2822     * @param p8 parameter to the message.
2823     * @param p9 parameter to the message.
2824     */
2825    void log(Level level, Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6,
2826            Object p7, Object p8, Object p9);
2827
2828    /**
2829     * Logs a message with parameters at the specified level.
2830     *
2831     * @param level the logging level
2832     * @param message the message to log; the format depends on the message factory.
2833     * @param p0 parameter to the message.
2834     */
2835    void log(Level level, String message, Object p0);
2836
2837    /**
2838     * Logs a message with parameters at the specified level.
2839     *
2840     * @param level the logging level
2841     * @param message the message to log; the format depends on the message factory.
2842     * @param p0 parameter to the message.
2843     * @param p1 parameter to the message.
2844     */
2845    void log(Level level, String message, Object p0, Object p1);
2846
2847    /**
2848     * Logs a message with parameters at the specified level.
2849     *
2850     * @param level the logging level
2851     * @param message the message to log; the format depends on the message factory.
2852     * @param p0 parameter to the message.
2853     * @param p1 parameter to the message.
2854     * @param p2 parameter to the message.
2855     */
2856    void log(Level level, String message, Object p0, Object p1, Object p2);
2857
2858    /**
2859     * Logs a message with parameters at the specified level.
2860     *
2861     * @param level the logging level
2862     * @param message the message to log; the format depends on the message factory.
2863     * @param p0 parameter to the message.
2864     * @param p1 parameter to the message.
2865     * @param p2 parameter to the message.
2866     * @param p3 parameter to the message.
2867     */
2868    void log(Level level, String message, Object p0, Object p1, Object p2, Object p3);
2869
2870    /**
2871     * Logs a message with parameters at the specified level.
2872     *
2873     * @param level the logging level
2874     * @param message the message to log; the format depends on the message factory.
2875     * @param p0 parameter to the message.
2876     * @param p1 parameter to the message.
2877     * @param p2 parameter to the message.
2878     * @param p3 parameter to the message.
2879     * @param p4 parameter to the message.
2880     */
2881    void log(Level level, String message, Object p0, Object p1, Object p2, Object p3, Object p4);
2882
2883    /**
2884     * Logs a message with parameters at the specified level.
2885     *
2886     * @param level the logging level
2887     * @param message the message to log; the format depends on the message factory.
2888     * @param p0 parameter to the message.
2889     * @param p1 parameter to the message.
2890     * @param p2 parameter to the message.
2891     * @param p3 parameter to the message.
2892     * @param p4 parameter to the message.
2893     * @param p5 parameter to the message.
2894     */
2895    void log(Level level, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5);
2896
2897    /**
2898     * Logs a message with parameters at the specified level.
2899     *
2900     * @param level the logging level
2901     * @param message the message to log; the format depends on the message factory.
2902     * @param p0 parameter to the message.
2903     * @param p1 parameter to the message.
2904     * @param p2 parameter to the message.
2905     * @param p3 parameter to the message.
2906     * @param p4 parameter to the message.
2907     * @param p5 parameter to the message.
2908     * @param p6 parameter to the message.
2909     */
2910    void log(Level level, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6);
2911
2912    /**
2913     * Logs a message with parameters at the specified level.
2914     *
2915     * @param level the logging level
2916     * @param message the message to log; the format depends on the message factory.
2917     * @param p0 parameter to the message.
2918     * @param p1 parameter to the message.
2919     * @param p2 parameter to the message.
2920     * @param p3 parameter to the message.
2921     * @param p4 parameter to the message.
2922     * @param p5 parameter to the message.
2923     * @param p6 parameter to the message.
2924     * @param p7 parameter to the message.
2925     */
2926    void log(Level level, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7);
2927
2928    /**
2929     * Logs a message with parameters at the specified level.
2930     *
2931     * @param level the logging level
2932     * @param message the message to log; the format depends on the message factory.
2933     * @param p0 parameter to the message.
2934     * @param p1 parameter to the message.
2935     * @param p2 parameter to the message.
2936     * @param p3 parameter to the message.
2937     * @param p4 parameter to the message.
2938     * @param p5 parameter to the message.
2939     * @param p6 parameter to the message.
2940     * @param p7 parameter to the message.
2941     * @param p8 parameter to the message.
2942     */
2943    void log(Level level, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7,
2944            Object p8);
2945
2946    /**
2947     * Logs a message with parameters at the specified level.
2948     *
2949     * @param level the logging level
2950     * @param message the message to log; the format depends on the message factory.
2951     * @param p0 parameter to the message.
2952     * @param p1 parameter to the message.
2953     * @param p2 parameter to the message.
2954     * @param p3 parameter to the message.
2955     * @param p4 parameter to the message.
2956     * @param p5 parameter to the message.
2957     * @param p6 parameter to the message.
2958     * @param p7 parameter to the message.
2959     * @param p8 parameter to the message.
2960     * @param p9 parameter to the message.
2961     */
2962    void log(Level level, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7,
2963            Object p8, Object p9);
2964
2965    /**
2966     * Logs a formatted message using the specified format string and arguments.
2967     *
2968     * @param level The logging Level.
2969     * @param marker the marker data specific to this log statement.
2970     * @param format The format String.
2971     * @param params Arguments specified by the format.
2972     */
2973    void printf(Level level, Marker marker, String format, Object... params);
2974
2975    /**
2976     * Logs a formatted message using the specified format string and arguments.
2977     *
2978     * @param level The logging Level.
2979     * @param format The format String.
2980     * @param params Arguments specified by the format.
2981     */
2982    void printf(Level level, String format, Object... params);
2983
2984    /**
2985     * Logs an exception or error to be thrown. This may be coded as:
2986     *
2987     * <pre>
2988     * throw logger.throwing(Level.DEBUG, myException);
2989     * </pre>
2990     *
2991     * @param <T> the Throwable type.
2992     * @param level The logging Level.
2993     * @param t The Throwable.
2994     * @return the Throwable.
2995     */
2996    <T extends Throwable> T throwing(Level level, T t);
2997
2998    /**
2999     * Logs an exception or error to be thrown. This may be coded as:
3000     *
3001     * <pre>
3002     * throw logger.throwing(myException);
3003     * </pre>
3004     *
3005     * @param <T> the Throwable type.
3006     * @param t The Throwable.
3007     * @return the Throwable.
3008     */
3009    <T extends Throwable> T throwing(T t);
3010
3011    /**
3012     * Logs a message with the specific Marker at the {@link Level#TRACE TRACE} level.
3013     *
3014     * @param marker the marker data specific to this log statement
3015     * @param msg the message string to be logged
3016     */
3017    void trace(Marker marker, Message msg);
3018
3019    /**
3020     * Logs a message with the specific Marker at the {@link Level#TRACE TRACE} level.
3021     *
3022     * @param marker the marker data specific to this log statement
3023     * @param msg the message string to be logged
3024     * @param t A Throwable or null.
3025     */
3026    void trace(Marker marker, Message msg, Throwable t);
3027
3028    /**
3029     * Logs a message which is only to be constructed if the logging level is the {@link Level#TRACE TRACE} level with
3030     * the specified Marker. The {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the
3031     * {@code Message}.
3032     *
3033     * @param marker the marker data specific to this log statement
3034     * @param msgSupplier A function, which when called, produces the desired log message.
3035     * @since 2.4
3036     */
3037    void trace(Marker marker, MessageSupplier msgSupplier);
3038
3039    /**
3040     * Logs a message (only to be constructed if the logging level is the {@link Level#TRACE TRACE} level) with the
3041     * specified Marker and including the stack trace of the {@link Throwable} <code>t</code> passed as parameter. The
3042     * {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
3043     *
3044     * @param marker the marker data specific to this log statement
3045     * @param msgSupplier A function, which when called, produces the desired log message.
3046     * @param t A Throwable or null.
3047     * @since 2.4
3048     */
3049    void trace(Marker marker, MessageSupplier msgSupplier, Throwable t);
3050
3051    /**
3052     * Logs a message CharSequence with the {@link Level#TRACE TRACE} level.
3053     *
3054     * @param marker the marker data specific to this log statement
3055     * @param message the message CharSequence to log.
3056     */
3057    void trace(Marker marker, CharSequence message);
3058
3059    /**
3060     * Logs a CharSequence at the {@link Level#TRACE TRACE} level including the stack trace of the {@link Throwable}
3061     * <code>t</code> passed as parameter.
3062     *
3063     * @param marker the marker data specific to this log statement
3064     * @param message the message CharSequence to log.
3065     * @param t the exception to log, including its stack trace.
3066     * @see #debug(String)
3067     */
3068    void trace(Marker marker, CharSequence message, Throwable t);
3069
3070    /**
3071     * Logs a message object with the {@link Level#TRACE TRACE} level.
3072     *
3073     * @param marker the marker data specific to this log statement
3074     * @param message the message object to log.
3075     */
3076    void trace(Marker marker, Object message);
3077
3078    /**
3079     * Logs a message at the {@link Level#TRACE TRACE} level including the stack trace of the {@link Throwable}
3080     * <code>t</code> passed as parameter.
3081     *
3082     * @param marker the marker data specific to this log statement
3083     * @param message the message object to log.
3084     * @param t the exception to log, including its stack trace.
3085     * @see #debug(String)
3086     */
3087    void trace(Marker marker, Object message, Throwable t);
3088
3089    /**
3090     * Logs a message object with the {@link Level#TRACE TRACE} level.
3091     *
3092     * @param marker the marker data specific to this log statement
3093     * @param message the message string to log.
3094     */
3095    void trace(Marker marker, String message);
3096
3097    /**
3098     * Logs a message with parameters at the {@link Level#TRACE TRACE} level.
3099     *
3100     * @param marker the marker data specific to this log statement
3101     * @param message the message to log; the format depends on the message factory.
3102     * @param params parameters to the message.
3103     * @see #getMessageFactory()
3104     */
3105    void trace(Marker marker, String message, Object... params);
3106
3107    /**
3108     * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#TRACE
3109     * TRACE} level.
3110     *
3111     * @param marker the marker data specific to this log statement
3112     * @param message the message to log; the format depends on the message factory.
3113     * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
3114     * @since 2.4
3115     */
3116    void trace(Marker marker, String message, Supplier<?>... paramSuppliers);
3117
3118    /**
3119     * Logs a message at the {@link Level#TRACE TRACE} level including the stack trace of the {@link Throwable}
3120     * <code>t</code> passed as parameter.
3121     *
3122     * @param marker the marker data specific to this log statement
3123     * @param message the message object to log.
3124     * @param t the exception to log, including its stack trace.
3125     * @see #debug(String)
3126     */
3127    void trace(Marker marker, String message, Throwable t);
3128
3129    /**
3130     * Logs a message which is only to be constructed if the logging level is the {@link Level#TRACE TRACE} level with
3131     * the specified Marker.
3132     *
3133     * @param marker the marker data specific to this log statement
3134     * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
3135     *            message factory.
3136     * @since 2.4
3137     */
3138    void trace(Marker marker, Supplier<?> msgSupplier);
3139
3140    /**
3141     * Logs a message (only to be constructed if the logging level is the {@link Level#TRACE TRACE} level) with the
3142     * specified Marker and including the stack trace of the {@link Throwable} <code>t</code> passed as parameter.
3143     *
3144     * @param marker the marker data specific to this log statement
3145     * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
3146     *            message factory.
3147     * @param t A Throwable or null.
3148     * @since 2.4
3149     */
3150    void trace(Marker marker, Supplier<?> msgSupplier, Throwable t);
3151
3152    /**
3153     * Logs a message with the specific Marker at the {@link Level#TRACE TRACE} level.
3154     *
3155     * @param msg the message string to be logged
3156     */
3157    void trace(Message msg);
3158
3159    /**
3160     * Logs a message with the specific Marker at the {@link Level#TRACE TRACE} level.
3161     *
3162     * @param msg the message string to be logged
3163     * @param t A Throwable or null.
3164     */
3165    void trace(Message msg, Throwable t);
3166
3167    /**
3168     * Logs a message which is only to be constructed if the logging level is the {@link Level#TRACE TRACE} level. The
3169     * {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
3170     *
3171     * @param msgSupplier A function, which when called, produces the desired log message.
3172     * @since 2.4
3173     */
3174    void trace(MessageSupplier msgSupplier);
3175
3176    /**
3177     * Logs a message (only to be constructed if the logging level is the {@link Level#TRACE TRACE} level) including the
3178     * stack trace of the {@link Throwable} <code>t</code> passed as parameter. The {@code MessageSupplier} may or may
3179     * not use the {@link MessageFactory} to construct the {@code Message}.
3180     *
3181     * @param msgSupplier A function, which when called, produces the desired log message.
3182     * @param t the exception to log, including its stack trace.
3183     * @since 2.4
3184     */
3185    void trace(MessageSupplier msgSupplier, Throwable t);
3186
3187    /**
3188     * Logs a message CharSequence with the {@link Level#TRACE TRACE} level.
3189     *
3190     * @param message the message CharSequence to log.
3191     */
3192    void trace(CharSequence message);
3193
3194    /**
3195     * Logs a CharSequence at the {@link Level#TRACE TRACE} level including the stack trace of the {@link Throwable}
3196     * <code>t</code> passed as parameter.
3197     *
3198     * @param message the message CharSequence to log.
3199     * @param t the exception to log, including its stack trace.
3200     * @see #debug(String)
3201     */
3202    void trace(CharSequence message, Throwable t);
3203
3204    /**
3205     * Logs a message object with the {@link Level#TRACE TRACE} level.
3206     *
3207     * @param message the message object to log.
3208     */
3209    void trace(Object message);
3210
3211    /**
3212     * Logs a message at the {@link Level#TRACE TRACE} level including the stack trace of the {@link Throwable}
3213     * <code>t</code> passed as parameter.
3214     *
3215     * @param message the message object to log.
3216     * @param t the exception to log, including its stack trace.
3217     * @see #debug(String)
3218     */
3219    void trace(Object message, Throwable t);
3220
3221    /**
3222     * Logs a message object with the {@link Level#TRACE TRACE} level.
3223     *
3224     * @param message the message string to log.
3225     */
3226    void trace(String message);
3227
3228    /**
3229     * Logs a message with parameters at the {@link Level#TRACE TRACE} level.
3230     *
3231     * @param message the message to log; the format depends on the message factory.
3232     * @param params parameters to the message.
3233     * @see #getMessageFactory()
3234     */
3235    void trace(String message, Object... params);
3236
3237    /**
3238     * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#TRACE
3239     * TRACE} level.
3240     *
3241     * @param message the message to log; the format depends on the message factory.
3242     * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
3243     * @since 2.4
3244     */
3245    void trace(String message, Supplier<?>... paramSuppliers);
3246
3247    /**
3248     * Logs a message at the {@link Level#TRACE TRACE} level including the stack trace of the {@link Throwable}
3249     * <code>t</code> passed as parameter.
3250     *
3251     * @param message the message object to log.
3252     * @param t the exception to log, including its stack trace.
3253     * @see #debug(String)
3254     */
3255    void trace(String message, Throwable t);
3256
3257    /**
3258     * Logs a message which is only to be constructed if the logging level is the {@link Level#TRACE TRACE} level.
3259     *
3260     * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
3261     *            message factory.
3262     * @since 2.4
3263     */
3264    void trace(Supplier<?> msgSupplier);
3265
3266    /**
3267     * Logs a message (only to be constructed if the logging level is the {@link Level#TRACE TRACE} level) including the
3268     * stack trace of the {@link Throwable} <code>t</code> passed as parameter.
3269     *
3270     * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
3271     *            message factory.
3272     * @param t the exception to log, including its stack trace.
3273     * @since 2.4
3274     */
3275    void trace(Supplier<?> msgSupplier, Throwable t);
3276
3277    /**
3278     * Logs a message with parameters at trace level.
3279     *
3280     * @param marker the marker data specific to this log statement
3281     * @param message the message to log; the format depends on the message factory.
3282     * @param p0 parameter to the message.
3283     */
3284    void trace(Marker marker, String message, Object p0);
3285
3286    /**
3287     * Logs a message with parameters at trace level.
3288     *
3289     * @param marker the marker data specific to this log statement
3290     * @param message the message to log; the format depends on the message factory.
3291     * @param p0 parameter to the message.
3292     * @param p1 parameter to the message.
3293     */
3294    void trace(Marker marker, String message, Object p0, Object p1);
3295
3296    /**
3297     * Logs a message with parameters at trace level.
3298     *
3299     * @param marker the marker data specific to this log statement
3300     * @param message the message to log; the format depends on the message factory.
3301     * @param p0 parameter to the message.
3302     * @param p1 parameter to the message.
3303     * @param p2 parameter to the message.
3304     */
3305    void trace(Marker marker, String message, Object p0, Object p1, Object p2);
3306
3307    /**
3308     * Logs a message with parameters at trace level.
3309     *
3310     * @param marker the marker data specific to this log statement
3311     * @param message the message to log; the format depends on the message factory.
3312     * @param p0 parameter to the message.
3313     * @param p1 parameter to the message.
3314     * @param p2 parameter to the message.
3315     * @param p3 parameter to the message.
3316     */
3317    void trace(Marker marker, String message, Object p0, Object p1, Object p2, Object p3);
3318
3319    /**
3320     * Logs a message with parameters at trace level.
3321     *
3322     * @param marker the marker data specific to this log statement
3323     * @param message the message to log; the format depends on the message factory.
3324     * @param p0 parameter to the message.
3325     * @param p1 parameter to the message.
3326     * @param p2 parameter to the message.
3327     * @param p3 parameter to the message.
3328     * @param p4 parameter to the message.
3329     */
3330    void trace(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4);
3331
3332    /**
3333     * Logs a message with parameters at trace level.
3334     *
3335     * @param marker the marker data specific to this log statement
3336     * @param message the message to log; the format depends on the message factory.
3337     * @param p0 parameter to the message.
3338     * @param p1 parameter to the message.
3339     * @param p2 parameter to the message.
3340     * @param p3 parameter to the message.
3341     * @param p4 parameter to the message.
3342     * @param p5 parameter to the message.
3343     */
3344    void trace(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5);
3345
3346    /**
3347     * Logs a message with parameters at trace level.
3348     *
3349     * @param marker the marker data specific to this log statement
3350     * @param message the message to log; the format depends on the message factory.
3351     * @param p0 parameter to the message.
3352     * @param p1 parameter to the message.
3353     * @param p2 parameter to the message.
3354     * @param p3 parameter to the message.
3355     * @param p4 parameter to the message.
3356     * @param p5 parameter to the message.
3357     * @param p6 parameter to the message.
3358     */
3359    void trace(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5,
3360            Object p6);
3361
3362    /**
3363     * Logs a message with parameters at trace level.
3364     *
3365     * @param marker the marker data specific to this log statement
3366     * @param message the message to log; the format depends on the message factory.
3367     * @param p0 parameter to the message.
3368     * @param p1 parameter to the message.
3369     * @param p2 parameter to the message.
3370     * @param p3 parameter to the message.
3371     * @param p4 parameter to the message.
3372     * @param p5 parameter to the message.
3373     * @param p6 parameter to the message.
3374     * @param p7 parameter to the message.
3375     */
3376    void trace(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6,
3377            Object p7);
3378
3379    /**
3380     * Logs a message with parameters at trace level.
3381     *
3382     * @param marker the marker data specific to this log statement
3383     * @param message the message to log; the format depends on the message factory.
3384     * @param p0 parameter to the message.
3385     * @param p1 parameter to the message.
3386     * @param p2 parameter to the message.
3387     * @param p3 parameter to the message.
3388     * @param p4 parameter to the message.
3389     * @param p5 parameter to the message.
3390     * @param p6 parameter to the message.
3391     * @param p7 parameter to the message.
3392     * @param p8 parameter to the message.
3393     */
3394    void trace(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6,
3395            Object p7, Object p8);
3396
3397    /**
3398     * Logs a message with parameters at trace level.
3399     *
3400     * @param marker the marker data specific to this log statement
3401     * @param message the message to log; the format depends on the message factory.
3402     * @param p0 parameter to the message.
3403     * @param p1 parameter to the message.
3404     * @param p2 parameter to the message.
3405     * @param p3 parameter to the message.
3406     * @param p4 parameter to the message.
3407     * @param p5 parameter to the message.
3408     * @param p6 parameter to the message.
3409     * @param p7 parameter to the message.
3410     * @param p8 parameter to the message.
3411     * @param p9 parameter to the message.
3412     */
3413    void trace(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6,
3414            Object p7, Object p8, Object p9);
3415
3416    /**
3417     * Logs a message with parameters at trace level.
3418     *
3419     * @param message the message to log; the format depends on the message factory.
3420     * @param p0 parameter to the message.
3421     */
3422    void trace(String message, Object p0);
3423
3424    /**
3425     * Logs a message with parameters at trace level.
3426     *
3427     * @param message the message to log; the format depends on the message factory.
3428     * @param p0 parameter to the message.
3429     * @param p1 parameter to the message.
3430     */
3431    void trace(String message, Object p0, Object p1);
3432
3433    /**
3434     * Logs a message with parameters at trace level.
3435     *
3436     * @param message the message to log; the format depends on the message factory.
3437     * @param p0 parameter to the message.
3438     * @param p1 parameter to the message.
3439     * @param p2 parameter to the message.
3440     */
3441    void trace(String message, Object p0, Object p1, Object p2);
3442
3443    /**
3444     * Logs a message with parameters at trace level.
3445     *
3446     * @param message the message to log; the format depends on the message factory.
3447     * @param p0 parameter to the message.
3448     * @param p1 parameter to the message.
3449     * @param p2 parameter to the message.
3450     * @param p3 parameter to the message.
3451     */
3452    void trace(String message, Object p0, Object p1, Object p2, Object p3);
3453
3454    /**
3455     * Logs a message with parameters at trace level.
3456     *
3457     * @param message the message to log; the format depends on the message factory.
3458     * @param p0 parameter to the message.
3459     * @param p1 parameter to the message.
3460     * @param p2 parameter to the message.
3461     * @param p3 parameter to the message.
3462     * @param p4 parameter to the message.
3463     */
3464    void trace(String message, Object p0, Object p1, Object p2, Object p3, Object p4);
3465
3466    /**
3467     * Logs a message with parameters at trace level.
3468     *
3469     * @param message the message to log; the format depends on the message factory.
3470     * @param p0 parameter to the message.
3471     * @param p1 parameter to the message.
3472     * @param p2 parameter to the message.
3473     * @param p3 parameter to the message.
3474     * @param p4 parameter to the message.
3475     * @param p5 parameter to the message.
3476     */
3477    void trace(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5);
3478
3479    /**
3480     * Logs a message with parameters at trace level.
3481     *
3482     * @param message the message to log; the format depends on the message factory.
3483     * @param p0 parameter to the message.
3484     * @param p1 parameter to the message.
3485     * @param p2 parameter to the message.
3486     * @param p3 parameter to the message.
3487     * @param p4 parameter to the message.
3488     * @param p5 parameter to the message.
3489     * @param p6 parameter to the message.
3490     */
3491    void trace(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6);
3492
3493    /**
3494     * Logs a message with parameters at trace level.
3495     *
3496     * @param message the message to log; the format depends on the message factory.
3497     * @param p0 parameter to the message.
3498     * @param p1 parameter to the message.
3499     * @param p2 parameter to the message.
3500     * @param p3 parameter to the message.
3501     * @param p4 parameter to the message.
3502     * @param p5 parameter to the message.
3503     * @param p6 parameter to the message.
3504     * @param p7 parameter to the message.
3505     */
3506    void trace(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7);
3507
3508    /**
3509     * Logs a message with parameters at trace level.
3510     *
3511     * @param message the message to log; the format depends on the message factory.
3512     * @param p0 parameter to the message.
3513     * @param p1 parameter to the message.
3514     * @param p2 parameter to the message.
3515     * @param p3 parameter to the message.
3516     * @param p4 parameter to the message.
3517     * @param p5 parameter to the message.
3518     * @param p6 parameter to the message.
3519     * @param p7 parameter to the message.
3520     * @param p8 parameter to the message.
3521     */
3522    void trace(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7,
3523            Object p8);
3524
3525    /**
3526     * Logs a message with parameters at trace level.
3527     *
3528     * @param message the message to log; the format depends on the message factory.
3529     * @param p0 parameter to the message.
3530     * @param p1 parameter to the message.
3531     * @param p2 parameter to the message.
3532     * @param p3 parameter to the message.
3533     * @param p4 parameter to the message.
3534     * @param p5 parameter to the message.
3535     * @param p6 parameter to the message.
3536     * @param p7 parameter to the message.
3537     * @param p8 parameter to the message.
3538     * @param p9 parameter to the message.
3539     */
3540    void trace(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7,
3541            Object p8, Object p9);
3542
3543    /**
3544     * Logs entry to a method. Used when the method in question has no parameters or when the parameters should not be
3545     * logged.
3546     *
3547     * @return built message
3548     * @since 2.6
3549     */
3550    EntryMessage traceEntry();
3551
3552    /**
3553     * Logs entry to a method along with its parameters. For example,
3554     *
3555     * <pre>
3556     * public void doSomething(String foo, int bar) {
3557     *     LOGGER.traceEntry("Parameters: {} and {}", foo, bar);
3558     *     // do something
3559     * }
3560     * </pre>
3561     * or:
3562     * <pre>
3563     * public int doSomething(String foo, int bar) {
3564     *     Message m = LOGGER.traceEntry("doSomething(foo={}, bar={})", foo, bar);
3565     *     // do something
3566     *     return traceExit(m, value);
3567     * }
3568     * </pre>
3569     *
3570     * @param format The format String for the parameters.
3571     * @param params The parameters to the method.
3572     * @return The built Message
3573     *
3574     * @since 2.6
3575     */
3576    EntryMessage traceEntry(String format, Object... params);
3577
3578    /**
3579     * Logs entry to a method along with its parameters. For example,
3580     *
3581     * <pre>
3582     * public void doSomething(Request foo) {
3583     *     LOGGER.traceEntry(()->gson.toJson(foo));
3584     *     // do something
3585     * }
3586     * </pre>
3587     *
3588     * @param paramSuppliers The Suppliers for the parameters to the method.
3589     * @return built message
3590     *
3591     * @since 2.6
3592     */
3593    EntryMessage traceEntry(Supplier<?>... paramSuppliers);
3594
3595    /**
3596     * Logs entry to a method along with its parameters. For example,
3597     *
3598     * <pre>
3599     * public void doSomething(String foo, int bar) {
3600     *     LOGGER.traceEntry("Parameters: {} and {}", ()->gson.toJson(foo), ()-> bar);
3601     *     // do something
3602     * }
3603     * </pre>
3604     *
3605     * @param format The format String for the parameters.
3606     * @param paramSuppliers The Suppliers for the parameters to the method.
3607     * @return built message
3608     *
3609     * @since 2.6
3610     */
3611    EntryMessage traceEntry(String format, Supplier<?>... paramSuppliers);
3612
3613    /**
3614     * Logs entry to a method using a Message to describe the parameters.
3615     * <pre>
3616     * public void doSomething(Request foo) {
3617     *     LOGGER.traceEntry(new JsonMessage(foo));
3618     *     // do something
3619     * }
3620     * </pre>
3621     * <p>
3622     * Avoid passing a {@code ReusableMessage} to this method (therefore, also avoid passing messages created by
3623     * calling {@code logger.getMessageFactory().newMessage("some message")}): Log4j will replace such messages with
3624     * an immutable message to prevent situations where the reused message instance is modified by subsequent calls to
3625     * the logger before the returned {@code EntryMessage} is fully processed.
3626     * </p>
3627     *
3628     * @param message The message. Avoid specifying a ReusableMessage, use immutable messages instead.
3629     * @return the built message
3630     *
3631     * @since 2.6
3632     * @see org.apache.logging.log4j.message.ReusableMessage
3633     */
3634    EntryMessage traceEntry(Message message);
3635
3636    /**
3637     * Logs exit from a method. Used for methods that do not return anything.
3638     *
3639     * @since 2.6
3640     */
3641    void traceExit();
3642
3643    /**
3644     * Logs exiting from a method with the result. This may be coded as:
3645     *
3646     * <pre>
3647     * return LOGGER.traceExit(myResult);
3648     * </pre>
3649     *
3650     * @param <R> The type of the parameter and object being returned.
3651     * @param result The result being returned from the method call.
3652     * @return the result.
3653     *
3654     * @since 2.6
3655     */
3656    <R> R traceExit(R result);
3657
3658    /**
3659     * Logs exiting from a method with the result. This may be coded as:
3660     *
3661     * <pre>
3662     * return LOGGER.traceExit("Result: {}", myResult);
3663     * </pre>
3664     *
3665     * @param <R> The type of the parameter and object being returned.
3666     * @param format The format String for the result.
3667     * @param result The result being returned from the method call.
3668     * @return the result.
3669     *
3670     * @since 2.6
3671     */
3672    <R> R traceExit(String format, R result);
3673
3674    /**
3675     * Logs exiting from a method with no result. Allows custom formatting of the result. This may be coded as:
3676     *
3677     * <pre>
3678     * public long doSomething(int a, int b) {
3679     *    EntryMessage m = traceEntry("doSomething(a={}, b={})", a, b);
3680     *    // ...
3681     *    return LOGGER.traceExit(m);
3682     * }
3683     * </pre>
3684     * @param message The Message containing the formatted result.
3685     *
3686     * @since 2.6
3687     */
3688    void traceExit(EntryMessage message);
3689
3690    /**
3691     * Logs exiting from a method with the result. Allows custom formatting of the result. This may be coded as:
3692     *
3693     * <pre>
3694     * public long doSomething(int a, int b) {
3695     *    EntryMessage m = traceEntry("doSomething(a={}, b={})", a, b);
3696     *    // ...
3697     *    return LOGGER.traceExit(m, myResult);
3698     * }
3699     * </pre>
3700     * @param message The Message containing the formatted result.
3701     * @param result The result being returned from the method call.
3702     *
3703     * @param <R> The type of the parameter and object being returned.
3704     * @return the result.
3705     *
3706     * @since 2.6
3707     */
3708    <R> R traceExit(EntryMessage message, R result);
3709
3710    /**
3711     * Logs exiting from a method with the result. Allows custom formatting of the result. This may be coded as:
3712     *
3713     * <pre>
3714     * return LOGGER.traceExit(new JsonMessage(myResult), myResult);
3715     * </pre>
3716     * @param message The Message containing the formatted result.
3717     * @param result The result being returned from the method call.
3718     *
3719     * @param <R> The type of the parameter and object being returned.
3720     * @return the result.
3721     *
3722     * @since 2.6
3723     */
3724    <R> R traceExit(Message message, R result);
3725
3726    /**
3727     * Logs a message with the specific Marker at the {@link Level#WARN WARN} level.
3728     *
3729     * @param marker the marker data specific to this log statement
3730     * @param msg the message string to be logged
3731     */
3732    void warn(Marker marker, Message msg);
3733
3734    /**
3735     * Logs a message with the specific Marker at the {@link Level#WARN WARN} level.
3736     *
3737     * @param marker the marker data specific to this log statement
3738     * @param msg the message string to be logged
3739     * @param t A Throwable or null.
3740     */
3741    void warn(Marker marker, Message msg, Throwable t);
3742
3743    /**
3744     * Logs a message which is only to be constructed if the logging level is the {@link Level#WARN WARN} level with the
3745     * specified Marker. The {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the
3746     * {@code Message}.
3747     *
3748     * @param marker the marker data specific to this log statement
3749     * @param msgSupplier A function, which when called, produces the desired log message.
3750     * @since 2.4
3751     */
3752    void warn(Marker marker, MessageSupplier msgSupplier);
3753
3754    /**
3755     * Logs a message (only to be constructed if the logging level is the {@link Level#WARN WARN} level) with the
3756     * specified Marker and including the stack warn of the {@link Throwable} <code>t</code> passed as parameter. The
3757     * {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
3758     *
3759     * @param marker the marker data specific to this log statement
3760     * @param msgSupplier A function, which when called, produces the desired log message.
3761     * @param t A Throwable or null.
3762     * @since 2.4
3763     */
3764    void warn(Marker marker, MessageSupplier msgSupplier, Throwable t);
3765
3766    /**
3767     * Logs a message CharSequence with the {@link Level#WARN WARN} level.
3768     *
3769     * @param marker the marker data specific to this log statement
3770     * @param message the message CharSequence to log.
3771     */
3772    void warn(Marker marker, CharSequence message);
3773
3774    /**
3775     * Logs a CharSequence at the {@link Level#WARN WARN} level including the stack trace of the {@link Throwable}
3776     * <code>t</code> passed as parameter.
3777     *
3778     * @param marker the marker data specific to this log statement
3779     * @param message the message CharSequence to log.
3780     * @param t the exception to log, including its stack trace.
3781     */
3782    void warn(Marker marker, CharSequence message, Throwable t);
3783
3784    /**
3785     * Logs a message object with the {@link Level#WARN WARN} level.
3786     *
3787     * @param marker the marker data specific to this log statement
3788     * @param message the message object to log.
3789     */
3790    void warn(Marker marker, Object message);
3791
3792    /**
3793     * Logs a message at the {@link Level#WARN WARN} level including the stack trace of the {@link Throwable}
3794     * <code>t</code> passed as parameter.
3795     *
3796     * @param marker the marker data specific to this log statement
3797     * @param message the message object to log.
3798     * @param t the exception to log, including its stack trace.
3799     */
3800    void warn(Marker marker, Object message, Throwable t);
3801
3802    /**
3803     * Logs a message object with the {@link Level#WARN WARN} level.
3804     *
3805     * @param marker the marker data specific to this log statement
3806     * @param message the message object to log.
3807     */
3808    void warn(Marker marker, String message);
3809
3810    /**
3811     * Logs a message with parameters at the {@link Level#WARN WARN} level.
3812     *
3813     * @param marker the marker data specific to this log statement.
3814     * @param message the message to log; the format depends on the message factory.
3815     * @param params parameters to the message.
3816     * @see #getMessageFactory()
3817     */
3818    void warn(Marker marker, String message, Object... params);
3819
3820    /**
3821     * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#WARN
3822     * WARN} level.
3823     *
3824     * @param marker the marker data specific to this log statement
3825     * @param message the message to log; the format depends on the message factory.
3826     * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
3827     * @since 2.4
3828     */
3829    void warn(Marker marker, String message, Supplier<?>... paramSuppliers);
3830
3831    /**
3832     * Logs a message at the {@link Level#WARN WARN} level including the stack trace of the {@link Throwable}
3833     * <code>t</code> passed as parameter.
3834     *
3835     * @param marker the marker data specific to this log statement
3836     * @param message the message object to log.
3837     * @param t the exception to log, including its stack trace.
3838     */
3839    void warn(Marker marker, String message, Throwable t);
3840
3841    /**
3842     * Logs a message which is only to be constructed if the logging level is the {@link Level#WARN WARN} level with the
3843     * specified Marker.
3844     *
3845     * @param marker the marker data specific to this log statement
3846     * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
3847     *            message factory.
3848     * @since 2.4
3849     */
3850    void warn(Marker marker, Supplier<?> msgSupplier);
3851
3852    /**
3853     * Logs a message (only to be constructed if the logging level is the {@link Level#WARN WARN} level) with the
3854     * specified Marker and including the stack warn of the {@link Throwable} <code>t</code> passed as parameter.
3855     *
3856     * @param marker the marker data specific to this log statement
3857     * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
3858     *            message factory.
3859     * @param t A Throwable or null.
3860     * @since 2.4
3861     */
3862    void warn(Marker marker, Supplier<?> msgSupplier, Throwable t);
3863
3864    /**
3865     * Logs a message with the specific Marker at the {@link Level#WARN WARN} level.
3866     *
3867     * @param msg the message string to be logged
3868     */
3869    void warn(Message msg);
3870
3871    /**
3872     * Logs a message with the specific Marker at the {@link Level#WARN WARN} level.
3873     *
3874     * @param msg the message string to be logged
3875     * @param t A Throwable or null.
3876     */
3877    void warn(Message msg, Throwable t);
3878
3879    /**
3880     * Logs a message which is only to be constructed if the logging level is the {@link Level#WARN WARN} level. The
3881     * {@code MessageSupplier} may or may not use the {@link MessageFactory} to construct the {@code Message}.
3882     *
3883     * @param msgSupplier A function, which when called, produces the desired log message.
3884     * @since 2.4
3885     */
3886    void warn(MessageSupplier msgSupplier);
3887
3888    /**
3889     * Logs a message (only to be constructed if the logging level is the {@link Level#WARN WARN} level) including the
3890     * stack warn of the {@link Throwable} <code>t</code> passed as parameter. The {@code MessageSupplier} may or may
3891     * not use the {@link MessageFactory} to construct the {@code Message}.
3892     *
3893     * @param msgSupplier A function, which when called, produces the desired log message.
3894     * @param t the exception to log, including its stack warn.
3895     * @since 2.4
3896     */
3897    void warn(MessageSupplier msgSupplier, Throwable t);
3898
3899    /**
3900     * Logs a message CharSequence with the {@link Level#WARN WARN} level.
3901     *
3902     * @param message the message CharSequence to log.
3903     */
3904    void warn(CharSequence message);
3905
3906    /**
3907     * Logs a CharSequence at the {@link Level#WARN WARN} level including the stack trace of the {@link Throwable}
3908     * <code>t</code> passed as parameter.
3909     *
3910     * @param message the message CharSequence to log.
3911     * @param t the exception to log, including its stack trace.
3912     */
3913    void warn(CharSequence message, Throwable t);
3914
3915    /**
3916     * Logs a message object with the {@link Level#WARN WARN} level.
3917     *
3918     * @param message the message object to log.
3919     */
3920    void warn(Object message);
3921
3922    /**
3923     * Logs a message at the {@link Level#WARN WARN} level including the stack trace of the {@link Throwable}
3924     * <code>t</code> passed as parameter.
3925     *
3926     * @param message the message object to log.
3927     * @param t the exception to log, including its stack trace.
3928     */
3929    void warn(Object message, Throwable t);
3930
3931    /**
3932     * Logs a message object with the {@link Level#WARN WARN} level.
3933     *
3934     * @param message the message string to log.
3935     */
3936    void warn(String message);
3937
3938    /**
3939     * Logs a message with parameters at the {@link Level#WARN WARN} level.
3940     *
3941     * @param message the message to log; the format depends on the message factory.
3942     * @param params parameters to the message.
3943     * @see #getMessageFactory()
3944     */
3945    void warn(String message, Object... params);
3946
3947    /**
3948     * Logs a message with parameters which are only to be constructed if the logging level is the {@link Level#WARN
3949     * WARN} level.
3950     *
3951     * @param message the message to log; the format depends on the message factory.
3952     * @param paramSuppliers An array of functions, which when called, produce the desired log message parameters.
3953     * @since 2.4
3954     */
3955    void warn(String message, Supplier<?>... paramSuppliers);
3956
3957    /**
3958     * Logs a message at the {@link Level#WARN WARN} level including the stack trace of the {@link Throwable}
3959     * <code>t</code> passed as parameter.
3960     *
3961     * @param message the message object to log.
3962     * @param t the exception to log, including its stack trace.
3963     */
3964    void warn(String message, Throwable t);
3965
3966    /**
3967     * Logs a message which is only to be constructed if the logging level is the {@link Level#WARN WARN} level.
3968     *
3969     * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
3970     *            message factory.
3971     * @since 2.4
3972     */
3973    void warn(Supplier<?> msgSupplier);
3974
3975    /**
3976     * Logs a message (only to be constructed if the logging level is the {@link Level#WARN WARN} level) including the
3977     * stack warn of the {@link Throwable} <code>t</code> passed as parameter.
3978     *
3979     * @param msgSupplier A function, which when called, produces the desired log message; the format depends on the
3980     *            message factory.
3981     * @param t the exception to log, including its stack warn.
3982     * @since 2.4
3983     */
3984    void warn(Supplier<?> msgSupplier, Throwable t);
3985
3986    /**
3987     * Logs a message with parameters at warn level.
3988     *
3989     * @param marker the marker data specific to this log statement
3990     * @param message the message to log; the format depends on the message factory.
3991     * @param p0 parameter to the message.
3992     */
3993    void warn(Marker marker, String message, Object p0);
3994
3995    /**
3996     * Logs a message with parameters at warn level.
3997     *
3998     * @param marker the marker data specific to this log statement
3999     * @param message the message to log; the format depends on the message factory.
4000     * @param p0 parameter to the message.
4001     * @param p1 parameter to the message.
4002     */
4003    void warn(Marker marker, String message, Object p0, Object p1);
4004
4005    /**
4006     * Logs a message with parameters at warn level.
4007     *
4008     * @param marker the marker data specific to this log statement
4009     * @param message the message to log; the format depends on the message factory.
4010     * @param p0 parameter to the message.
4011     * @param p1 parameter to the message.
4012     * @param p2 parameter to the message.
4013     */
4014    void warn(Marker marker, String message, Object p0, Object p1, Object p2);
4015
4016    /**
4017     * Logs a message with parameters at warn level.
4018     *
4019     * @param marker the marker data specific to this log statement
4020     * @param message the message to log; the format depends on the message factory.
4021     * @param p0 parameter to the message.
4022     * @param p1 parameter to the message.
4023     * @param p2 parameter to the message.
4024     * @param p3 parameter to the message.
4025     */
4026    void warn(Marker marker, String message, Object p0, Object p1, Object p2, Object p3);
4027
4028    /**
4029     * Logs a message with parameters at warn level.
4030     *
4031     * @param marker the marker data specific to this log statement
4032     * @param message the message to log; the format depends on the message factory.
4033     * @param p0 parameter to the message.
4034     * @param p1 parameter to the message.
4035     * @param p2 parameter to the message.
4036     * @param p3 parameter to the message.
4037     * @param p4 parameter to the message.
4038     */
4039    void warn(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4);
4040
4041    /**
4042     * Logs a message with parameters at warn level.
4043     *
4044     * @param marker the marker data specific to this log statement
4045     * @param message the message to log; the format depends on the message factory.
4046     * @param p0 parameter to the message.
4047     * @param p1 parameter to the message.
4048     * @param p2 parameter to the message.
4049     * @param p3 parameter to the message.
4050     * @param p4 parameter to the message.
4051     * @param p5 parameter to the message.
4052     */
4053    void warn(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5);
4054
4055    /**
4056     * Logs a message with parameters at warn level.
4057     *
4058     * @param marker the marker data specific to this log statement
4059     * @param message the message to log; the format depends on the message factory.
4060     * @param p0 parameter to the message.
4061     * @param p1 parameter to the message.
4062     * @param p2 parameter to the message.
4063     * @param p3 parameter to the message.
4064     * @param p4 parameter to the message.
4065     * @param p5 parameter to the message.
4066     * @param p6 parameter to the message.
4067     */
4068    void warn(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5,
4069            Object p6);
4070
4071    /**
4072     * Logs a message with parameters at warn level.
4073     *
4074     * @param marker the marker data specific to this log statement
4075     * @param message the message to log; the format depends on the message factory.
4076     * @param p0 parameter to the message.
4077     * @param p1 parameter to the message.
4078     * @param p2 parameter to the message.
4079     * @param p3 parameter to the message.
4080     * @param p4 parameter to the message.
4081     * @param p5 parameter to the message.
4082     * @param p6 parameter to the message.
4083     * @param p7 parameter to the message.
4084     */
4085    void warn(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6,
4086            Object p7);
4087
4088    /**
4089     * Logs a message with parameters at warn level.
4090     *
4091     * @param marker the marker data specific to this log statement
4092     * @param message the message to log; the format depends on the message factory.
4093     * @param p0 parameter to the message.
4094     * @param p1 parameter to the message.
4095     * @param p2 parameter to the message.
4096     * @param p3 parameter to the message.
4097     * @param p4 parameter to the message.
4098     * @param p5 parameter to the message.
4099     * @param p6 parameter to the message.
4100     * @param p7 parameter to the message.
4101     * @param p8 parameter to the message.
4102     */
4103    void warn(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6,
4104            Object p7, Object p8);
4105
4106    /**
4107     * Logs a message with parameters at warn level.
4108     *
4109     * @param marker the marker data specific to this log statement
4110     * @param message the message to log; the format depends on the message factory.
4111     * @param p0 parameter to the message.
4112     * @param p1 parameter to the message.
4113     * @param p2 parameter to the message.
4114     * @param p3 parameter to the message.
4115     * @param p4 parameter to the message.
4116     * @param p5 parameter to the message.
4117     * @param p6 parameter to the message.
4118     * @param p7 parameter to the message.
4119     * @param p8 parameter to the message.
4120     * @param p9 parameter to the message.
4121     */
4122    void warn(Marker marker, String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6,
4123            Object p7, Object p8, Object p9);
4124
4125    /**
4126     * Logs a message with parameters at warn level.
4127     *
4128     * @param message the message to log; the format depends on the message factory.
4129     * @param p0 parameter to the message.
4130     */
4131    void warn(String message, Object p0);
4132
4133    /**
4134     * Logs a message with parameters at warn level.
4135     *
4136     * @param message the message to log; the format depends on the message factory.
4137     * @param p0 parameter to the message.
4138     * @param p1 parameter to the message.
4139     */
4140    void warn(String message, Object p0, Object p1);
4141
4142    /**
4143     * Logs a message with parameters at warn level.
4144     *
4145     * @param message the message to log; the format depends on the message factory.
4146     * @param p0 parameter to the message.
4147     * @param p1 parameter to the message.
4148     * @param p2 parameter to the message.
4149     */
4150    void warn(String message, Object p0, Object p1, Object p2);
4151
4152    /**
4153     * Logs a message with parameters at warn level.
4154     *
4155     * @param message the message to log; the format depends on the message factory.
4156     * @param p0 parameter to the message.
4157     * @param p1 parameter to the message.
4158     * @param p2 parameter to the message.
4159     * @param p3 parameter to the message.
4160     */
4161    void warn(String message, Object p0, Object p1, Object p2, Object p3);
4162
4163    /**
4164     * Logs a message with parameters at warn level.
4165     *
4166     * @param message the message to log; the format depends on the message factory.
4167     * @param p0 parameter to the message.
4168     * @param p1 parameter to the message.
4169     * @param p2 parameter to the message.
4170     * @param p3 parameter to the message.
4171     * @param p4 parameter to the message.
4172     */
4173    void warn(String message, Object p0, Object p1, Object p2, Object p3, Object p4);
4174
4175    /**
4176     * Logs a message with parameters at warn level.
4177     *
4178     * @param message the message to log; the format depends on the message factory.
4179     * @param p0 parameter to the message.
4180     * @param p1 parameter to the message.
4181     * @param p2 parameter to the message.
4182     * @param p3 parameter to the message.
4183     * @param p4 parameter to the message.
4184     * @param p5 parameter to the message.
4185     */
4186    void warn(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5);
4187
4188    /**
4189     * Logs a message with parameters at warn level.
4190     *
4191     * @param message the message to log; the format depends on the message factory.
4192     * @param p0 parameter to the message.
4193     * @param p1 parameter to the message.
4194     * @param p2 parameter to the message.
4195     * @param p3 parameter to the message.
4196     * @param p4 parameter to the message.
4197     * @param p5 parameter to the message.
4198     * @param p6 parameter to the message.
4199     */
4200    void warn(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6);
4201
4202    /**
4203     * Logs a message with parameters at warn level.
4204     *
4205     * @param message the message to log; the format depends on the message factory.
4206     * @param p0 parameter to the message.
4207     * @param p1 parameter to the message.
4208     * @param p2 parameter to the message.
4209     * @param p3 parameter to the message.
4210     * @param p4 parameter to the message.
4211     * @param p5 parameter to the message.
4212     * @param p6 parameter to the message.
4213     * @param p7 parameter to the message.
4214     */
4215    void warn(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7);
4216
4217    /**
4218     * Logs a message with parameters at warn level.
4219     *
4220     * @param message the message to log; the format depends on the message factory.
4221     * @param p0 parameter to the message.
4222     * @param p1 parameter to the message.
4223     * @param p2 parameter to the message.
4224     * @param p3 parameter to the message.
4225     * @param p4 parameter to the message.
4226     * @param p5 parameter to the message.
4227     * @param p6 parameter to the message.
4228     * @param p7 parameter to the message.
4229     * @param p8 parameter to the message.
4230     */
4231    void warn(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7,
4232            Object p8);
4233
4234    /**
4235     * Logs a message with parameters at warn level.
4236     *
4237     * @param message the message to log; the format depends on the message factory.
4238     * @param p0 parameter to the message.
4239     * @param p1 parameter to the message.
4240     * @param p2 parameter to the message.
4241     * @param p3 parameter to the message.
4242     * @param p4 parameter to the message.
4243     * @param p5 parameter to the message.
4244     * @param p6 parameter to the message.
4245     * @param p7 parameter to the message.
4246     * @param p8 parameter to the message.
4247     * @param p9 parameter to the message.
4248     */
4249    void warn(String message, Object p0, Object p1, Object p2, Object p3, Object p4, Object p5, Object p6, Object p7,
4250            Object p8, Object p9);
4251
4252}