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