You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ma...@apache.org on 2018/03/27 17:55:35 UTC

[15/25] logging-log4j-kotlin git commit: Reorganization and renames

Reorganization and renames


Project: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/commit/98f21c94
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/tree/98f21c94
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/diff/98f21c94

Branch: refs/heads/master
Commit: 98f21c947f314f0df6d08c6eeb1a693b9baa9274
Parents: ae6dd5e
Author: Raman Gupta <ro...@gmail.com>
Authored: Wed Feb 28 00:08:43 2018 -0500
Committer: Raman Gupta <ro...@gmail.com>
Committed: Wed Feb 28 00:08:43 2018 -0500

----------------------------------------------------------------------
 .../apache/logging/log4j/kotlin/KotlinLogger.kt | 1699 +++++++++++++++++
 .../org/apache/logging/log4j/kotlin/Logger.kt   | 1718 ------------------
 .../logging/log4j/kotlin/LoggingFactory.kt      |   39 +
 3 files changed, 1738 insertions(+), 1718 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/98f21c94/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/KotlinLogger.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/KotlinLogger.kt b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/KotlinLogger.kt
new file mode 100644
index 0000000..92c020c
--- /dev/null
+++ b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/KotlinLogger.kt
@@ -0,0 +1,1699 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.logging.log4j.kotlin
+
+import org.apache.logging.log4j.Level
+import org.apache.logging.log4j.LogManager
+import org.apache.logging.log4j.Logger
+import org.apache.logging.log4j.Marker
+import org.apache.logging.log4j.message.EntryMessage
+import org.apache.logging.log4j.message.Message
+import org.apache.logging.log4j.spi.ExtendedLogger
+import org.apache.logging.log4j.util.MessageSupplier
+import org.apache.logging.log4j.util.Supplier
+import kotlin.reflect.full.companionObject
+
+/**
+ * An adapter supporting cleaner syntax when calling a logger via Kotlin. A Kotlin lambda can
+ * easily be passed to Log4j2 as a `Supplier` via Kotlin's automatic conversion from lambda's to
+ * SAM types. However, the compiler selects the incorrect overload of the method unless the lambda
+ * type is specified explicitly as `Supplier`, resulting in the lambda itself being logged rather than
+ * its evaluation.
+ *
+ * To avoid this, this delegate provides logging methods that take a native Kotlin Lambda as argument, and
+ * then delegate to the underlying Log4j2 method taking a `Supplier`. Just as the Supplier-methods in
+ * Log4j2, this does not evaluate the lambda, if the logging level is not enabled.
+ *
+ * Therefore, one can use Kotlin's String interpolation for logging without the performance impact of
+ * evaluating the parameters if the level is not enabled e.g.:
+ *
+ * ```
+ * log.debug { "Value a = $a" }
+ * ```
+ *
+ * In addition, the overloads provide methods in which the lambda is the *last* parameter rather than
+ * the first as in the regular Log4j2 API. This means one can use Kotlin's last parameter lambda
+ * outside of parentheses syntax e.g.:
+ *
+ * ```
+ * log.error(exc) { "Unexpected exception evaluating $whatever." }
+ * ```
+ *
+ * Finally, the adapter also provides a `runInTrace` utility that avoids having to call traceEnter and traceExit
+ * and catch manually. Rather, simply call the `trace` method, passing in an [EntryMessage] and the block to
+ * execute within trace enter/exit/catch calls. Location-awareness is currently broken for trace logging with this
+ * method as the ExtendedLogger does not expose the enter/exit/catch calls with the FQCN parameter.
+ *
+ * An implementation note: while Kotlin's delegation capabilities would normally allow this implementation to be
+ * significantly less verbose by automatically delegating most methods to the ExtendedLogger delegate, this
+ * would break location-awareness, since the ExtendedLogger delegate assumes its own FQCN is the root of the
+ * logging stack. We therefore explicitly delegate to the ExtendedLogger.logIfEnabled method, passing in our own
+ * FQCN for appropriate location awareness.
+ *
+ * TODO: The ExtendedLogger interface does not yet have support for trace entry and exit with FQCN specification.
+ * Therefore, until the Log4j2 API is updated and then this code is updated to match, location awareness will not
+ * work for these calls.
+ */
+@Suppress("UNUSED", "MemberVisibilityCanBePrivate")
+class KotlinLogger(private val delegate: ExtendedLogger): Logger by delegate {
+  companion object {
+    val FQCN: String = KotlinLogger::class.java.name
+    fun <T: Any?> (() -> T).asLog4jSupplier(): Supplier<T> = Supplier { invoke() }
+    fun <T: Any?> (Array<out () -> T>).asLog4jSuppliers(): Array<Supplier<T>> = map { it.asLog4jSupplier() }.toTypedArray()
+  }
+
+  override fun log(level: Level, marker: Marker?, msg: Message?) {
+    delegate.logIfEnabled(FQCN, level, marker, msg, null)
+  }
+
+  override fun log(level: Level, marker: Marker?, msg: Message?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, level, marker, msg, t)
+  }
+
+  override fun log(level: Level, marker: Marker?, msg: CharSequence?) {
+    delegate.logIfEnabled(FQCN, level, marker, msg, null)
+  }
+
+  override fun log(level: Level, marker: Marker?, msg: CharSequence?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, level, marker, msg, t)
+  }
+
+  override fun log(level: Level, marker: Marker?, msg: Any?) {
+    delegate.logIfEnabled(FQCN, level, marker, msg, null)
+  }
+
+  override fun log(level: Level, marker: Marker?, msg: String?) {
+    delegate.logIfEnabled(FQCN, level, marker, msg, null as Throwable?)
+  }
+
+  override fun log(level: Level, marker: Marker?, msg: String?, vararg params: Any?) {
+    delegate.logIfEnabled(FQCN, level, marker, msg, *params)
+  }
+
+  override fun log(level: Level, marker: Marker?, msg: String?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, level, marker, msg, t)
+  }
+
+  override fun log(level: Level, msg: Message?) {
+    delegate.logIfEnabled(FQCN, level, null, msg, null)
+  }
+
+  override fun log(level: Level, msg: Message?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, level, null, msg, t)
+  }
+
+  override fun log(level: Level, msg: CharSequence?) {
+    delegate.logIfEnabled(FQCN, level, null, msg, null)
+  }
+
+  override fun log(level: Level, msg: CharSequence?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, level, null, msg, t)
+  }
+
+  override fun log(level: Level, msg: Any?) {
+    delegate.logIfEnabled(FQCN, level, null, msg, null)
+  }
+
+  override fun log(level: Level, msg: Any?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, level, null, msg, t)
+  }
+
+  override fun log(level: Level, msg: String?) {
+    delegate.logIfEnabled(FQCN, level, null, msg, null as Throwable?)
+  }
+
+  override fun log(level: Level, msg: String?, vararg params: Any?) {
+    delegate.logIfEnabled(FQCN, level, null, msg, *params)
+  }
+
+  override fun log(level: Level, msg: String?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, level, null, msg, t)
+  }
+
+  override fun log(level: Level, msgSupplier: Supplier<*>?) {
+    delegate.logIfEnabled(FQCN, level, null, msgSupplier, null)
+  }
+
+  fun log(level: Level, supplier: () -> Any?) {
+    delegate.logIfEnabled(FQCN, level, null, supplier.asLog4jSupplier(), null)
+  }
+
+  override fun log(level: Level, msgSupplier: Supplier<*>?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, level, null, msgSupplier, t)
+  }
+
+  fun log(level: Level, t: Throwable, supplier: () -> Any?) {
+    delegate.logIfEnabled(FQCN, level, null, supplier.asLog4jSupplier(), t)
+  }
+
+  override fun log(level: Level, marker: Marker?, msgSupplier: Supplier<*>?) {
+    delegate.logIfEnabled(FQCN, level, marker, msgSupplier, null)
+  }
+
+  fun log(level: Level, marker: Marker?, supplier: () -> Any?) {
+    delegate.logIfEnabled(FQCN, level, marker, supplier.asLog4jSupplier(), null)
+  }
+
+  override fun log(level: Level, marker: Marker?, msg: String?, vararg paramSuppliers: Supplier<*>?) {
+    delegate.logIfEnabled(FQCN, level, marker, msg, *paramSuppliers)
+  }
+
+  fun log(level: Level, marker: Marker?, msg: String?, vararg paramSuppliers: () -> Any?) {
+    delegate.logIfEnabled(FQCN, level, marker, msg, *paramSuppliers.asLog4jSuppliers())
+  }
+
+  override fun log(level: Level, marker: Marker?, msgSupplier: Supplier<*>?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, level, marker, msgSupplier, t)
+  }
+
+  fun log(level: Level, marker: Marker?, t: Throwable?, supplier: () -> Any?) {
+    delegate.logIfEnabled(FQCN, level, marker, supplier.asLog4jSupplier(), t)
+  }
+
+  override fun log(level: Level, msg: String?, vararg paramSuppliers: Supplier<*>?) {
+    delegate.logIfEnabled(FQCN, level, null, msg, *paramSuppliers)
+  }
+
+  fun log(level: Level, msg: String?, vararg paramSuppliers: () -> Any?) {
+    delegate.logIfEnabled(FQCN, level, null, msg, *paramSuppliers.asLog4jSuppliers())
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("delegate.trace(Marker, () -> Any?>)"))
+  override fun log(level: Level, marker: Marker?, msgSupplier: MessageSupplier?) {
+    delegate.logIfEnabled(FQCN, level, marker, msgSupplier, null)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("delegate.trace(Marker, Throwable, () -> Any?>)"))
+  override fun log(level: Level, marker: Marker?, msgSupplier: MessageSupplier?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, level, marker, msgSupplier, t)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("delegate.trace(() -> Any?>)"))
+  override fun log(level: Level, messageSupplier: MessageSupplier?) {
+    delegate.logIfEnabled(FQCN, level, null, messageSupplier, null)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("delegate.trace(Throwable, () -> Any?>)"))
+  override fun log(level: Level, msgSupplier: MessageSupplier?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, level, null, msgSupplier, t)
+  }
+
+  override fun log(level: Level, marker: Marker?, msg: String?, p0: Any?) {
+    delegate.logIfEnabled(FQCN, level, marker, msg, p0)
+  }
+
+  override fun log(level: Level, marker: Marker?, msg: String?, p0: Any?, p1: Any?) {
+    delegate.logIfEnabled(FQCN, level, marker, msg, p0, p1)
+  }
+
+  override fun log(level: Level, marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?) {
+    delegate.logIfEnabled(FQCN, level, marker, msg, p0, p2, p2)
+  }
+
+  override fun log(level: Level, marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
+    delegate.logIfEnabled(FQCN, level, marker, msg, p0, p1, p2, p3)
+  }
+
+  override fun log(level: Level, marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?) {
+    delegate.logIfEnabled(FQCN, level, marker, msg, p0, p1, p2, p3, p4)
+  }
+
+  override fun log(level: Level, marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?) {
+    delegate.logIfEnabled(FQCN, level, marker, msg, p0, p1, p2, p3, p4, p5)
+  }
+
+  override fun log(level: Level, marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?) {
+    delegate.logIfEnabled(FQCN, level, marker, msg, p0, p1, p2, p3, p4, p5, p6)
+  }
+
+  override fun log(level: Level, marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?) {
+    delegate.logIfEnabled(FQCN, level, marker, msg, p0, p1, p2, p3, p4, p5, p6, p7)
+  }
+
+  override fun log(level: Level, marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?, p8: Any?) {
+    delegate.logIfEnabled(FQCN, level, marker, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8)
+  }
+
+  override fun log(level: Level, marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?, p8: Any?, p9: Any?) {
+    delegate.logIfEnabled(FQCN, level, marker, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)
+  }
+
+  override fun log(level: Level, marker: Marker?, msg: Any?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, level, marker, msg, t)
+  }
+
+  override fun log(level: Level, msg: String?, p0: Any?) {
+    delegate.logIfEnabled(FQCN, level, null, msg, p0)
+  }
+
+  override fun log(level: Level, msg: String?, p0: Any?, p1: Any?) {
+    delegate.logIfEnabled(FQCN, level, null, msg, p0, p1)
+  }
+
+  override fun log(level: Level, msg: String?, p0: Any?, p1: Any?, p2: Any?) {
+    delegate.logIfEnabled(FQCN, level, null, msg, p0, p1, p2)
+  }
+
+  override fun log(level: Level, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
+    delegate.logIfEnabled(FQCN, level, null, msg, p0, p1, p2, p3)
+  }
+
+  override fun log(level: Level, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?) {
+    delegate.logIfEnabled(FQCN, level, null, msg, p0, p1, p2, p3, p4)
+  }
+
+  override fun log(level: Level, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?) {
+    delegate.logIfEnabled(FQCN, level, null, msg, p0, p1, p2, p3, p4, p5)
+  }
+
+  override fun log(level: Level, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?) {
+    delegate.logIfEnabled(FQCN, level, null, msg, p0, p1, p2, p3, p4, p5, p6)
+  }
+
+  override fun log(level: Level, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?) {
+    delegate.logIfEnabled(FQCN, level, null, msg, p0, p1, p2, p3, p4, p5, p6, p7)
+  }
+
+  override fun log(level: Level, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?, p8: Any?) {
+    delegate.logIfEnabled(FQCN, level, null, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8)
+  }
+
+  override fun log(level: Level, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?, p8: Any?, p9: Any?) {
+    delegate.logIfEnabled(FQCN, level, null, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)
+  }
+
+  override fun trace(marker: Marker?, msg: Message?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, null)
+  }
+
+  override fun trace(marker: Marker?, msg: Message?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, t)
+  }
+
+  override fun trace(marker: Marker?, msg: CharSequence?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, null)
+  }
+
+  override fun trace(marker: Marker?, msg: CharSequence?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, t)
+  }
+
+  override fun trace(marker: Marker?, msg: Any?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, null)
+  }
+
+  override fun trace(marker: Marker?, msg: String?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, null as Throwable?)
+  }
+
+  override fun trace(marker: Marker?, msg: String?, vararg params: Any?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, *params)
+  }
+
+  override fun trace(marker: Marker?, msg: String?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, t)
+  }
+
+  override fun trace(msg: Message?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, null)
+  }
+
+  override fun trace(msg: Message?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, t)
+  }
+
+  override fun trace(msg: CharSequence?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, null)
+  }
+
+  override fun trace(msg: CharSequence?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, t)
+  }
+
+  override fun trace(msg: Any?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, null)
+  }
+
+  override fun trace(msg: Any?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, t)
+  }
+
+  override fun trace(msg: String?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, null as Throwable?)
+  }
+
+  override fun trace(msg: String?, vararg params: Any?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, *params)
+  }
+
+  override fun trace(msg: String?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, t)
+  }
+
+  override fun trace(msgSupplier: Supplier<*>?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, null, msgSupplier, null)
+  }
+
+  fun trace(supplier: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, null, supplier.asLog4jSupplier(), null)
+  }
+
+  override fun trace(msgSupplier: Supplier<*>?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, null, msgSupplier, t)
+  }
+
+  fun trace(t: Throwable, supplier: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, null, supplier.asLog4jSupplier(), t)
+  }
+
+  override fun trace(marker: Marker?, msgSupplier: Supplier<*>?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, marker, msgSupplier, null)
+  }
+
+  fun trace(marker: Marker?, supplier: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, marker, supplier.asLog4jSupplier(), null)
+  }
+
+  override fun trace(marker: Marker?, msg: String?, vararg paramSuppliers: Supplier<*>?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, *paramSuppliers)
+  }
+
+  fun trace(marker: Marker?, msg: String?, vararg paramSuppliers: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, *paramSuppliers.asLog4jSuppliers())
+  }
+
+  override fun trace(marker: Marker?, msgSupplier: Supplier<*>?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, marker, msgSupplier, t)
+  }
+
+  fun trace(marker: Marker?, t: Throwable?, supplier: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, marker, supplier.asLog4jSupplier(), t)
+  }
+
+  override fun trace(msg: String?, vararg paramSuppliers: Supplier<*>?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, *paramSuppliers)
+  }
+
+  fun trace(msg: String?, vararg paramSuppliers: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, *paramSuppliers.asLog4jSuppliers())
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("delegate.trace(Marker, () -> Any?>)"))
+  override fun trace(marker: Marker?, msgSupplier: MessageSupplier?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, marker, msgSupplier, null)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("delegate.trace(Marker, Throwable, () -> Any?>)"))
+  override fun trace(marker: Marker?, msgSupplier: MessageSupplier?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, marker, msgSupplier, t)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("delegate.trace(() -> Any?>)"))
+  override fun trace(messageSupplier: MessageSupplier?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, null, messageSupplier, null)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("delegate.trace(Throwable, () -> Any?>)"))
+  override fun trace(msgSupplier: MessageSupplier?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, null, msgSupplier, t)
+  }
+
+  override fun trace(marker: Marker?, msg: String?, p0: Any?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, p0)
+  }
+
+  override fun trace(marker: Marker?, msg: String?, p0: Any?, p1: Any?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, p0, p1)
+  }
+
+  override fun trace(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, p0, p2, p2)
+  }
+
+  override fun trace(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, p0, p1, p2, p3)
+  }
+
+  override fun trace(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, p0, p1, p2, p3, p4)
+  }
+
+  override fun trace(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, p0, p1, p2, p3, p4, p5)
+  }
+
+  override fun trace(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, p0, p1, p2, p3, p4, p5, p6)
+  }
+
+  override fun trace(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, p0, p1, p2, p3, p4, p5, p6, p7)
+  }
+
+  override fun trace(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?, p8: Any?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8)
+  }
+
+  override fun trace(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?, p8: Any?, p9: Any?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)
+  }
+
+  override fun trace(marker: Marker?, msg: Any?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, t)
+  }
+
+  override fun trace(msg: String?, p0: Any?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, p0)
+  }
+
+  override fun trace(msg: String?, p0: Any?, p1: Any?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, p0, p1)
+  }
+
+  override fun trace(msg: String?, p0: Any?, p1: Any?, p2: Any?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, p0, p1, p2)
+  }
+
+  override fun trace(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, p0, p1, p2, p3)
+  }
+
+  override fun trace(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, p0, p1, p2, p3, p4)
+  }
+
+  override fun trace(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, p0, p1, p2, p3, p4, p5)
+  }
+
+  override fun trace(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, p0, p1, p2, p3, p4, p5, p6)
+  }
+
+  override fun trace(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, p0, p1, p2, p3, p4, p5, p6, p7)
+  }
+
+  override fun trace(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?, p8: Any?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8)
+  }
+
+  override fun trace(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?, p8: Any?, p9: Any?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)
+  }
+
+  // TODO entry with fqcn is not part of the ExtendedLogger interface, location-awareness will be broken
+  override fun traceEntry(): EntryMessage {
+    return delegate.traceEntry()
+  }
+
+  // TODO entry with fqcn is not part of the ExtendedLogger interface, location-awareness will be broken
+  override fun traceEntry(format: String?, vararg params: Any?): EntryMessage {
+    return delegate.traceEntry(format, *params)
+  }
+
+  // TODO entry with fqcn is not part of the ExtendedLogger interface, location-awareness will be broken
+  override fun traceEntry(vararg paramSuppliers: Supplier<*>?): EntryMessage {
+    return delegate.traceEntry(*paramSuppliers)
+  }
+
+  fun traceEntry(vararg paramSuppliers: () -> Any?): EntryMessage {
+    return delegate.traceEntry(*paramSuppliers.asLog4jSuppliers())
+  }
+
+  // TODO entry with fqcn is not part of the ExtendedLogger interface, location-awareness will be broken
+  override fun traceEntry(format: String?, vararg paramSuppliers: Supplier<*>?): EntryMessage {
+    return delegate.traceEntry(format, *paramSuppliers)
+  }
+
+  fun traceEntry(format: String?, vararg paramSuppliers: () -> Any?): EntryMessage {
+    return delegate.traceEntry(format, *paramSuppliers.asLog4jSuppliers())
+  }
+
+  // TODO entry with fqcn is not part of the ExtendedLogger interface, location-awareness will be broken
+  override fun traceEntry(message: Message?): EntryMessage {
+    return delegate.traceEntry(message)
+  }
+
+  // TODO exit with fqcn is not part of the ExtendedLogger interface, location-awareness will be broken
+  override fun traceExit() {
+    delegate.traceExit()
+  }
+
+  // TODO exit with fqcn is not part of the ExtendedLogger interface, location-awareness will be broken
+  override fun <R : Any?> traceExit(format: String?, result: R): R {
+    return delegate.traceExit(format, result)
+  }
+
+  // TODO exit with fqcn is not part of the ExtendedLogger interface, location-awareness will be broken
+  override fun <R : Any?> traceExit(message: Message?, result: R): R {
+    return delegate.traceExit(message, result)
+  }
+
+  // TODO exit with fqcn is not part of the ExtendedLogger interface, location-awareness will be broken
+  override fun traceExit(message: EntryMessage?) {
+    delegate.traceExit(message)
+  }
+
+  // TODO exit with fqcn is not part of the ExtendedLogger interface, location-awareness will be broken
+  override fun <R : Any?> traceExit(result: R): R {
+    return delegate.traceExit(result)
+  }
+
+  // TODO exit with fqcn is not part of the ExtendedLogger interface, location-awareness will be broken
+  override fun <R : Any?> traceExit(message: EntryMessage?, result: R): R {
+    return delegate.traceExit(message, result)
+  }
+
+  fun <R : Any?> runInTrace(block: () -> R): R {
+    return runInTrace(traceEntry(), block)
+  }
+
+  fun <R : Any?> runInTrace(entryMessage: EntryMessage, block: () -> R): R {
+    return try {
+      val result = block()
+      when(result) {
+        Unit -> traceExit(entryMessage)
+        else -> traceExit(entryMessage, result)
+      }
+      result
+    } catch (e: Throwable) {
+      catching(e)
+      throw e
+    }
+  }
+
+  override fun debug(marker: Marker?, msg: Message?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, null)
+  }
+
+  override fun debug(marker: Marker?, msg: Message?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, t)
+  }
+
+  override fun debug(marker: Marker?, msg: CharSequence?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, null)
+  }
+
+  override fun debug(marker: Marker?, msg: CharSequence?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, t)
+  }
+
+  override fun debug(marker: Marker?, msg: Any?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, null)
+  }
+
+  override fun debug(marker: Marker?, msg: String?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, null as Throwable?)
+  }
+
+  override fun debug(marker: Marker?, msg: String?, vararg params: Any?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, *params)
+  }
+
+  override fun debug(marker: Marker?, msg: String?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, t)
+  }
+
+  override fun debug(msg: Message?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, null)
+  }
+
+  override fun debug(msg: Message?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, t)
+  }
+
+  override fun debug(msg: CharSequence?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, null)
+  }
+
+  override fun debug(msg: CharSequence?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, t)
+  }
+
+  override fun debug(msg: Any?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, null)
+  }
+
+  override fun debug(msg: Any?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, t)
+  }
+
+  override fun debug(msg: String?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, null as Throwable?)
+  }
+
+  override fun debug(msg: String?, vararg params: Any?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, *params)
+  }
+
+  override fun debug(msg: String?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, t)
+  }
+
+  override fun debug(msgSupplier: Supplier<*>?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, null, msgSupplier, null)
+  }
+
+  fun debug(supplier: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, null, supplier.asLog4jSupplier(), null)
+  }
+
+  override fun debug(msgSupplier: Supplier<*>?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, null, msgSupplier, t)
+  }
+
+  fun debug(t: Throwable, supplier: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, null, supplier.asLog4jSupplier(), t)
+  }
+
+  override fun debug(marker: Marker?, msgSupplier: Supplier<*>?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msgSupplier, null)
+  }
+
+  fun debug(marker: Marker?, supplier: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, marker, supplier.asLog4jSupplier(), null)
+  }
+
+  override fun debug(marker: Marker?, msg: String?, vararg paramSuppliers: Supplier<*>?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, *paramSuppliers)
+  }
+
+  fun debug(marker: Marker?, msg: String?, vararg paramSuppliers: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, *paramSuppliers.asLog4jSuppliers())
+  }
+
+  override fun debug(marker: Marker?, msgSupplier: Supplier<*>?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msgSupplier, t)
+  }
+
+  fun debug(marker: Marker?, t: Throwable?, supplier: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, marker, supplier.asLog4jSupplier(), t)
+  }
+
+  override fun debug(msg: String?, vararg paramSuppliers: Supplier<*>?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, *paramSuppliers)
+  }
+
+  fun debug(msg: String?, vararg paramSuppliers: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, *paramSuppliers.asLog4jSuppliers())
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("delegate.debug(Marker, () -> Any?>)"))
+  override fun debug(marker: Marker?, msgSupplier: MessageSupplier?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msgSupplier, null)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("delegate.debug(Marker, Throwable, () -> Any?>)"))
+  override fun debug(marker: Marker?, msgSupplier: MessageSupplier?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msgSupplier, t)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("delegate.debug(() -> Any?>)"))
+  override fun debug(messageSupplier: MessageSupplier?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, null, messageSupplier, null)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("delegate.debug(Throwable, () -> Any?>)"))
+  override fun debug(msgSupplier: MessageSupplier?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, null, msgSupplier, t)
+  }
+
+  override fun debug(marker: Marker?, msg: String?, p0: Any?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, p0)
+  }
+
+  override fun debug(marker: Marker?, msg: String?, p0: Any?, p1: Any?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, p0, p1)
+  }
+
+  override fun debug(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, p0, p2, p2)
+  }
+
+  override fun debug(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, p0, p1, p2, p3)
+  }
+
+  override fun debug(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, p0, p1, p2, p3, p4)
+  }
+
+  override fun debug(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, p0, p1, p2, p3, p4, p5)
+  }
+
+  override fun debug(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, p0, p1, p2, p3, p4, p5, p6)
+  }
+
+  override fun debug(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, p0, p1, p2, p3, p4, p5, p6, p7)
+  }
+
+  override fun debug(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?, p8: Any?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8)
+  }
+
+  override fun debug(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?, p8: Any?, p9: Any?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)
+  }
+
+  override fun debug(marker: Marker?, msg: Any?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, t)
+  }
+
+  override fun debug(msg: String?, p0: Any?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, p0)
+  }
+
+  override fun debug(msg: String?, p0: Any?, p1: Any?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, p0, p1)
+  }
+
+  override fun debug(msg: String?, p0: Any?, p1: Any?, p2: Any?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, p0, p1, p2)
+  }
+
+  override fun debug(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, p0, p1, p2, p3)
+  }
+
+  override fun debug(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, p0, p1, p2, p3, p4)
+  }
+
+  override fun debug(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, p0, p1, p2, p3, p4, p5)
+  }
+
+  override fun debug(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, p0, p1, p2, p3, p4, p5, p6)
+  }
+
+  override fun debug(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, p0, p1, p2, p3, p4, p5, p6, p7)
+  }
+
+  override fun debug(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?, p8: Any?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8)
+  }
+
+  override fun debug(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?, p8: Any?, p9: Any?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)
+  }
+
+  override fun info(marker: Marker?, msg: Message?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, null)
+  }
+
+  override fun info(marker: Marker?, msg: Message?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, t)
+  }
+
+  override fun info(marker: Marker?, msg: CharSequence?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, null)
+  }
+
+  override fun info(marker: Marker?, msg: CharSequence?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, t)
+  }
+
+  override fun info(marker: Marker?, msg: Any?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, null)
+  }
+
+  override fun info(marker: Marker?, msg: String?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, null as Throwable?)
+  }
+
+  override fun info(marker: Marker?, msg: String?, vararg params: Any?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, *params)
+  }
+
+  override fun info(marker: Marker?, msg: String?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, t)
+  }
+
+  override fun info(msg: Message?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, null, msg, null)
+  }
+
+  override fun info(msg: Message?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, null, msg, t)
+  }
+
+  override fun info(msg: CharSequence?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, null, msg, null)
+  }
+
+  override fun info(msg: CharSequence?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, null, msg, t)
+  }
+
+  override fun info(msg: Any?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, null, msg, null)
+  }
+
+  override fun info(msg: Any?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, null, msg, t)
+  }
+
+  override fun info(msg: String?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, null, msg, null as Throwable?)
+  }
+
+  override fun info(msg: String?, vararg params: Any?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, null, msg, *params)
+  }
+
+  override fun info(msg: String?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, null, msg, t)
+  }
+
+  override fun info(msgSupplier: Supplier<*>?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, null, msgSupplier, null)
+  }
+
+  fun info(supplier: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, null, supplier.asLog4jSupplier(), null)
+  }
+
+  override fun info(msgSupplier: Supplier<*>?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, null, msgSupplier, t)
+  }
+
+  fun info(t: Throwable, supplier: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, null, supplier.asLog4jSupplier(), t)
+  }
+
+  override fun info(marker: Marker?, msgSupplier: Supplier<*>?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, marker, msgSupplier, null)
+  }
+
+  fun info(marker: Marker?, supplier: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, marker, supplier.asLog4jSupplier(), null)
+  }
+
+  override fun info(marker: Marker?, msg: String?, vararg paramSuppliers: Supplier<*>?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, *paramSuppliers)
+  }
+
+  fun info(marker: Marker?, msg: String?, vararg paramSuppliers: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, *paramSuppliers.asLog4jSuppliers())
+  }
+
+  override fun info(marker: Marker?, msgSupplier: Supplier<*>?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, marker, msgSupplier, t)
+  }
+
+  fun info(marker: Marker?, t: Throwable?, supplier: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, marker, supplier.asLog4jSupplier(), t)
+  }
+
+  override fun info(msg: String?, vararg paramSuppliers: Supplier<*>?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, null, msg, *paramSuppliers)
+  }
+
+  fun info(msg: String?, vararg paramSuppliers: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, null, msg, *paramSuppliers.asLog4jSuppliers())
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("delegate.info(Marker, () -> Any?>)"))
+  override fun info(marker: Marker?, msgSupplier: MessageSupplier?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, marker, msgSupplier, null)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("delegate.info(Marker, Throwable, () -> Any?>)"))
+  override fun info(marker: Marker?, msgSupplier: MessageSupplier?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, marker, msgSupplier, t)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("delegate.info(() -> Any?>)"))
+  override fun info(messageSupplier: MessageSupplier?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, null, messageSupplier, null)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("delegate.info(Throwable, () -> Any?>)"))
+  override fun info(msgSupplier: MessageSupplier?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, null, msgSupplier, t)
+  }
+
+  override fun info(marker: Marker?, msg: String?, p0: Any?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, p0)
+  }
+
+  override fun info(marker: Marker?, msg: String?, p0: Any?, p1: Any?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, p0, p1)
+  }
+
+  override fun info(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, p0, p2, p2)
+  }
+
+  override fun info(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, p0, p1, p2, p3)
+  }
+
+  override fun info(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, p0, p1, p2, p3, p4)
+  }
+
+  override fun info(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, p0, p1, p2, p3, p4, p5)
+  }
+
+  override fun info(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, p0, p1, p2, p3, p4, p5, p6)
+  }
+
+  override fun info(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, p0, p1, p2, p3, p4, p5, p6, p7)
+  }
+
+  override fun info(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?, p8: Any?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8)
+  }
+
+  override fun info(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?, p8: Any?, p9: Any?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)
+  }
+
+  override fun info(marker: Marker?, msg: Any?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, t)
+  }
+
+  override fun info(msg: String?, p0: Any?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, null, msg, p0)
+  }
+
+  override fun info(msg: String?, p0: Any?, p1: Any?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, null, msg, p0, p1)
+  }
+
+  override fun info(msg: String?, p0: Any?, p1: Any?, p2: Any?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, null, msg, p0, p1, p2)
+  }
+
+  override fun info(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, null, msg, p0, p1, p2, p3)
+  }
+
+  override fun info(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, null, msg, p0, p1, p2, p3, p4)
+  }
+
+  override fun info(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, null, msg, p0, p1, p2, p3, p4, p5)
+  }
+
+  override fun info(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, null, msg, p0, p1, p2, p3, p4, p5, p6)
+  }
+
+  override fun info(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, null, msg, p0, p1, p2, p3, p4, p5, p6, p7)
+  }
+
+  override fun info(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?, p8: Any?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, null, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8)
+  }
+
+  override fun info(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?, p8: Any?, p9: Any?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, null, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)
+  }
+
+  override fun warn(marker: Marker?, msg: Message?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, null)
+  }
+
+  override fun warn(marker: Marker?, msg: Message?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, t)
+  }
+
+  override fun warn(marker: Marker?, msg: CharSequence?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, null)
+  }
+
+  override fun warn(marker: Marker?, msg: CharSequence?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, t)
+  }
+
+  override fun warn(marker: Marker?, msg: Any?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, null)
+  }
+
+  override fun warn(marker: Marker?, msg: String?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, null as Throwable?)
+  }
+
+  override fun warn(marker: Marker?, msg: String?, vararg params: Any?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, *params)
+  }
+
+  override fun warn(marker: Marker?, msg: String?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, t)
+  }
+
+  override fun warn(msg: Message?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, null, msg, null)
+  }
+
+  override fun warn(msg: Message?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, null, msg, t)
+  }
+
+  override fun warn(msg: CharSequence?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, null, msg, null)
+  }
+
+  override fun warn(msg: CharSequence?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, null, msg, t)
+  }
+
+  override fun warn(msg: Any?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, null, msg, null)
+  }
+
+  override fun warn(msg: Any?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, null, msg, t)
+  }
+
+  override fun warn(msg: String?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, null, msg, null as Throwable?)
+  }
+
+  override fun warn(msg: String?, vararg params: Any?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, null, msg, *params)
+  }
+
+  override fun warn(msg: String?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, null, msg, t)
+  }
+
+  override fun warn(msgSupplier: Supplier<*>?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, null, msgSupplier, null)
+  }
+
+  fun warn(supplier: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, null, supplier.asLog4jSupplier(), null)
+  }
+
+  override fun warn(msgSupplier: Supplier<*>?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, null, msgSupplier, t)
+  }
+
+  fun warn(t: Throwable, supplier: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, null, supplier.asLog4jSupplier(), t)
+  }
+
+  override fun warn(marker: Marker?, msgSupplier: Supplier<*>?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, marker, msgSupplier, null)
+  }
+
+  fun warn(marker: Marker?, supplier: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, marker, supplier.asLog4jSupplier(), null)
+  }
+
+  override fun warn(marker: Marker?, msg: String?, vararg paramSuppliers: Supplier<*>?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, *paramSuppliers)
+  }
+
+  fun warn(marker: Marker?, msg: String?, vararg paramSuppliers: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, *paramSuppliers.asLog4jSuppliers())
+  }
+
+  override fun warn(marker: Marker?, msgSupplier: Supplier<*>?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, marker, msgSupplier, t)
+  }
+
+  fun warn(marker: Marker?, t: Throwable?, supplier: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, marker, supplier.asLog4jSupplier(), t)
+  }
+
+  override fun warn(msg: String?, vararg paramSuppliers: Supplier<*>?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, null, msg, *paramSuppliers)
+  }
+
+  fun warn(msg: String?, vararg paramSuppliers: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, null, msg, *paramSuppliers.asLog4jSuppliers())
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("delegate.warn(Marker, () -> Any?>)"))
+  override fun warn(marker: Marker?, msgSupplier: MessageSupplier?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, marker, msgSupplier, null)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("delegate.warn(Marker, Throwable, () -> Any?>)"))
+  override fun warn(marker: Marker?, msgSupplier: MessageSupplier?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, marker, msgSupplier, t)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("delegate.warn(() -> Any?>)"))
+  override fun warn(messageSupplier: MessageSupplier?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, null, messageSupplier, null)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("delegate.warn(Throwable, () -> Any?>)"))
+  override fun warn(msgSupplier: MessageSupplier?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, null, msgSupplier, t)
+  }
+
+  override fun warn(marker: Marker?, msg: String?, p0: Any?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, p0)
+  }
+
+  override fun warn(marker: Marker?, msg: String?, p0: Any?, p1: Any?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, p0, p1)
+  }
+
+  override fun warn(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, p0, p2, p2)
+  }
+
+  override fun warn(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, p0, p1, p2, p3)
+  }
+
+  override fun warn(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, p0, p1, p2, p3, p4)
+  }
+
+  override fun warn(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, p0, p1, p2, p3, p4, p5)
+  }
+
+  override fun warn(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, p0, p1, p2, p3, p4, p5, p6)
+  }
+
+  override fun warn(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, p0, p1, p2, p3, p4, p5, p6, p7)
+  }
+
+  override fun warn(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?, p8: Any?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8)
+  }
+
+  override fun warn(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?, p8: Any?, p9: Any?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)
+  }
+
+  override fun warn(marker: Marker?, msg: Any?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, t)
+  }
+
+  override fun warn(msg: String?, p0: Any?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, null, msg, p0)
+  }
+
+  override fun warn(msg: String?, p0: Any?, p1: Any?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, null, msg, p0, p1)
+  }
+
+  override fun warn(msg: String?, p0: Any?, p1: Any?, p2: Any?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, null, msg, p0, p1, p2)
+  }
+
+  override fun warn(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, null, msg, p0, p1, p2, p3)
+  }
+
+  override fun warn(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, null, msg, p0, p1, p2, p3, p4)
+  }
+
+  override fun warn(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, null, msg, p0, p1, p2, p3, p4, p5)
+  }
+
+  override fun warn(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, null, msg, p0, p1, p2, p3, p4, p5, p6)
+  }
+
+  override fun warn(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, null, msg, p0, p1, p2, p3, p4, p5, p6, p7)
+  }
+
+  override fun warn(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?, p8: Any?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, null, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8)
+  }
+
+  override fun warn(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?, p8: Any?, p9: Any?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, null, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)
+  }
+
+  override fun error(marker: Marker?, msg: Message?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, null)
+  }
+
+  override fun error(marker: Marker?, msg: Message?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, t)
+  }
+
+  override fun error(marker: Marker?, msg: CharSequence?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, null)
+  }
+
+  override fun error(marker: Marker?, msg: CharSequence?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, t)
+  }
+
+  override fun error(marker: Marker?, msg: Any?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, null)
+  }
+
+  override fun error(marker: Marker?, msg: String?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, null as Throwable?)
+  }
+
+  override fun error(marker: Marker?, msg: String?, vararg params: Any?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, *params)
+  }
+
+  override fun error(marker: Marker?, msg: String?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, t)
+  }
+
+  override fun error(msg: Message?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, null)
+  }
+
+  override fun error(msg: Message?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, t)
+  }
+
+  override fun error(msg: CharSequence?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, null)
+  }
+
+  override fun error(msg: CharSequence?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, t)
+  }
+
+  override fun error(msg: Any?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, null)
+  }
+
+  override fun error(msg: Any?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, t)
+  }
+
+  override fun error(msg: String?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, null as Throwable?)
+  }
+
+  override fun error(msg: String?, vararg params: Any?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, *params)
+  }
+
+  override fun error(msg: String?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, t)
+  }
+
+  override fun error(msgSupplier: Supplier<*>?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, null, msgSupplier, null)
+  }
+
+  fun error(supplier: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, null, supplier.asLog4jSupplier(), null)
+  }
+
+  override fun error(msgSupplier: Supplier<*>?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, null, msgSupplier, t)
+  }
+
+  fun error(t: Throwable, supplier: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, null, supplier.asLog4jSupplier(), t)
+  }
+
+  override fun error(marker: Marker?, msgSupplier: Supplier<*>?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, marker, msgSupplier, null)
+  }
+
+  fun error(marker: Marker?, supplier: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, marker, supplier.asLog4jSupplier(), null)
+  }
+
+  override fun error(marker: Marker?, msg: String?, vararg paramSuppliers: Supplier<*>?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, *paramSuppliers)
+  }
+
+  fun error(marker: Marker?, msg: String?, vararg paramSuppliers: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, *paramSuppliers.asLog4jSuppliers())
+  }
+
+  override fun error(marker: Marker?, msgSupplier: Supplier<*>?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, marker, msgSupplier, t)
+  }
+
+  fun error(marker: Marker?, t: Throwable?, supplier: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, marker, supplier.asLog4jSupplier(), t)
+  }
+
+  override fun error(msg: String?, vararg paramSuppliers: Supplier<*>?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, *paramSuppliers)
+  }
+
+  fun error(msg: String?, vararg paramSuppliers: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, *paramSuppliers.asLog4jSuppliers())
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("delegate.error(Marker, () -> Any?>)"))
+  override fun error(marker: Marker?, msgSupplier: MessageSupplier?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, marker, msgSupplier, null)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("delegate.error(Marker, Throwable, () -> Any?>)"))
+  override fun error(marker: Marker?, msgSupplier: MessageSupplier?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, marker, msgSupplier, t)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("delegate.error(() -> Any?>)"))
+  override fun error(messageSupplier: MessageSupplier?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, null, messageSupplier, null)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("delegate.error(Throwable, () -> Any?>)"))
+  override fun error(msgSupplier: MessageSupplier?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, null, msgSupplier, t)
+  }
+
+  override fun error(marker: Marker?, msg: String?, p0: Any?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, p0)
+  }
+
+  override fun error(marker: Marker?, msg: String?, p0: Any?, p1: Any?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, p0, p1)
+  }
+
+  override fun error(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, p0, p2, p2)
+  }
+
+  override fun error(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, p0, p1, p2, p3)
+  }
+
+  override fun error(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, p0, p1, p2, p3, p4)
+  }
+
+  override fun error(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, p0, p1, p2, p3, p4, p5)
+  }
+
+  override fun error(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, p0, p1, p2, p3, p4, p5, p6)
+  }
+
+  override fun error(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, p0, p1, p2, p3, p4, p5, p6, p7)
+  }
+
+  override fun error(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?, p8: Any?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8)
+  }
+
+  override fun error(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?, p8: Any?, p9: Any?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)
+  }
+
+  override fun error(marker: Marker?, msg: Any?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, t)
+  }
+
+  override fun error(msg: String?, p0: Any?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, p0)
+  }
+
+  override fun error(msg: String?, p0: Any?, p1: Any?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, p0, p1)
+  }
+
+  override fun error(msg: String?, p0: Any?, p1: Any?, p2: Any?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, p0, p1, p2)
+  }
+
+  override fun error(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, p0, p1, p2, p3)
+  }
+
+  override fun error(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, p0, p1, p2, p3, p4)
+  }
+
+  override fun error(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, p0, p1, p2, p3, p4, p5)
+  }
+
+  override fun error(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, p0, p1, p2, p3, p4, p5, p6)
+  }
+
+  override fun error(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, p0, p1, p2, p3, p4, p5, p6, p7)
+  }
+
+  override fun error(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?, p8: Any?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8)
+  }
+
+  override fun error(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?, p8: Any?, p9: Any?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)
+  }
+
+  override fun fatal(marker: Marker?, msg: Message?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, null)
+  }
+
+  override fun fatal(marker: Marker?, msg: Message?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, t)
+  }
+
+  override fun fatal(marker: Marker?, msg: CharSequence?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, null)
+  }
+
+  override fun fatal(marker: Marker?, msg: CharSequence?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, t)
+  }
+
+  override fun fatal(marker: Marker?, msg: Any?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, null)
+  }
+
+  override fun fatal(marker: Marker?, msg: String?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, null as Throwable?)
+  }
+
+  override fun fatal(marker: Marker?, msg: String?, vararg params: Any?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, *params)
+  }
+
+  override fun fatal(marker: Marker?, msg: String?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, t)
+  }
+
+  override fun fatal(msg: Message?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, null)
+  }
+
+  override fun fatal(msg: Message?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, t)
+  }
+
+  override fun fatal(msg: CharSequence?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, null)
+  }
+
+  override fun fatal(msg: CharSequence?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, t)
+  }
+
+  override fun fatal(msg: Any?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, null)
+  }
+
+  override fun fatal(msg: Any?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, t)
+  }
+
+  override fun fatal(msg: String?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, null as Throwable?)
+  }
+
+  override fun fatal(msg: String?, vararg params: Any?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, *params)
+  }
+
+  override fun fatal(msg: String?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, t)
+  }
+
+  override fun fatal(msgSupplier: Supplier<*>?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, null, msgSupplier, null)
+  }
+
+  fun fatal(supplier: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, null, supplier.asLog4jSupplier(), null)
+  }
+
+  override fun fatal(msgSupplier: Supplier<*>?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, null, msgSupplier, t)
+  }
+
+  fun fatal(t: Throwable, supplier: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, null, supplier.asLog4jSupplier(), t)
+  }
+
+  override fun fatal(marker: Marker?, msgSupplier: Supplier<*>?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, marker, msgSupplier, null)
+  }
+
+  fun fatal(marker: Marker?, supplier: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, marker, supplier.asLog4jSupplier(), null)
+  }
+
+  override fun fatal(marker: Marker?, msg: String?, vararg paramSuppliers: Supplier<*>?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, *paramSuppliers)
+  }
+
+  fun fatal(marker: Marker?, msg: String?, vararg paramSuppliers: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, *paramSuppliers.asLog4jSuppliers())
+  }
+
+  override fun fatal(marker: Marker?, msgSupplier: Supplier<*>?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, marker, msgSupplier, t)
+  }
+
+  fun fatal(marker: Marker?, t: Throwable?, supplier: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, marker, supplier.asLog4jSupplier(), t)
+  }
+
+  override fun fatal(msg: String?, vararg paramSuppliers: Supplier<*>?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, *paramSuppliers)
+  }
+
+  fun fatal(msg: String?, vararg paramSuppliers: () -> Any?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, *paramSuppliers.asLog4jSuppliers())
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("delegate.fatal(Marker, () -> Any?>)"))
+  override fun fatal(marker: Marker?, msgSupplier: MessageSupplier?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, marker, msgSupplier, null)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("delegate.fatal(Marker, Throwable, () -> Any?>)"))
+  override fun fatal(marker: Marker?, msgSupplier: MessageSupplier?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, marker, msgSupplier, t)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("delegate.fatal(() -> Any?>)"))
+  override fun fatal(messageSupplier: MessageSupplier?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, null, messageSupplier, null)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("delegate.fatal(Throwable, () -> Any?>)"))
+  override fun fatal(msgSupplier: MessageSupplier?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, null, msgSupplier, t)
+  }
+
+  override fun fatal(marker: Marker?, msg: String?, p0: Any?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, p0)
+  }
+
+  override fun fatal(marker: Marker?, msg: String?, p0: Any?, p1: Any?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, p0, p1)
+  }
+
+  override fun fatal(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, p0, p2, p2)
+  }
+
+  override fun fatal(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, p0, p1, p2, p3)
+  }
+
+  override fun fatal(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, p0, p1, p2, p3, p4)
+  }
+
+  override fun fatal(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, p0, p1, p2, p3, p4, p5)
+  }
+
+  override fun fatal(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, p0, p1, p2, p3, p4, p5, p6)
+  }
+
+  override fun fatal(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, p0, p1, p2, p3, p4, p5, p6, p7)
+  }
+
+  override fun fatal(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?, p8: Any?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8)
+  }
+
+  override fun fatal(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?, p8: Any?, p9: Any?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)
+  }
+
+  override fun fatal(marker: Marker?, msg: Any?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, t)
+  }
+
+  override fun fatal(msg: String?, p0: Any?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, p0)
+  }
+
+  override fun fatal(msg: String?, p0: Any?, p1: Any?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, p0, p1)
+  }
+
+  override fun fatal(msg: String?, p0: Any?, p1: Any?, p2: Any?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, p0, p1, p2)
+  }
+
+  override fun fatal(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, p0, p1, p2, p3)
+  }
+
+  override fun fatal(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, p0, p1, p2, p3, p4)
+  }
+
+  override fun fatal(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, p0, p1, p2, p3, p4, p5)
+  }
+
+  override fun fatal(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, p0, p1, p2, p3, p4, p5, p6)
+  }
+
+  override fun fatal(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, p0, p1, p2, p3, p4, p5, p6, p7)
+  }
+
+  override fun fatal(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?, p8: Any?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8)
+  }
+
+  override fun fatal(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?, p8: Any?, p9: Any?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)
+  }
+}