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