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