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