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