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