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