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:21 UTC

[01/25] logging-log4j-kotlin git commit: Initial commit based on logging-log4j-scala

Repository: logging-log4j-kotlin
Updated Branches:
  refs/heads/master 73c3f0834 -> cd789c4ed


Initial commit based on logging-log4j-scala


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/fc43d3f5
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/tree/fc43d3f5
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/diff/fc43d3f5

Branch: refs/heads/master
Commit: fc43d3f5da052ab4c17515fb2c00f0dd60dbf20f
Parents: 
Author: Raman Gupta <ro...@gmail.com>
Authored: Mon Nov 14 14:03:52 2016 -0500
Committer: Raman Gupta <ro...@gmail.com>
Committed: Mon Nov 14 14:04:40 2016 -0500

----------------------------------------------------------------------
 .gitignore                                      |  12 ++
 LICENSE.txt                                     | 202 +++++++++++++++++++
 NOTICE.txt                                      |   5 +
 README.md                                       |  18 ++
 log4j-api-kotlin-sample/pom.xml                 |  80 ++++++++
 .../logging/log4j/kotlin/sample/LoggingApp.kt   |  49 +++++
 .../src/main/resources/log4j2.xml               |  32 +++
 log4j-api-kotlin/pom.xml                        | 152 ++++++++++++++
 .../org/apache/logging/log4j/kotlin/Logger.kt   | 175 ++++++++++++++++
 .../org/apache/logging/log4j/kotlin/Logging.kt  |  33 +++
 .../LoggerTest.kt                               |  21 ++
 pom.xml                                         |  50 +++++
 12 files changed, 829 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/fc43d3f5/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..3d542f9
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,12 @@
+.project
+.idea
+**/*.iml
+**/target
+target/
+.settings
+.classpath
+.cache-main
+.cache-tests
+velocity.log
+felix-cache/
+bin/

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/fc43d3f5/LICENSE.txt
----------------------------------------------------------------------
diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644
index 0000000..6279e52
--- /dev/null
+++ b/LICENSE.txt
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright 1999-2005 The Apache Software Foundation
+
+   Licensed 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.

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/fc43d3f5/NOTICE.txt
----------------------------------------------------------------------
diff --git a/NOTICE.txt b/NOTICE.txt
new file mode 100644
index 0000000..3b3bcf3
--- /dev/null
+++ b/NOTICE.txt
@@ -0,0 +1,5 @@
+Apache Log4j
+Copyright 2016 Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/fc43d3f5/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..df3b2f3
--- /dev/null
+++ b/README.md
@@ -0,0 +1,18 @@
+# [Apache Log4j 2 Kotlin API](http://logging.apache.org/log4j/2.x/)
+
+## License
+
+Apache Log4j 2 is distributed under the [Apache License, version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html).
+
+## Download
+
+[How to download Log4j](http://logging.apache.org/log4j/2.x/download.html),
+and [how to use it from SBT, Maven, Ivy and Gradle](http://logging.apache.org/log4j/2.x/maven-artifacts.html).
+
+## Issue Tracking
+
+Issues, bugs, and feature requests should be submitted to the 
+[JIRA issue tracking system for this project](https://issues.apache.org/jira/browse/LOG4J2).
+
+Pull request on GitHub are welcome, but please open a ticket in the JIRA issue tracker first, and mention the 
+JIRA issue in the Pull Request.

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/fc43d3f5/log4j-api-kotlin-sample/pom.xml
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin-sample/pom.xml b/log4j-api-kotlin-sample/pom.xml
new file mode 100644
index 0000000..510118c
--- /dev/null
+++ b/log4j-api-kotlin-sample/pom.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0"?>
+<!--
+ 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.logging.log4j</groupId>
+    <artifactId>log4j-kotlin</artifactId>
+    <version>2.7.1-SNAPSHOT</version>
+    <relativePath>../</relativePath>
+  </parent>
+  <artifactId>log4j-api-kotlin-sample</artifactId>
+  <packaging>jar</packaging>
+  <name>Kotlin API samples</name>
+  <url>http://http://logging.apache.org/log4j/2.x/</url>
+  <properties>
+    <kotlin.version>1.0.5</kotlin.version>
+  </properties>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-api-kotlin</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-core</artifactId>
+      <scope>runtime</scope>
+    </dependency>
+  </dependencies>
+  <build>
+    <sourceDirectory>src/main/kotlin</sourceDirectory>
+    <plugins>
+      <plugin>
+        <artifactId>kotlin-maven-plugin</artifactId>
+        <groupId>org.jetbrains.kotlin</groupId>
+        <version>${kotlin.version}</version>
+        <executions>
+          <execution>
+            <id>compile</id>
+            <goals>
+              <goal>compile</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>test-compile</id>
+            <goals>
+              <goal>test-compile</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>exec-maven-plugin</artifactId>
+        <version>1.5.0</version>
+        <configuration>
+          <mainClass>org.apache.logging.log4j.kotlin.sample.LoggingApp</mainClass>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-bundle-plugin</artifactId>
+      </plugin>
+    </plugins>
+  </build>
+</project>

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/fc43d3f5/log4j-api-kotlin-sample/src/main/kotlin/org/apache/logging/log4j/kotlin/sample/LoggingApp.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin-sample/src/main/kotlin/org/apache/logging/log4j/kotlin/sample/LoggingApp.kt b/log4j-api-kotlin-sample/src/main/kotlin/org/apache/logging/log4j/kotlin/sample/LoggingApp.kt
new file mode 100644
index 0000000..33f9d0e
--- /dev/null
+++ b/log4j-api-kotlin-sample/src/main/kotlin/org/apache/logging/log4j/kotlin/sample/LoggingApp.kt
@@ -0,0 +1,49 @@
+/*
+ * 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.sample
+
+import org.apache.logging.log4j.Level
+import org.apache.logging.log4j.kotlin.logger
+
+object LoggingApp {
+  val log by logger()
+
+  @JvmStatic
+  fun main(args: Array<String>) {
+    val s1 = "foo"
+    val s2 = "bar"
+    val t = RuntimeException("error")
+
+    log.info { "Hello, world: $s1 $s2" }
+
+    log.traceEntry()
+    log.traceEntry(s1, s2)
+    val entryMessage = log.traceEntry("foobar", "")
+
+    log.traceExit()
+    log.traceExit(s2)
+    log.traceExit(entryMessage)
+    log.traceExit(entryMessage, s2)
+    log.traceExit("bonsai", s2)
+
+    log.throwing(t)
+    log.throwing(Level.INFO, t)
+
+    log.catching(t)
+
+  }
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/fc43d3f5/log4j-api-kotlin-sample/src/main/resources/log4j2.xml
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin-sample/src/main/resources/log4j2.xml b/log4j-api-kotlin-sample/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..04682ff
--- /dev/null
+++ b/log4j-api-kotlin-sample/src/main/resources/log4j2.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+
+-->
+<Configuration name="KotlinApiSample" status="error">
+  <Appenders>
+    <Console name="Console">
+      <PatternLayout>
+        <Pattern>%d %5p %c{1} %X %F:%L - %m%n</Pattern>
+      </PatternLayout>
+    </Console>
+  </Appenders>
+  <Loggers>
+    <Root level="TRACE">
+      <AppenderRef ref="Console"/>
+    </Root>
+  </Loggers>
+</Configuration>

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/fc43d3f5/log4j-api-kotlin/pom.xml
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/pom.xml b/log4j-api-kotlin/pom.xml
new file mode 100644
index 0000000..f55796a
--- /dev/null
+++ b/log4j-api-kotlin/pom.xml
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.logging.log4j</groupId>
+    <artifactId>log4j-kotlin</artifactId>
+    <version>2.7.1-SNAPSHOT</version>
+    <relativePath>../</relativePath>
+  </parent>
+  <artifactId>log4j-api-kotlin</artifactId>
+  <packaging>jar</packaging>
+  <name>Kotlin wrapper for Log4j API</name>
+  <description>Kotlin wrapper for Log4j API</description>
+  <properties>
+    <log4jParentDir>${basedir}/..</log4jParentDir>
+    <kotlin.version>1.0.5</kotlin.version>
+  </properties>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-core</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.jetbrains.kotlin</groupId>
+      <artifactId>kotlin-stdlib</artifactId>
+      <version>${kotlin.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.jetbrains.kotlin</groupId>
+      <artifactId>kotlin-reflect</artifactId>
+      <version>${kotlin.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-api</artifactId>
+      <type>test-jar</type>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>com.nhaarman</groupId>
+      <artifactId>mockito-kotlin</artifactId>
+      <version>0.12.0</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  <build>
+    <sourceDirectory>src/main/kotlin</sourceDirectory>
+    <testSourceDirectory>src/test/kotlin</testSourceDirectory>
+    <plugins>
+      <plugin>
+        <artifactId>kotlin-maven-plugin</artifactId>
+        <groupId>org.jetbrains.kotlin</groupId>
+        <version>${kotlin.version}</version>
+        <executions>
+          <execution>
+            <id>compile</id>
+            <goals>
+              <goal>compile</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>test-compile</id>
+            <goals>
+              <goal>test-compile</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+      </plugin>
+      <!-- Include the standard NOTICE and LICENSE -->
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-remote-resources-plugin</artifactId>
+        <executions>
+          <execution>
+            <goals>
+              <goal>process</goal>
+            </goals>
+            <configuration>
+              <skip>false</skip>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-bundle-plugin</artifactId>
+      </plugin>
+    </plugins>
+  </build>
+  <reporting>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-changes-plugin</artifactId>
+        <version>${changes.plugin.version}</version>
+        <reportSets>
+          <reportSet>
+            <reports>
+              <report>changes-report</report>
+            </reports>
+          </reportSet>
+        </reportSets>
+        <configuration>
+          <issueLinkTemplate>%URL%/show_bug.cgi?id=%ISSUE%</issueLinkTemplate>
+          <useJql>true</useJql>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-pmd-plugin</artifactId>
+        <version>${pmd.plugin.version}</version>
+        <configuration>
+          <targetJdk>${maven.compile.target}</targetJdk>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.jetbrains.kotlin</groupId>
+        <artifactId>kotlin-maven-plugin</artifactId>
+        <version>${kotlin.version}</version>
+      </plugin>
+    </plugins>
+  </reporting>
+</project>

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/fc43d3f5/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt
new file mode 100644
index 0000000..8e32d54
--- /dev/null
+++ b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt
@@ -0,0 +1,175 @@
+/*
+ * 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.spi.ExtendedLogger
+import org.apache.logging.log4j.util.Supplier
+import kotlin.properties.ReadOnlyProperty
+import kotlin.reflect.KProperty
+import kotlin.reflect.companionObject
+
+/**
+ * An adapter supporting cleaner syntax when calling a logger with a Kotlin lambda. 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 explicitly take a Kotlin Lambda, 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." }
+ * ```
+ */
+class FunctionalLogger(val log: ExtendedLogger): ReadOnlyProperty<Any?, FunctionalLogger>, Logger by log {
+  companion object {
+    @Suppress("NOTHING_TO_INLINE")
+    inline fun <T: Any?> (() -> T).asLog4jSupplier(): Supplier<T> = Supplier { invoke() }
+  }
+
+  // allows access to FunctionalLogger as a property delegate
+  override operator fun getValue(thisRef: Any?, property: KProperty<*>) = this
+
+  inline fun trace(crossinline supplier: () -> Any?) {
+    log.trace(supplier.asLog4jSupplier())
+  }
+
+  inline fun trace(t: Throwable, crossinline supplier: () -> Any?) {
+    log.trace(supplier.asLog4jSupplier(), t)
+  }
+
+  inline fun trace(marker: Marker?, crossinline supplier: () -> Any?) {
+    log.trace(marker, supplier.asLog4jSupplier())
+  }
+
+  inline fun trace(marker: Marker?, t: Throwable?, crossinline supplier: () -> Any?) {
+    log.trace(marker, supplier.asLog4jSupplier(), t)
+  }
+
+  inline fun debug(crossinline supplier: () -> Any?) {
+    log.debug(supplier.asLog4jSupplier())
+  }
+
+  inline fun debug(t: Throwable, crossinline supplier: () -> Any?) {
+    log.debug(supplier.asLog4jSupplier(), t)
+  }
+
+  inline fun debug(marker: Marker?, crossinline supplier: () -> Any?) {
+    log.debug(marker, supplier.asLog4jSupplier())
+  }
+
+  inline fun debug(marker: Marker?, t: Throwable?, crossinline supplier: () -> Any?) {
+    log.debug(marker, supplier.asLog4jSupplier(), t)
+  }
+
+  inline fun info(crossinline supplier: () -> Any?) {
+    log.info(supplier.asLog4jSupplier())
+  }
+
+  inline fun info(t: Throwable, crossinline supplier: () -> Any?) {
+    log.info(supplier.asLog4jSupplier(), t)
+  }
+
+  inline fun info(marker: Marker?, crossinline supplier: () -> Any?) {
+    log.info(marker, supplier.asLog4jSupplier())
+  }
+
+  inline fun info(marker: Marker?, t: Throwable?, crossinline supplier: () -> Any?) {
+    log.info(marker, supplier.asLog4jSupplier(), t)
+  }
+
+  inline fun warn(crossinline supplier: () -> Any?) {
+    log.warn(supplier.asLog4jSupplier())
+  }
+
+  inline fun warn(t: Throwable, crossinline supplier: () -> Any?) {
+    log.warn(supplier.asLog4jSupplier(), t)
+  }
+
+  inline fun warn(marker: Marker?, crossinline supplier: () -> Any?) {
+    log.warn(marker, supplier.asLog4jSupplier())
+  }
+
+  inline fun warn(marker: Marker?, t: Throwable?, crossinline supplier: () -> Any?) {
+    log.warn(marker, supplier.asLog4jSupplier(), t)
+  }
+
+  inline fun error(crossinline supplier: () -> Any?) {
+    log.error(supplier.asLog4jSupplier())
+  }
+
+  inline fun error(t: Throwable, crossinline supplier: () -> Any?) {
+    log.error(supplier.asLog4jSupplier(), t)
+  }
+
+  inline fun error(marker: Marker?, crossinline supplier: () -> Any?) {
+    log.error(marker, supplier.asLog4jSupplier())
+  }
+
+  inline fun error(marker: Marker?, t: Throwable?, crossinline supplier: () -> Any?) {
+    log.error(marker, supplier.asLog4jSupplier(), t)
+  }
+
+  inline fun fatal(crossinline supplier: () -> Any?) {
+    log.fatal(supplier.asLog4jSupplier())
+  }
+
+  inline fun fatal(t: Throwable, crossinline supplier: () -> Any?) {
+    log.fatal(supplier.asLog4jSupplier(), t)
+  }
+
+  inline fun fatal(marker: Marker?, crossinline supplier: () -> Any?) {
+    log.fatal(marker, supplier.asLog4jSupplier())
+  }
+
+  inline fun fatal(marker: Marker?, t: Throwable?, crossinline supplier: () -> Any?) {
+    log.fatal(marker, supplier.asLog4jSupplier(), t)
+  }
+}
+
+/**
+ * A delegate-based logger instantiation. Use: `val log by logger()`.
+ */
+@Suppress("unused")
+inline fun <reified T : Any> T.logger(): FunctionalLogger =
+  FunctionalLogger(LogManager.getContext(T::class.java.classLoader, false).getLogger(unwrapCompanionClass(T::class.java).name))
+
+// unwrap companion class to enclosing class given a Java Class
+fun <T : Any> unwrapCompanionClass(ofClass: Class<T>): Class<*> {
+  return if (ofClass.enclosingClass?.kotlin?.companionObject?.java == ofClass) {
+    ofClass.enclosingClass
+  } else {
+    ofClass
+  }
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/fc43d3f5/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logging.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logging.kt b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logging.kt
new file mode 100644
index 0000000..e2b95b4
--- /dev/null
+++ b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logging.kt
@@ -0,0 +1,33 @@
+package org.apache.logging.log4j.kotlin
+
+import org.apache.logging.log4j.Logger
+
+/**
+ * An interface-based "mixin" to easily add a log val to a class, named by the enclosing class. This allows
+ * code like this:
+ *
+ * ```
+ * import org.apache.logging.log4j.kotlin.Logging
+ *
+ * class MyClass: Logging {
+ *   override val log: Logger = logger()
+ * }
+ *
+ * ```
+ *
+ * A simpler mechanism is to use the delegated property extension directly, like:
+ *
+ * ```
+ * import org.apache.logging.log4j.kotlin.logger
+ *
+ * class MyClass {
+ *   val log by logger()
+ * }
+ *
+ * ```
+ */
+interface Logging {
+  val log: Logger
+
+  fun logger(): Logger = this.javaClass.logger()
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/fc43d3f5/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt
new file mode 100644
index 0000000..5abf847
--- /dev/null
+++ b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt
@@ -0,0 +1,21 @@
+/*
+ * 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
+
+class LoggerTest {
+  // TODO
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/fc43d3f5/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..422428c
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ 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.
+  -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>log4j-kotlin</artifactId>
+  <packaging>pom</packaging>
+  <name>Apache Log4j 2 Kotlin API</name>
+  <version>2.7.1-SNAPSHOT</version>
+  <parent>
+    <groupId>org.apache.logging.log4j</groupId>
+    <artifactId>log4j</artifactId>
+    <version>2.7.1-SNAPSHOT</version>
+  </parent>
+  <description>Apache Log4j 2 Kotlin API</description>
+  <url>http://logging.apache.org/log4j/2.x/</url>
+  <scm>
+    <connection>scm:git:http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin.git</connection>
+    <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin.git</developerConnection>
+    <url>https://git-wip-us.apache.org/repos/asf?p=logging-log4j-kotlin.git;a=summary</url>
+    <tag>log4j-${Log4jReleaseVersion}</tag>
+  </scm>
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>org.apache.logging.log4j</groupId>
+        <artifactId>log4j-api-kotlin</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+  <modules>
+    <module>log4j-api-kotlin</module>
+    <module>log4j-api-kotlin-sample</module>
+  </modules>
+</project>


[04/25] logging-log4j-kotlin git commit: Update Kotlin version to 1.1.60

Posted by ma...@apache.org.
Update Kotlin version to 1.1.60


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/000c1116
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/tree/000c1116
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/diff/000c1116

Branch: refs/heads/master
Commit: 000c111626457fe651b9162584e8848c58162245
Parents: 5c64cf4
Author: Raman Gupta <ro...@gmail.com>
Authored: Thu Nov 23 20:29:46 2017 -0500
Committer: Raman Gupta <ro...@gmail.com>
Committed: Thu Nov 23 20:29:46 2017 -0500

----------------------------------------------------------------------
 log4j-api-kotlin-sample/pom.xml | 5 ++---
 log4j-api-kotlin/pom.xml        | 7 +++++--
 pom.xml                         | 3 +--
 3 files changed, 8 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/000c1116/log4j-api-kotlin-sample/pom.xml
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin-sample/pom.xml b/log4j-api-kotlin-sample/pom.xml
index 510118c..811bb9c 100644
--- a/log4j-api-kotlin-sample/pom.xml
+++ b/log4j-api-kotlin-sample/pom.xml
@@ -27,9 +27,7 @@
   <packaging>jar</packaging>
   <name>Kotlin API samples</name>
   <url>http://http://logging.apache.org/log4j/2.x/</url>
-  <properties>
-    <kotlin.version>1.0.5</kotlin.version>
-  </properties>
+
   <dependencies>
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
@@ -41,6 +39,7 @@
       <scope>runtime</scope>
     </dependency>
   </dependencies>
+
   <build>
     <sourceDirectory>src/main/kotlin</sourceDirectory>
     <plugins>

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/000c1116/log4j-api-kotlin/pom.xml
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/pom.xml b/log4j-api-kotlin/pom.xml
index d0c62a6..4460b9e 100644
--- a/log4j-api-kotlin/pom.xml
+++ b/log4j-api-kotlin/pom.xml
@@ -27,10 +27,11 @@
   <packaging>jar</packaging>
   <name>Kotlin wrapper for Log4j API</name>
   <description>Kotlin wrapper for Log4j API</description>
+
   <properties>
     <log4jParentDir>${basedir}/..</log4jParentDir>
-    <kotlin.version>1.0.5</kotlin.version>
   </properties>
+
   <dependencies>
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
@@ -60,10 +61,11 @@
     <dependency>
       <groupId>com.nhaarman</groupId>
       <artifactId>mockito-kotlin</artifactId>
-      <version>0.12.0</version>
+      <version>1.2.0</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
+
   <build>
     <sourceDirectory>src/main/kotlin</sourceDirectory>
     <testSourceDirectory>src/test/kotlin</testSourceDirectory>
@@ -112,6 +114,7 @@
       </plugin>
     </plugins>
   </build>
+
   <reporting>
     <plugins>
       <plugin>

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/000c1116/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 0453ad0..a251e55 100644
--- a/pom.xml
+++ b/pom.xml
@@ -36,10 +36,9 @@
   </scm>
 
   <properties>
-    <kotlin.version>1.0.5-2</kotlin.version>
+    <kotlin.version>1.1.60</kotlin.version>
   </properties>
 
-
   <dependencyManagement>
     <dependencies>
       <dependency>


[16/25] logging-log4j-kotlin git commit: KotlinLogger drops parameterized methods

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/f5b067f8/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
index 92c020c..853ea9c 100644
--- 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
@@ -17,28 +17,20 @@
 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.
+ * An adapter supporting cleaner syntax when calling a logger via Kotlin. This differs from
+ * [KotlinCompleteLogger] in that it does not implement the Log4j2 [Logger] interface, but instead
+ * limits logging methods to those that would be natural to use from Kotlin. For example,
+ * the various logging-parameter methods necessary for Java are eschewed in favor of Kotlin
+ * lambdas and String interpolation.
  *
- * 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
+ * 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.:
  *
  * ```
@@ -53,529 +45,236 @@ import kotlin.reflect.full.companionObject
  * log.error(exc) { "Unexpected exception evaluating $whatever." }
  * ```
  *
- * Finally, the adapter also provides a `runInTrace` utility that avoids having to call traceEnter and traceExit
+ * 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.
+ * Lastly, the ExtendedLogger delegate is available if the underlying Log4j Logger is needed for some reason.
+ * Access it via the `delegate` property.
  *
- * TODO: The ExtendedLogger interface does not yet have support for trace entry and exit with FQCN specification.
+ * TODO: The ExtendedLogger delegate 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 {
+class KotlinLogger(val delegate: ExtendedLogger) {
   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?) {
+  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?) {
+  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?) {
+  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?) {
+  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?) {
+  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?)
+  fun log(level: Level, marker: Marker?, msg: Any?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, level, marker, msg, t)
   }
 
-  override fun log(level: Level, marker: Marker?, msg: String?, vararg params: Any?) {
-    delegate.logIfEnabled(FQCN, level, marker, msg, *params)
+  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?, t: Throwable?) {
+  fun log(level: Level, marker: Marker?, msg: String?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, level, marker, msg, t)
   }
 
-  override fun log(level: Level, msg: Message?) {
+  fun log(level: Level, msg: Message?) {
     delegate.logIfEnabled(FQCN, level, null, msg, null)
   }
 
-  override fun log(level: Level, msg: Message?, t: Throwable?) {
+  fun log(level: Level, msg: Message?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, level, null, msg, t)
   }
 
-  override fun log(level: Level, msg: CharSequence?) {
+  fun log(level: Level, msg: CharSequence?) {
     delegate.logIfEnabled(FQCN, level, null, msg, null)
   }
 
-  override fun log(level: Level, msg: CharSequence?, t: Throwable?) {
+  fun log(level: Level, msg: CharSequence?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, level, null, msg, t)
   }
 
-  override fun log(level: Level, msg: Any?) {
+  fun log(level: Level, msg: Any?) {
     delegate.logIfEnabled(FQCN, level, null, msg, null)
   }
 
-  override fun log(level: Level, msg: Any?, t: Throwable?) {
+  fun log(level: Level, msg: Any?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, level, null, msg, t)
   }
 
-  override fun log(level: Level, msg: String?) {
+  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?) {
+  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?) {
+  fun trace(marker: Marker?, msg: Message?) {
     delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, null)
   }
 
-  override fun trace(marker: Marker?, msg: Message?, t: Throwable?) {
+  fun trace(marker: Marker?, msg: Message?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, t)
   }
 
-  override fun trace(marker: Marker?, msg: CharSequence?) {
+  fun trace(marker: Marker?, msg: CharSequence?) {
     delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, null)
   }
 
-  override fun trace(marker: Marker?, msg: CharSequence?, t: Throwable?) {
+  fun trace(marker: Marker?, msg: CharSequence?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, t)
   }
 
-  override fun trace(marker: Marker?, msg: Any?) {
+  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?)
+  fun trace(marker: Marker?, msg: Any?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, t)
   }
 
-  override fun trace(marker: Marker?, msg: String?, vararg params: Any?) {
-    delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, *params)
+  fun trace(marker: Marker?, msg: String?) {
+    delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, null as Throwable?)
   }
 
-  override fun trace(marker: Marker?, msg: String?, t: Throwable?) {
+  fun trace(marker: Marker?, msg: String?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, t)
   }
 
-  override fun trace(msg: Message?) {
+  fun trace(msg: Message?) {
     delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, null)
   }
 
-  override fun trace(msg: Message?, t: Throwable?) {
+  fun trace(msg: Message?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, t)
   }
 
-  override fun trace(msg: CharSequence?) {
+  fun trace(msg: CharSequence?) {
     delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, null)
   }
 
-  override fun trace(msg: CharSequence?, t: Throwable?) {
+  fun trace(msg: CharSequence?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, t)
   }
 
-  override fun trace(msg: Any?) {
+  fun trace(msg: Any?) {
     delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, null)
   }
 
-  override fun trace(msg: Any?, t: Throwable?) {
+  fun trace(msg: Any?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, t)
   }
 
-  override fun trace(msg: String?) {
+  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?) {
+  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 {
+  // TODO kotlin-ize these
+  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 {
+  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 {
+  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() {
+  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 {
+  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 {
+  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?) {
+  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 {
+  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 {
+  fun <R : Any?> traceExit(message: EntryMessage?, result: R): R {
     return delegate.traceExit(message, result)
   }
 
@@ -592,1108 +291,409 @@ class KotlinLogger(private val delegate: ExtendedLogger): Logger by delegate {
       }
       result
     } catch (e: Throwable) {
-      catching(e)
+      delegate.catching(e)
       throw e
     }
   }
 
-  override fun debug(marker: Marker?, msg: Message?) {
+  fun debug(marker: Marker?, msg: Message?) {
     delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, null)
   }
 
-  override fun debug(marker: Marker?, msg: Message?, t: Throwable?) {
+  fun debug(marker: Marker?, msg: Message?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, t)
   }
 
-  override fun debug(marker: Marker?, msg: CharSequence?) {
+  fun debug(marker: Marker?, msg: CharSequence?) {
     delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, null)
   }
 
-  override fun debug(marker: Marker?, msg: CharSequence?, t: Throwable?) {
+  fun debug(marker: Marker?, msg: CharSequence?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, t)
   }
 
-  override fun debug(marker: Marker?, msg: Any?) {
+  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?)
+  fun debug(marker: Marker?, msg: Any?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, t)
   }
 
-  override fun debug(marker: Marker?, msg: String?, vararg params: Any?) {
-    delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, *params)
+  fun debug(marker: Marker?, msg: String?) {
+    delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, null as Throwable?)
   }
 
-  override fun debug(marker: Marker?, msg: String?, t: Throwable?) {
+  fun debug(marker: Marker?, msg: String?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, t)
   }
 
-  override fun debug(msg: Message?) {
+  fun debug(msg: Message?) {
     delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, null)
   }
 
-  override fun debug(msg: Message?, t: Throwable?) {
+  fun debug(msg: Message?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, t)
   }
 
-  override fun debug(msg: CharSequence?) {
+  fun debug(msg: CharSequence?) {
     delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, null)
   }
 
-  override fun debug(msg: CharSequence?, t: Throwable?) {
+  fun debug(msg: CharSequence?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, t)
   }
 
-  override fun debug(msg: Any?) {
+  fun debug(msg: Any?) {
     delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, null)
   }
 
-  override fun debug(msg: Any?, t: Throwable?) {
+  fun debug(msg: Any?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, t)
   }
 
-  override fun debug(msg: String?) {
+  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?) {
+  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?) {
+  fun info(marker: Marker?, msg: Message?) {
     delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, null)
   }
 
-  override fun info(marker: Marker?, msg: Message?, t: Throwable?) {
+  fun info(marker: Marker?, msg: Message?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, t)
   }
 
-  override fun info(marker: Marker?, msg: CharSequence?) {
+  fun info(marker: Marker?, msg: CharSequence?) {
     delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, null)
   }
 
-  override fun info(marker: Marker?, msg: CharSequence?, t: Throwable?) {
+  fun info(marker: Marker?, msg: CharSequence?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, t)
   }
 
-  override fun info(marker: Marker?, msg: Any?) {
+  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?)
+  fun info(marker: Marker?, msg: Any?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, t)
   }
 
-  override fun info(marker: Marker?, msg: String?, vararg params: Any?) {
-    delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, *params)
+  fun info(marker: Marker?, msg: String?) {
+    delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, null as Throwable?)
   }
 
-  override fun info(marker: Marker?, msg: String?, t: Throwable?) {
+  fun info(marker: Marker?, msg: String?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, t)
   }
 
-  override fun info(msg: Message?) {
+  fun info(msg: Message?) {
     delegate.logIfEnabled(FQCN, Level.INFO, null, msg, null)
   }
 
-  override fun info(msg: Message?, t: Throwable?) {
+  fun info(msg: Message?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.INFO, null, msg, t)
   }
 
-  override fun info(msg: CharSequence?) {
+  fun info(msg: CharSequence?) {
     delegate.logIfEnabled(FQCN, Level.INFO, null, msg, null)
   }
 
-  override fun info(msg: CharSequence?, t: Throwable?) {
+  fun info(msg: CharSequence?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.INFO, null, msg, t)
   }
 
-  override fun info(msg: Any?) {
+  fun info(msg: Any?) {
     delegate.logIfEnabled(FQCN, Level.INFO, null, msg, null)
   }
 
-  override fun info(msg: Any?, t: Throwable?) {
+  fun info(msg: Any?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.INFO, null, msg, t)
   }
 
-  override fun info(msg: String?) {
+  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?) {
+  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?) {
+  fun warn(marker: Marker?, msg: Message?) {
     delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, null)
   }
 
-  override fun warn(marker: Marker?, msg: Message?, t: Throwable?) {
+  fun warn(marker: Marker?, msg: Message?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, t)
   }
 
-  override fun warn(marker: Marker?, msg: CharSequence?) {
+  fun warn(marker: Marker?, msg: CharSequence?) {
     delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, null)
   }
 
-  override fun warn(marker: Marker?, msg: CharSequence?, t: Throwable?) {
+  fun warn(marker: Marker?, msg: CharSequence?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, t)
   }
 
-  override fun warn(marker: Marker?, msg: Any?) {
+  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?)
+  fun warn(marker: Marker?, msg: Any?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, t)
   }
 
-  override fun warn(marker: Marker?, msg: String?, vararg params: Any?) {
-    delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, *params)
+  fun warn(marker: Marker?, msg: String?) {
+    delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, null as Throwable?)
   }
 
-  override fun warn(marker: Marker?, msg: String?, t: Throwable?) {
+  fun warn(marker: Marker?, msg: String?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, t)
   }
 
-  override fun warn(msg: Message?) {
+  fun warn(msg: Message?) {
     delegate.logIfEnabled(FQCN, Level.WARN, null, msg, null)
   }
 
-  override fun warn(msg: Message?, t: Throwable?) {
+  fun warn(msg: Message?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.WARN, null, msg, t)
   }
 
-  override fun warn(msg: CharSequence?) {
+  fun warn(msg: CharSequence?) {
     delegate.logIfEnabled(FQCN, Level.WARN, null, msg, null)
   }
 
-  override fun warn(msg: CharSequence?, t: Throwable?) {
+  fun warn(msg: CharSequence?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.WARN, null, msg, t)
   }
 
-  override fun warn(msg: Any?) {
+  fun warn(msg: Any?) {
     delegate.logIfEnabled(FQCN, Level.WARN, null, msg, null)
   }
 
-  override fun warn(msg: Any?, t: Throwable?) {
+  fun warn(msg: Any?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.WARN, null, msg, t)
   }
 
-  override fun warn(msg: String?) {
+  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?) {
+  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?) {
+  fun error(marker: Marker?, msg: Message?) {
     delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, null)
   }
 
-  override fun error(marker: Marker?, msg: Message?, t: Throwable?) {
+  fun error(marker: Marker?, msg: Message?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, t)
   }
 
-  override fun error(marker: Marker?, msg: CharSequence?) {
+  fun error(marker: Marker?, msg: CharSequence?) {
     delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, null)
   }
 
-  override fun error(marker: Marker?, msg: CharSequence?, t: Throwable?) {
+  fun error(marker: Marker?, msg: CharSequence?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, t)
   }
 
-  override fun error(marker: Marker?, msg: Any?) {
+  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?)
+  fun error(marker: Marker?, msg: Any?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, t)
   }
 
-  override fun error(marker: Marker?, msg: String?, vararg params: Any?) {
-    delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, *params)
+  fun error(marker: Marker?, msg: String?) {
+    delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, null as Throwable?)
   }
 
-  override fun error(marker: Marker?, msg: String?, t: Throwable?) {
+  fun error(marker: Marker?, msg: String?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, t)
   }
 
-  override fun error(msg: Message?) {
+  fun error(msg: Message?) {
     delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, null)
   }
 
-  override fun error(msg: Message?, t: Throwable?) {
+  fun error(msg: Message?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, t)
   }
 
-  override fun error(msg: CharSequence?) {
+  fun error(msg: CharSequence?) {
     delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, null)
   }
 
-  override fun error(msg: CharSequence?, t: Throwable?) {
+  fun error(msg: CharSequence?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, t)
   }
 
-  override fun error(msg: Any?) {
+  fun error(msg: Any?) {
     delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, null)
   }
 
-  override fun error(msg: Any?, t: Throwable?) {
+  fun error(msg: Any?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, t)
   }
 
-  override fun error(msg: String?) {
+  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?) {
+  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?) {
+  fun fatal(marker: Marker?, msg: Message?) {
     delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, null)
   }
 
-  override fun fatal(marker: Marker?, msg: Message?, t: Throwable?) {
+  fun fatal(marker: Marker?, msg: Message?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, t)
   }
 
-  override fun fatal(marker: Marker?, msg: CharSequence?) {
+  fun fatal(marker: Marker?, msg: CharSequence?) {
     delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, null)
   }
 
-  override fun fatal(marker: Marker?, msg: CharSequence?, t: Throwable?) {
+  fun fatal(marker: Marker?, msg: CharSequence?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, t)
   }
 
-  override fun fatal(marker: Marker?, msg: Any?) {
+  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?)
+  fun fatal(marker: Marker?, msg: Any?, t: Throwable?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, t)
   }
 
-  override fun fatal(marker: Marker?, msg: String?, vararg params: Any?) {
-    delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, *params)
+  fun fatal(marker: Marker?, msg: String?) {
+    delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, null as Throwable?)
   }
 
-  override fun fatal(marker: Marker?, msg: String?, t: Throwable?) {
+  fun fatal(marker: Marker?, msg: String?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, t)
   }
 
-  override fun fatal(msg: Message?) {
+  fun fatal(msg: Message?) {
     delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, null)
   }
 
-  override fun fatal(msg: Message?, t: Throwable?) {
+  fun fatal(msg: Message?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, t)
   }
 
-  override fun fatal(msg: CharSequence?) {
+  fun fatal(msg: CharSequence?) {
     delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, null)
   }
 
-  override fun fatal(msg: CharSequence?, t: Throwable?) {
+  fun fatal(msg: CharSequence?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, t)
   }
 
-  override fun fatal(msg: Any?) {
+  fun fatal(msg: Any?) {
     delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, null)
   }
 
-  override fun fatal(msg: Any?, t: Throwable?) {
+  fun fatal(msg: Any?, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, t)
   }
 
-  override fun fatal(msg: String?) {
+  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?) {
+  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)
-  }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/f5b067f8/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/LoggingFactory.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/LoggingFactory.kt b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/LoggingFactory.kt
index 0a8dde0..4824c4f 100644
--- a/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/LoggingFactory.kt
+++ b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/LoggingFactory.kt
@@ -17,6 +17,7 @@
 package org.apache.logging.log4j.kotlin
 
 import org.apache.logging.log4j.LogManager
+import org.apache.logging.log4j.spi.ExtendedLogger
 import kotlin.reflect.full.companionObject
 
 /**
@@ -25,8 +26,22 @@ import kotlin.reflect.full.companionObject
 @Suppress("unused")
 inline fun <reified T : Any> T.logger() = loggerOf(T::class.java)
 
+/**
+ * Logger instantiation by function. Use: `val log = logger()`.
+ */
+@Suppress("unused")
+inline fun <reified T : Any> T.completeLogger() = completeLoggerOf(T::class.java)
+
+fun loggerDelegateOf(ofClass: Class<*>): ExtendedLogger {
+  return LogManager.getContext(ofClass.classLoader, false).getLogger(unwrapCompanionClass(ofClass).name)
+}
+
 fun loggerOf(ofClass: Class<*>): KotlinLogger {
-  return KotlinLogger(LogManager.getContext(ofClass.classLoader, false).getLogger(unwrapCompanionClass(ofClass).name))
+  return KotlinLogger(loggerDelegateOf(ofClass))
+}
+
+fun completeLoggerOf(ofClass: Class<*>): KotlinCompleteLogger {
+  return KotlinCompleteLogger(loggerDelegateOf(ofClass))
 }
 
 // unwrap companion class to enclosing class given a Java Class

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/f5b067f8/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Suppliers.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Suppliers.kt b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Suppliers.kt
new file mode 100644
index 0000000..57bbf55
--- /dev/null
+++ b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Suppliers.kt
@@ -0,0 +1,7 @@
+package org.apache.logging.log4j.kotlin
+
+import org.apache.logging.log4j.util.Supplier
+
+fun <T: Any?> (() -> T).asLog4jSupplier(): Supplier<T> = Supplier { invoke() }
+
+fun <T: Any?> (Array<out () -> T>).asLog4jSuppliers(): Array<Supplier<T>> = map { it.asLog4jSupplier() }.toTypedArray()


[19/25] logging-log4j-kotlin git commit: Simplify traceEntry/traceExit

Posted by ma...@apache.org.
Simplify traceEntry/traceExit


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/e4243b9e
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/tree/e4243b9e
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/diff/e4243b9e

Branch: refs/heads/master
Commit: e4243b9eab12977eb254c01b90dd843853ff4cc0
Parents: db30ecb
Author: Raman Gupta <ro...@gmail.com>
Authored: Fri Mar 2 00:24:47 2018 -0500
Committer: Raman Gupta <ro...@gmail.com>
Committed: Fri Mar 2 00:26:03 2018 -0500

----------------------------------------------------------------------
 .../apache/logging/log4j/kotlin/KotlinLogger.kt | 52 +++++---------------
 1 file changed, 11 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/e4243b9e/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
index eff1497..2b74b61 100644
--- 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
@@ -21,6 +21,7 @@ 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.message.SimpleMessage
 import org.apache.logging.log4j.spi.ExtendedLogger
 
 /**
@@ -195,23 +196,21 @@ class KotlinLogger(val delegate: ExtendedLogger) {
   }
 
   // TODO entry with fqcn is not part of the ExtendedLogger interface, location-awareness will be broken
-  // TODO kotlin-ize these
-  fun traceEntry(): EntryMessage {
-    return delegate.traceEntry()
+  fun traceEntry(msg: CharSequence): EntryMessage {
+    return delegate.traceEntry(SimpleMessage(msg))
   }
 
   // TODO entry with fqcn is not part of the ExtendedLogger interface, location-awareness will be broken
-  fun traceEntry(format: String?, vararg params: Any?): EntryMessage {
-    return delegate.traceEntry(format, *params)
+  fun traceEntry(supplier: () -> CharSequence): EntryMessage? {
+    return if(delegate.isTraceEnabled) delegate.traceEntry(SimpleMessage(supplier())) else null
   }
 
   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
-  fun traceEntry(format: String?, vararg paramSuppliers: () -> Any?): EntryMessage {
-    return delegate.traceEntry(format, *paramSuppliers.asLog4jSuppliers())
+  fun traceEntry(vararg params: Any?): EntryMessage {
+    return delegate.traceEntry(null, params)
   }
 
   // TODO entry with fqcn is not part of the ExtendedLogger interface, location-awareness will be broken
@@ -219,46 +218,17 @@ class KotlinLogger(val delegate: ExtendedLogger) {
     return delegate.traceEntry(message)
   }
 
-  // TODO exit with fqcn is not part of the ExtendedLogger interface, location-awareness will be broken
-  fun traceExit() {
-    delegate.traceExit()
-  }
-
-  // TODO exit with fqcn is not part of the ExtendedLogger interface, location-awareness will be broken
-  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
-  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
-  fun traceExit(message: EntryMessage) {
-    delegate.traceExit(message)
-  }
-
-  // TODO exit with fqcn is not part of the ExtendedLogger interface, location-awareness will be broken
-  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
-  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)
+    return runInTrace(delegate.traceEntry(), block)
   }
 
+  // TODO exit and catching with fqcn is not part of the ExtendedLogger interface, location-awareness will be broken
   fun <R : Any?> runInTrace(entryMessage: EntryMessage, block: () -> R): R {
     return try {
       val result = block()
       when(result) {
-        Unit -> traceExit(entryMessage)
-        else -> traceExit(entryMessage, result)
+        Unit -> delegate.traceExit(entryMessage)
+        else -> delegate.traceExit(entryMessage, result)
       }
       result
     } catch (e: Throwable) {


[20/25] logging-log4j-kotlin git commit: Remove KotlinCompleteLogger

Posted by ma...@apache.org.
Remove KotlinCompleteLogger


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/45e47005
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/tree/45e47005
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/diff/45e47005

Branch: refs/heads/master
Commit: 45e47005d00cfee0923160896f6a749284d34c17
Parents: e4243b9
Author: Raman Gupta <ro...@gmail.com>
Authored: Tue Mar 27 12:08:29 2018 -0400
Committer: Raman Gupta <ro...@gmail.com>
Committed: Tue Mar 27 12:20:34 2018 -0400

----------------------------------------------------------------------
 .../log4j/kotlin/sample/LoggingAppComplete.kt   |   58 -
 .../log4j/kotlin/KotlinCompleteLogger.kt        | 1695 ------------------
 .../apache/logging/log4j/kotlin/KotlinLogger.kt |   12 +-
 .../logging/log4j/kotlin/LoggingFactory.kt      |   10 -
 4 files changed, 7 insertions(+), 1768 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/45e47005/log4j-api-kotlin-sample/src/main/kotlin/org/apache/logging/log4j/kotlin/sample/LoggingAppComplete.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin-sample/src/main/kotlin/org/apache/logging/log4j/kotlin/sample/LoggingAppComplete.kt b/log4j-api-kotlin-sample/src/main/kotlin/org/apache/logging/log4j/kotlin/sample/LoggingAppComplete.kt
deleted file mode 100644
index 1b4cbd7..0000000
--- a/log4j-api-kotlin-sample/src/main/kotlin/org/apache/logging/log4j/kotlin/sample/LoggingAppComplete.kt
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * 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.sample
-
-import org.apache.logging.log4j.kotlin.completeLogger
-import org.apache.logging.log4j.kotlin.logger
-import java.util.*
-
-object LoggingAppComplete {
-  val log = completeLogger()
-
-  @JvmStatic
-  fun main(args: Array<String>) {
-    val s1 = "foo"
-    val s2 = "bar"
-
-    log.info { "Hello, world: $s1 $s2" }
-
-    log.trace("Regular trace")
-
-    log.runInTrace {
-      log.info("Inside trace extension!")
-    }
-
-    log.runInTrace(log.traceEntry({ "param1" }, { "param2" })) {
-      log.info("Inside trace extension with params suppliers!")
-    }
-
-    fun getKey(): Int = log.runInTrace {
-      Random().nextInt(10)
-    }
-
-    fun getKeyError(): Int = log.runInTrace {
-      throw Exception("Oops!")
-    }
-
-    log.info { "Key was ${getKey()}" }
-    try {
-      log.info { "Key was ${getKeyError()}" }
-    } catch(e: Exception) {
-      log.info { "Key threw ${e.message}" }
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/45e47005/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/KotlinCompleteLogger.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/KotlinCompleteLogger.kt b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/KotlinCompleteLogger.kt
deleted file mode 100644
index 752f523..0000000
--- a/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/KotlinCompleteLogger.kt
+++ /dev/null
@@ -1,1695 +0,0 @@
-/*
- * 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.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
-
-/**
- * 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 KotlinCompleteLogger(private val delegate: ExtendedLogger): Logger by delegate {
-  companion object {
-    val FQCN: String = KotlinCompleteLogger::class.java.name
-  }
-
-  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)
-  }
-}

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/45e47005/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
index 2b74b61..a29deaa 100644
--- 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
@@ -25,11 +25,13 @@ import org.apache.logging.log4j.message.SimpleMessage
 import org.apache.logging.log4j.spi.ExtendedLogger
 
 /**
- * An adapter supporting cleaner syntax when calling a logger via Kotlin. This differs from
- * [KotlinCompleteLogger] in that it does not implement the Log4j2 [Logger] interface, but instead
- * limits logging methods to those that would be natural to use from Kotlin. For example,
- * the various logging-parameter methods necessary for Java are eschewed in favor of Kotlin
- * lambdas and String interpolation.
+ * An adapter supporting cleaner syntax when calling a logger via Kotlin. This does not implement
+ * the Log4j2 [Logger] interface, but instead limits logging methods to those that would be natural
+ * to use from Kotlin. For example, the various logging-parameter methods necessary for Java are
+ * eschewed in favor of Kotlin lambdas and String interpolation.
+ *
+ * If you do need access to the underlying [Logger] or [ExtendedLogger], it may be accessed via the
+ * `delegate` property.
  *
  * 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.:

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/45e47005/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/LoggingFactory.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/LoggingFactory.kt b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/LoggingFactory.kt
index 4824c4f..7a4126c 100644
--- a/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/LoggingFactory.kt
+++ b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/LoggingFactory.kt
@@ -26,12 +26,6 @@ import kotlin.reflect.full.companionObject
 @Suppress("unused")
 inline fun <reified T : Any> T.logger() = loggerOf(T::class.java)
 
-/**
- * Logger instantiation by function. Use: `val log = logger()`.
- */
-@Suppress("unused")
-inline fun <reified T : Any> T.completeLogger() = completeLoggerOf(T::class.java)
-
 fun loggerDelegateOf(ofClass: Class<*>): ExtendedLogger {
   return LogManager.getContext(ofClass.classLoader, false).getLogger(unwrapCompanionClass(ofClass).name)
 }
@@ -40,10 +34,6 @@ fun loggerOf(ofClass: Class<*>): KotlinLogger {
   return KotlinLogger(loggerDelegateOf(ofClass))
 }
 
-fun completeLoggerOf(ofClass: Class<*>): KotlinCompleteLogger {
-  return KotlinCompleteLogger(loggerDelegateOf(ofClass))
-}
-
 // unwrap companion class to enclosing class given a Java Class
 private fun <T : Any> unwrapCompanionClass(ofClass: Class<T>): Class<*> {
   return if (ofClass.enclosingClass?.kotlin?.companionObject?.java == ofClass) {


[22/25] logging-log4j-kotlin git commit: Simplify and fill out LoggerTest

Posted by ma...@apache.org.
Simplify and fill out LoggerTest


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/2f8a8f82
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/tree/2f8a8f82
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/diff/2f8a8f82

Branch: refs/heads/master
Commit: 2f8a8f82df5356649d7e61d124084a291efa55d8
Parents: 08b62e0
Author: Raman Gupta <ro...@gmail.com>
Authored: Tue Mar 27 12:09:17 2018 -0400
Committer: Raman Gupta <ro...@gmail.com>
Committed: Tue Mar 27 12:20:35 2018 -0400

----------------------------------------------------------------------
 .../LoggerTest.kt                               | 140 ++++++++++++++-----
 1 file changed, 107 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/2f8a8f82/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt
index c8d7d93..2a981f4 100644
--- a/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt
+++ b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt
@@ -28,6 +28,7 @@ import org.apache.logging.log4j.spi.ExtendedLogger
 import org.junit.Rule
 import org.junit.Test
 import org.mockito.ArgumentMatchers.anyString
+import kotlin.test.assertFailsWith
 import kotlin.test.assertTrue
 
 data class Custom(val i: Int)
@@ -39,15 +40,18 @@ interface Manager {
 typealias LoggerStubbingFn = KStubbing<ExtendedLogger>.() -> Unit
 
 class LoggerTest {
-  @Rule @JvmField var init = LoggerContextRule("InfoLogger.xml")
+  companion object {
+    val msg = ParameterizedMessage("msg {}", 17)
+    val entryMsg = DefaultFlowMessageFactory().newEntryMessage(msg)
+    val cseqMsg: CharSequence = StringBuilder().append("cseq msg")
+    val objectMsg = Custom(17)
+    val cause = RuntimeException("cause")
+    val marker = MarkerManager.getMarker("marker")
+    val result = "foo"
+    val managerValue: Int = 4711
+  }
 
-  val msg = ParameterizedMessage("msg {}", 17)
-  val entryMsg = DefaultFlowMessageFactory().newEntryMessage(msg)
-  val cseqMsg: CharSequence = StringBuilder().append("cseq msg")
-  val objectMsg = Custom(17)
-  val cause = RuntimeException("cause")
-  val marker = MarkerManager.getMarker("marker")
-  val result = "foo"
+  @Rule @JvmField var init = LoggerContextRule("InfoLogger.xml")
 
   class Fixture(stubbing: LoggerStubbingFn? = null) {
     val mockLogger = mock<ExtendedLogger> {
@@ -56,47 +60,52 @@ class LoggerTest {
     }
 
     val manager = mock<Manager> {
-      on { fetchValue() } doReturn 4711
+      on { fetchValue() } doReturn managerValue
     }
   }
 
+  fun withFixture(stubbing: LoggerStubbingFn?, level: Level, returning: Boolean, block: Fixture.(KotlinLogger) -> Unit): Fixture {
+    val f = Fixture(stubbing)
+    whenever(f.mockLogger.isEnabled(level)).thenReturn(returning)
+    val logger = KotlinLogger(f.mockLogger)
+    block(f, logger)
+    return f
+  }
+
+  fun withLevelFixture(level: Level, returning: Boolean, block: Fixture.(KotlinLogger) -> Unit): Fixture {
+    return withFixture({
+      on { isEnabled(level) } doReturn returning
+    }, level, returning, block)
+  }
+
   @Test
   fun `Logging works!`() {
-    val f = Fixture {
-      on { isEnabled(Level.ERROR) } doReturn true
+    val f = withLevelFixture(Level.ERROR, true) {
+      it.error(result)
     }
-    whenever(f.mockLogger.isEnabled(Level.ERROR)).thenReturn(true)
-    val logger = KotlinLogger(f.mockLogger)
-    val msg = "This is an error log."
-    logger.error(msg)
-    verify(f.mockLogger).logIfEnabled(anyString(), eq(Level.ERROR), isNull(), eq<CharSequence>(msg), isNull())
+    verify(f.mockLogger).logIfEnabled(anyString(), eq(Level.ERROR), isNull(), eq<CharSequence>(result), isNull())
   }
 
   @Test
   fun `Level fatal enabled with String message`() {
-    val f = Fixture {
-      on { isEnabled(Level.FATAL) } doReturn true
+    val f = withLevelFixture(Level.FATAL, true) {
+      it.fatal("string msg with value: ${manager.fetchValue()}")
     }
-    val logger = KotlinLogger(f.mockLogger)
-    val msg = "string msg with value: ${f.manager.fetchValue()}"
-    logger.fatal(msg)
-    verify(f.mockLogger).logIfEnabled(anyString(), eq(Level.FATAL), isNull(), eq<CharSequence>(msg), isNull())
+    verify(f.mockLogger).logIfEnabled(anyString(), eq(Level.FATAL), isNull(), eq<CharSequence>("string msg with value: $managerValue"), isNull())
     verify(f.manager).fetchValue()
   }
 
 
   @Test
   fun `Level fatal disabled with String message`() {
-    // this should fail but it doesn't because unlike Scala, we just delegate, we don't have any extra logic
-    val f = Fixture {
-      on { isEnabled(Level.FATAL) } doReturn false
+    val f = withLevelFixture(Level.FATAL, false) {
+      it.fatal("string msg with value: ${manager.fetchValue()}")
     }
-    whenever(f.mockLogger.isEnabled(Level.FATAL)).thenReturn(false)
-    val logger = KotlinLogger(f.mockLogger)
-    val msg = "string msg with value: ${f.manager.fetchValue()}"
-    logger.fatal(msg)
-    verify(f.mockLogger).logIfEnabled(anyString(), eq(Level.FATAL), isNull(), eq<CharSequence>(msg), isNull())
-    verify(f.manager).fetchValue()
+
+    verify(f.mockLogger).logIfEnabled(anyString(), eq(Level.FATAL), isNull(), eq<CharSequence>("string msg with value: $managerValue"), isNull())
+    // one might expect times(0), but we just delegate so times(1), we don't have any extra macro-based logic like the Scala api
+    // use the lambda approach to not evaluate the message if the level is not enabled
+    verify(f.manager, times(1)).fetchValue()
   }
 
   @Test
@@ -104,7 +113,7 @@ class LoggerTest {
     var count = 0
     fun lamdaFun(): String {
       count++
-      return "This should be evaluated."
+      return result
     }
     val log = logger()
     log.info { lamdaFun() }
@@ -116,10 +125,75 @@ class LoggerTest {
     var count = 0
     fun lamdaFun(): String {
       count++
-      return "This should never be evaluated."
+      return result
     }
     val log = logger()
     log.debug { lamdaFun() }
     assertTrue { count == 0 }
   }
+
+  @Test
+  fun `CharSequence messages are logged`() {
+    val f = withLevelFixture(Level.INFO, true) {
+      it.info(cseqMsg)
+    }
+    verify(f.mockLogger).logIfEnabled(anyString(), eq(Level.INFO), isNull(), eq(cseqMsg), isNull())
+  }
+
+  @Test
+  fun `Object messages are logged`() {
+    val f = withLevelFixture(Level.INFO, true) {
+      it.info(objectMsg)
+    }
+    verify(f.mockLogger).logIfEnabled(anyString(), eq(Level.INFO), isNull(), eq(objectMsg), isNull())
+  }
+
+  @Test
+  fun `Markers are logged`() {
+    val f = withLevelFixture(Level.INFO, true) {
+      it.info(marker, result)
+    }
+    verify(f.mockLogger).logIfEnabled(anyString(), eq(Level.INFO), eq(marker), eq<CharSequence>(result), isNull())
+  }
+
+  @Test
+  fun `Run in trace with no result`() {
+    var count = 0
+    val f = withLevelFixture(Level.INFO, true) {
+      it.runInTrace(entryMsg) {
+        ++count
+        Unit
+      }
+    }
+    assertTrue { count == 1 }
+    verify(f.mockLogger).traceExit(eq(entryMsg))
+  }
+
+  @Test
+  fun `Run in trace with result`() {
+    var count = 0
+    val f = withLevelFixture(Level.INFO, true) {
+      it.runInTrace(entryMsg) {
+        ++count
+      }
+    }
+    assertTrue { count == 1 }
+    verify(f.mockLogger).traceExit(eq(entryMsg), eq(1))
+  }
+
+  @Test
+  fun `Run in trace with Exception`() {
+    var count = 0
+    val f = withLevelFixture(Level.INFO, true) {
+      assertFailsWith<RuntimeException> {
+        it.runInTrace(entryMsg) {
+          ++count
+          throw cause
+        }
+      }
+    }
+    assertTrue { count == 1 }
+    verify(f.mockLogger, times(0)).traceExit(any())
+    verify(f.mockLogger).catching(argThat { message == "cause" })
+  }
 }


[05/25] logging-log4j-kotlin git commit: Build against log4j2 2.10.1-SNAPSHOT

Posted by ma...@apache.org.
Build against log4j2 2.10.1-SNAPSHOT


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/8987b07d
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/tree/8987b07d
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/diff/8987b07d

Branch: refs/heads/master
Commit: 8987b07d49fb76f9570f4d5f26a87d2d8450e629
Parents: 000c111
Author: Raman Gupta <ro...@gmail.com>
Authored: Thu Nov 23 20:30:15 2017 -0500
Committer: Raman Gupta <ro...@gmail.com>
Committed: Thu Nov 23 20:30:15 2017 -0500

----------------------------------------------------------------------
 log4j-api-kotlin-sample/pom.xml |  2 +-
 log4j-api-kotlin/pom.xml        |  2 +-
 pom.xml                         | 14 ++++++++++++--
 3 files changed, 14 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/8987b07d/log4j-api-kotlin-sample/pom.xml
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin-sample/pom.xml b/log4j-api-kotlin-sample/pom.xml
index 811bb9c..810f338 100644
--- a/log4j-api-kotlin-sample/pom.xml
+++ b/log4j-api-kotlin-sample/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>org.apache.logging.log4j</groupId>
     <artifactId>log4j-kotlin</artifactId>
-    <version>2.7.1-SNAPSHOT</version>
+    <version>2.10.1-SNAPSHOT</version>
     <relativePath>../</relativePath>
   </parent>
   <artifactId>log4j-api-kotlin-sample</artifactId>

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/8987b07d/log4j-api-kotlin/pom.xml
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/pom.xml b/log4j-api-kotlin/pom.xml
index 4460b9e..d2dd195 100644
--- a/log4j-api-kotlin/pom.xml
+++ b/log4j-api-kotlin/pom.xml
@@ -20,7 +20,7 @@
   <parent>
     <groupId>org.apache.logging.log4j</groupId>
     <artifactId>log4j-kotlin</artifactId>
-    <version>2.7.1-SNAPSHOT</version>
+    <version>2.10.1-SNAPSHOT</version>
     <relativePath>../</relativePath>
   </parent>
   <artifactId>log4j-api-kotlin</artifactId>

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/8987b07d/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index a251e55..bda3301 100644
--- a/pom.xml
+++ b/pom.xml
@@ -20,11 +20,11 @@
   <artifactId>log4j-kotlin</artifactId>
   <packaging>pom</packaging>
   <name>Apache Log4j 2 Kotlin API</name>
-  <version>2.7.1-SNAPSHOT</version>
+  <version>2.10.1-SNAPSHOT</version>
   <parent>
     <groupId>org.apache.logging.log4j</groupId>
     <artifactId>log4j</artifactId>
-    <version>2.7.1-SNAPSHOT</version>
+    <version>2.10.1-SNAPSHOT</version>
   </parent>
   <description>Apache Log4j 2 Kotlin API</description>
   <url>http://logging.apache.org/log4j/2.x/</url>
@@ -89,6 +89,16 @@
     </plugins>
   </build>
 
+  <repositories>
+    <repository>
+      <id>apache.snapshots</id>
+      <name>Apache Snapshot Repository</name>
+      <url>https://repository.apache.org/snapshots</url>
+      <releases>
+        <enabled>false</enabled>
+      </releases>
+    </repository>
+  </repositories>
 
   <modules>
     <module>log4j-api-kotlin</module>


[08/25] logging-log4j-kotlin git commit: Support/improve interface-based logger mixin

Posted by ma...@apache.org.
Support/improve interface-based logger mixin


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/2c353e8d
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/tree/2c353e8d
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/diff/2c353e8d

Branch: refs/heads/master
Commit: 2c353e8dc03986ffe820dda1d95038562f7e0e0d
Parents: e391870
Author: Raman Gupta <ro...@gmail.com>
Authored: Tue Feb 20 18:47:03 2018 -0500
Committer: Raman Gupta <ro...@gmail.com>
Committed: Tue Feb 20 18:47:03 2018 -0500

----------------------------------------------------------------------
 .../log4j/kotlin/sample/LoggingAppMixin.kt      | 63 ++++++++++++++++++++
 .../org/apache/logging/log4j/kotlin/Logger.kt   |  9 ++-
 .../org/apache/logging/log4j/kotlin/Logging.kt  | 32 +++++++---
 .../LoggerCompanionTest.kt                      |  3 +-
 .../LoggerMixinCompanionExtendsTest.kt          | 30 ++++++++++
 .../LoggerMixinExtendsTest.kt                   | 28 +++++++++
 6 files changed, 153 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/2c353e8d/log4j-api-kotlin-sample/src/main/kotlin/org/apache/logging/log4j/kotlin/sample/LoggingAppMixin.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin-sample/src/main/kotlin/org/apache/logging/log4j/kotlin/sample/LoggingAppMixin.kt b/log4j-api-kotlin-sample/src/main/kotlin/org/apache/logging/log4j/kotlin/sample/LoggingAppMixin.kt
new file mode 100644
index 0000000..da3de0a
--- /dev/null
+++ b/log4j-api-kotlin-sample/src/main/kotlin/org/apache/logging/log4j/kotlin/sample/LoggingAppMixin.kt
@@ -0,0 +1,63 @@
+/*
+ * 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.sample
+
+import org.apache.logging.log4j.Level
+import org.apache.logging.log4j.kotlin.Logging
+import org.apache.logging.log4j.kotlin.logger
+import java.util.*
+
+object LoggingAppMixin: Logging {
+  @JvmStatic
+  fun main(args: Array<String>) {
+    val s1 = "foo"
+    val s2 = "bar"
+    val t = RuntimeException("error")
+
+    logger.info { "Hello, world: $s1 $s2" }
+
+    logger.trace("Regular trace")
+
+    logger.trace {
+      logger.info("Inside trace extension!")
+    }
+
+    logger.trace({ "Trace extension with entry message." }) {
+      logger.info("Inside trace extension with supplier!")
+    }
+
+    fun getKey(): Int = logger.trace {
+      Random().nextInt(10)
+    }
+
+    fun getKeyError(): Int = logger.trace {
+      throw Exception("Oops!")
+    }
+
+    logger.info { "Key was ${getKey()}" }
+    try {
+      logger.info { "Key was ${getKeyError()}" }
+    } catch(e: Exception) {
+      Unit
+    }
+
+    logger.throwing(t)
+    logger.throwing(Level.INFO, t)
+
+    logger.catching(t)
+  }
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/2c353e8d/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt
index 627d1fa..6ed453e 100644
--- a/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt
+++ b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt
@@ -208,11 +208,14 @@ class FunctionalLogger(val log: ExtendedLogger): Logger by log {
 }
 
 /**
- * Logger instantiation. Use: `val log = logger()`.
+ * Logger instantiation by function. Use: `val log = logger()`.
  */
 @Suppress("unused")
-inline fun <reified T : Any> T.logger(): FunctionalLogger =
-  FunctionalLogger(LogManager.getContext(T::class.java.classLoader, false).getLogger(unwrapCompanionClass(T::class.java).name))
+inline fun <reified T : Any> T.logger() = loggerOf(T::class.java)
+
+fun loggerOf(ofClass: Class<*>): FunctionalLogger {
+  return FunctionalLogger(LogManager.getContext(ofClass.classLoader, false).getLogger(unwrapCompanionClass(ofClass).name))
+}
 
 // unwrap companion class to enclosing class given a Java Class
 fun <T : Any> unwrapCompanionClass(ofClass: Class<T>): Class<*> {

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/2c353e8d/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logging.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logging.kt b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logging.kt
index 28229e5..8bd11cd 100644
--- a/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logging.kt
+++ b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logging.kt
@@ -1,7 +1,21 @@
+/*
+ * 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.Logger
-
 /**
  * An interface-based "mixin" to easily add a log val to a class, named by the enclosing class. This allows
  * code like this:
@@ -10,24 +24,26 @@ import org.apache.logging.log4j.Logger
  * import org.apache.logging.log4j.kotlin.Logging
  *
  * class MyClass: Logging {
- *   override val log: Logger = logger()
+ *   // use `logger` as necessary
  * }
  *
  * ```
  *
- * A simpler mechanism is to use the class extension directly, like:
+ * Or declaring the interface on a companion object works just as well:
  *
  * ```
  * import org.apache.logging.log4j.kotlin.logger
  *
  * class MyClass {
- *   val log = logger()
+ *   companion object: Logging
+ *
+ *   // use `logger` as necessary
  * }
  *
  * ```
  */
 interface Logging {
-  val log: Logger
-
-  fun logger(): Logger = this.javaClass.logger()
+  @Suppress("unused")
+  val logger
+    get() = loggerOf(this.javaClass)
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/2c353e8d/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerCompanionTest.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerCompanionTest.kt b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerCompanionTest.kt
index a661533..1d78b0b 100644
--- a/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerCompanionTest.kt
+++ b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerCompanionTest.kt
@@ -24,7 +24,8 @@ class LoggerCompanionTest {
   }
 
   @Test
-  fun `Logging from companion logger works!`() {
+  fun `Logging from a function instantiation via companion logs the correct class name`() {
+    // this should log from class LoggerCompanionTest
     log.error("This is an error log.")
   }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/2c353e8d/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerMixinCompanionExtendsTest.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerMixinCompanionExtendsTest.kt b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerMixinCompanionExtendsTest.kt
new file mode 100644
index 0000000..223a0b6
--- /dev/null
+++ b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerMixinCompanionExtendsTest.kt
@@ -0,0 +1,30 @@
+/*
+ * 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.junit.Test
+
+class LoggerMixinCompanionExtendsTest {
+
+  companion object : Logging
+
+  @Test
+  fun `Logging from an interface mix-in via companion logs the correct class name`() {
+    // this should log from class LoggerMixinCompanionExtendsTest
+    logger.error("This is an error log.")
+  }
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/2c353e8d/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerMixinExtendsTest.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerMixinExtendsTest.kt b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerMixinExtendsTest.kt
new file mode 100644
index 0000000..2939833
--- /dev/null
+++ b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerMixinExtendsTest.kt
@@ -0,0 +1,28 @@
+/*
+ * 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.junit.Test
+
+class LoggerMixinExtendsTest : Logging {
+
+  @Test
+  fun `Logging using an interface mix-in logs the correct class name`() {
+    // this should log from class LoggerMixinExtendsTest
+    logger.error("This is an error log.")
+  }
+}


[11/25] logging-log4j-kotlin git commit: Update README with status info

Posted by ma...@apache.org.
Update README with status info


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/1d7ddda4
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/tree/1d7ddda4
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/diff/1d7ddda4

Branch: refs/heads/master
Commit: 1d7ddda485a501b28ba46ae2f862cb6717833ac2
Parents: 1840262
Author: Raman Gupta <ro...@gmail.com>
Authored: Mon Feb 26 19:52:19 2018 -0500
Committer: Raman Gupta <ro...@gmail.com>
Committed: Mon Feb 26 19:52:19 2018 -0500

----------------------------------------------------------------------
 README.md | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/1d7ddda4/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index df3b2f3..f343b24 100644
--- a/README.md
+++ b/README.md
@@ -16,3 +16,8 @@ Issues, bugs, and feature requests should be submitted to the
 
 Pull request on GitHub are welcome, but please open a ticket in the JIRA issue tracker first, and mention the 
 JIRA issue in the Pull Request.
+
+## Status
+
+This is work in progress to integrate Kotlin into log4j2 as a module. See issue
+https://issues.apache.org/jira/browse/LOG4J2-1705 for tracking information.


[12/25] logging-log4j-kotlin git commit: Location-aware logging and more

Posted by ma...@apache.org.
Location-aware logging and more

* Implement location-aware logging by overriding all logging
methods and calling the delegate explicitly with the FQCN.
* Add Kotlin lambda versions of all methods with Supplier
params.
* Fix up trace extension, now called runInTrace. Location-aware
logging still does not work for this extension -- see comments
in code.


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/9e74a554
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/tree/9e74a554
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/diff/9e74a554

Branch: refs/heads/master
Commit: 9e74a554951087480c10b99aec384c2adde7fe3d
Parents: 1d7ddda
Author: Raman Gupta <ro...@gmail.com>
Authored: Tue Feb 27 02:10:07 2018 -0500
Committer: Raman Gupta <ro...@gmail.com>
Committed: Tue Feb 27 02:10:07 2018 -0500

----------------------------------------------------------------------
 .../logging/log4j/kotlin/sample/LoggingApp.kt   |   20 +-
 .../log4j/kotlin/sample/LoggingAppMixin.kt      |   20 +-
 .../org/apache/logging/log4j/kotlin/Logger.kt   | 1654 +++++++++++++++++-
 .../LoggerTest.kt                               |   15 +-
 4 files changed, 1590 insertions(+), 119 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/9e74a554/log4j-api-kotlin-sample/src/main/kotlin/org/apache/logging/log4j/kotlin/sample/LoggingApp.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin-sample/src/main/kotlin/org/apache/logging/log4j/kotlin/sample/LoggingApp.kt b/log4j-api-kotlin-sample/src/main/kotlin/org/apache/logging/log4j/kotlin/sample/LoggingApp.kt
index 43890ea..9a72427 100644
--- a/log4j-api-kotlin-sample/src/main/kotlin/org/apache/logging/log4j/kotlin/sample/LoggingApp.kt
+++ b/log4j-api-kotlin-sample/src/main/kotlin/org/apache/logging/log4j/kotlin/sample/LoggingApp.kt
@@ -16,7 +16,6 @@
  */
 package org.apache.logging.log4j.kotlin.sample
 
-import org.apache.logging.log4j.Level
 import org.apache.logging.log4j.kotlin.logger
 import java.util.*
 
@@ -27,25 +26,24 @@ object LoggingApp {
   fun main(args: Array<String>) {
     val s1 = "foo"
     val s2 = "bar"
-    val t = RuntimeException("error")
 
     log.info { "Hello, world: $s1 $s2" }
 
     log.trace("Regular trace")
 
-    log.trace {
+    log.runInTrace {
       log.info("Inside trace extension!")
     }
 
-    log.trace({ "Trace extension with entry message." }) {
-      log.info("Inside trace extension with supplier!")
+    log.runInTrace(log.traceEntry({ "param1" }, { "param2" })) {
+      log.info("Inside trace extension with params suppliers!")
     }
 
-    fun getKey(): Int = log.trace {
+    fun getKey(): Int = log.runInTrace {
       Random().nextInt(10)
     }
 
-    fun getKeyError(): Int = log.trace {
+    fun getKeyError(): Int = log.runInTrace {
       throw Exception("Oops!")
     }
 
@@ -53,13 +51,7 @@ object LoggingApp {
     try {
       log.info { "Key was ${getKeyError()}" }
     } catch(e: Exception) {
-      Unit
+      log.info { "Key threw ${e.message}" }
     }
-
-    log.throwing(t)
-    log.throwing(Level.INFO, t)
-
-    log.catching(t)
-
   }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/9e74a554/log4j-api-kotlin-sample/src/main/kotlin/org/apache/logging/log4j/kotlin/sample/LoggingAppMixin.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin-sample/src/main/kotlin/org/apache/logging/log4j/kotlin/sample/LoggingAppMixin.kt b/log4j-api-kotlin-sample/src/main/kotlin/org/apache/logging/log4j/kotlin/sample/LoggingAppMixin.kt
index da3de0a..4d96e44 100644
--- a/log4j-api-kotlin-sample/src/main/kotlin/org/apache/logging/log4j/kotlin/sample/LoggingAppMixin.kt
+++ b/log4j-api-kotlin-sample/src/main/kotlin/org/apache/logging/log4j/kotlin/sample/LoggingAppMixin.kt
@@ -16,9 +16,7 @@
  */
 package org.apache.logging.log4j.kotlin.sample
 
-import org.apache.logging.log4j.Level
 import org.apache.logging.log4j.kotlin.Logging
-import org.apache.logging.log4j.kotlin.logger
 import java.util.*
 
 object LoggingAppMixin: Logging {
@@ -26,25 +24,24 @@ object LoggingAppMixin: Logging {
   fun main(args: Array<String>) {
     val s1 = "foo"
     val s2 = "bar"
-    val t = RuntimeException("error")
 
     logger.info { "Hello, world: $s1 $s2" }
 
     logger.trace("Regular trace")
 
-    logger.trace {
+    logger.runInTrace {
       logger.info("Inside trace extension!")
     }
 
-    logger.trace({ "Trace extension with entry message." }) {
-      logger.info("Inside trace extension with supplier!")
+    logger.runInTrace(logger.traceEntry({ "param1" }, { "param2" })) {
+      logger.info("Inside trace extension with params suppliers!")
     }
 
-    fun getKey(): Int = logger.trace {
+    fun getKey(): Int = logger.runInTrace {
       Random().nextInt(10)
     }
 
-    fun getKeyError(): Int = logger.trace {
+    fun getKeyError(): Int = logger.runInTrace {
       throw Exception("Oops!")
     }
 
@@ -52,12 +49,7 @@ object LoggingAppMixin: Logging {
     try {
       logger.info { "Key was ${getKeyError()}" }
     } catch(e: Exception) {
-      Unit
+      logger.info { "Key threw ${e.message}" }
     }
-
-    logger.throwing(t)
-    logger.throwing(Level.INFO, t)
-
-    logger.catching(t)
   }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/9e74a554/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt
index 2304967..8eb0a6a 100644
--- a/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt
+++ b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt
@@ -20,6 +20,8 @@ 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
@@ -51,161 +53,1643 @@ import kotlin.reflect.full.companionObject
  * log.error(exc) { "Unexpected exception evaluating $whatever." }
  * ```
  *
- * One known limitation of the Kotlin logging API is that location aware logging does not work
+ * 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.
+ *
+ * Lastly, 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, as the ExtendedLogger delegate assumes its own FQCN is the root of the
+ * logging stack.
  */
-@Suppress("NOTHING_TO_INLINE", "OVERRIDE_BY_INLINE", "UNUSED")
-class FunctionalLogger(val log: ExtendedLogger): Logger by log {
+@Suppress("UNUSED", "MemberVisibilityCanBePrivate")
+class FunctionalLogger(private val log: ExtendedLogger): Logger by log {
   companion object {
     val FQCN: String = FunctionalLogger::class.java.name
-    inline fun <T: Any?> (() -> T).asLog4jSupplier(): Supplier<T> = Supplier { invoke() }
+    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?) {
+    log.logIfEnabled(FQCN, level, marker, msg, null)
+  }
+
+  override fun log(level: Level, marker: Marker?, msg: Message?, t: Throwable?) {
+    log.logIfEnabled(FQCN, level, marker, msg, t)
+  }
+
+  override fun log(level: Level, marker: Marker?, msg: CharSequence?) {
+    log.logIfEnabled(FQCN, level, marker, msg, null)
+  }
+
+  override fun log(level: Level, marker: Marker?, msg: CharSequence?, t: Throwable?) {
+    log.logIfEnabled(FQCN, level, marker, msg, t)
+  }
+
+  override fun log(level: Level, marker: Marker?, msg: Any?) {
+    log.logIfEnabled(FQCN, level, marker, msg, null)
+  }
+
+  override fun log(level: Level, marker: Marker?, msg: String?) {
+    log.logIfEnabled(FQCN, level, marker, msg, null as Throwable?)
+  }
+
+  override fun log(level: Level, marker: Marker?, msg: String?, vararg params: Any?) {
+    log.logIfEnabled(FQCN, level, marker, msg, *params)
+  }
+
+  override fun log(level: Level, marker: Marker?, msg: String?, t: Throwable?) {
+    log.logIfEnabled(FQCN, level, marker, msg, t)
+  }
+
+  override fun log(level: Level, msg: Message?) {
+    log.logIfEnabled(FQCN, level, null, msg, null)
+  }
+
+  override fun log(level: Level, msg: Message?, t: Throwable?) {
+    log.logIfEnabled(FQCN, level, null, msg, t)
+  }
+
+  override fun log(level: Level, msg: CharSequence?) {
+    log.logIfEnabled(FQCN, level, null, msg, null)
+  }
+
+  override fun log(level: Level, msg: CharSequence?, t: Throwable?) {
+    log.logIfEnabled(FQCN, level, null, msg, t)
+  }
+
+  override fun log(level: Level, msg: Any?) {
+    log.logIfEnabled(FQCN, level, null, msg, null)
+  }
+
+  override fun log(level: Level, msg: Any?, t: Throwable?) {
+    log.logIfEnabled(FQCN, level, null, msg, t)
+  }
+
+  override fun log(level: Level, msg: String?) {
+    log.logIfEnabled(FQCN, level, null, msg, null as Throwable?)
+  }
+
+  override fun log(level: Level, msg: String?, vararg params: Any?) {
+    log.logIfEnabled(FQCN, level, null, msg, *params)
+  }
+
+  override fun log(level: Level, msg: String?, t: Throwable?) {
+    log.logIfEnabled(FQCN, level, null, msg, t)
+  }
+
+  override fun log(level: Level, msgSupplier: Supplier<*>?) {
+    log.logIfEnabled(FQCN, level, null, msgSupplier, null)
+  }
+
+  fun log(level: Level, supplier: () -> Any?) {
+    log.logIfEnabled(FQCN, level, null, supplier.asLog4jSupplier(), null)
+  }
+
+  override fun log(level: Level, msgSupplier: Supplier<*>?, t: Throwable?) {
+    log.logIfEnabled(FQCN, level, null, msgSupplier, t)
+  }
+
+  fun log(level: Level, t: Throwable, supplier: () -> Any?) {
+    log.logIfEnabled(FQCN, level, null, supplier.asLog4jSupplier(), t)
+  }
+
+  override fun log(level: Level, marker: Marker?, msgSupplier: Supplier<*>?) {
+    log.logIfEnabled(FQCN, level, marker, msgSupplier, null)
+  }
+
+  fun log(level: Level, marker: Marker?, supplier: () -> Any?) {
+    log.logIfEnabled(FQCN, level, marker, supplier.asLog4jSupplier(), null)
+  }
+
+  override fun log(level: Level, marker: Marker?, msg: String?, vararg paramSuppliers: Supplier<*>?) {
+    log.logIfEnabled(FQCN, level, marker, msg, *paramSuppliers)
+  }
+
+  fun log(level: Level, marker: Marker?, msg: String?, vararg paramSuppliers: () -> Any?) {
+    log.logIfEnabled(FQCN, level, marker, msg, *paramSuppliers.asLog4jSuppliers())
+  }
+
+  override fun log(level: Level, marker: Marker?, msgSupplier: Supplier<*>?, t: Throwable?) {
+    log.logIfEnabled(FQCN, level, marker, msgSupplier, t)
+  }
+
+  fun log(level: Level, marker: Marker?, t: Throwable?, supplier: () -> Any?) {
+    log.logIfEnabled(FQCN, level, marker, supplier.asLog4jSupplier(), t)
+  }
+
+  override fun log(level: Level, msg: String?, vararg paramSuppliers: Supplier<*>?) {
+    log.logIfEnabled(FQCN, level, null, msg, *paramSuppliers)
+  }
+
+  fun log(level: Level, msg: String?, vararg paramSuppliers: () -> Any?) {
+    log.logIfEnabled(FQCN, level, null, msg, *paramSuppliers.asLog4jSuppliers())
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("log.trace(Marker, () -> Any?>)"))
+  override fun log(level: Level, marker: Marker?, msgSupplier: MessageSupplier?) {
+    log.logIfEnabled(FQCN, level, marker, msgSupplier, null)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("log.trace(Marker, Throwable, () -> Any?>)"))
+  override fun log(level: Level, marker: Marker?, msgSupplier: MessageSupplier?, t: Throwable?) {
+    log.logIfEnabled(FQCN, level, marker, msgSupplier, t)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("log.trace(() -> Any?>)"))
+  override fun log(level: Level, messageSupplier: MessageSupplier?) {
+    log.logIfEnabled(FQCN, level, null, messageSupplier, null)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("log.trace(Throwable, () -> Any?>)"))
+  override fun log(level: Level, msgSupplier: MessageSupplier?, t: Throwable?) {
+    log.logIfEnabled(FQCN, level, null, msgSupplier, t)
+  }
+
+  override fun log(level: Level, marker: Marker?, msg: String?, p0: Any?) {
+    log.logIfEnabled(FQCN, level, marker, msg, p0)
+  }
+
+  override fun log(level: Level, marker: Marker?, msg: String?, p0: Any?, p1: Any?) {
+    log.logIfEnabled(FQCN, level, marker, msg, p0, p1)
+  }
+
+  override fun log(level: Level, marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.logIfEnabled(FQCN, level, marker, msg, t)
+  }
+
+  override fun log(level: Level, msg: String?, p0: Any?) {
+    log.logIfEnabled(FQCN, level, null, msg, p0)
+  }
+
+  override fun log(level: Level, msg: String?, p0: Any?, p1: Any?) {
+    log.logIfEnabled(FQCN, level, null, msg, p0, p1)
+  }
+
+  override fun log(level: Level, msg: String?, p0: Any?, p1: Any?, p2: Any?) {
+    log.logIfEnabled(FQCN, level, null, msg, p0, p1, p2)
+  }
+
+  override fun log(level: Level, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.logIfEnabled(FQCN, level, null, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)
+  }
+
+  override fun trace(marker: Marker?, msg: Message?) {
+    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, null)
+  }
+
+  override fun trace(marker: Marker?, msg: Message?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, t)
+  }
+
+  override fun trace(marker: Marker?, msg: CharSequence?) {
+    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, null)
+  }
+
+  override fun trace(marker: Marker?, msg: CharSequence?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, t)
+  }
+
+  override fun trace(marker: Marker?, msg: Any?) {
+    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, null)
+  }
+
+  override fun trace(marker: Marker?, msg: String?) {
+    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, null as Throwable?)
+  }
+
+  override fun trace(marker: Marker?, msg: String?, vararg params: Any?) {
+    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, *params)
+  }
+
+  override fun trace(marker: Marker?, msg: String?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, t)
+  }
+
+  override fun trace(msg: Message?) {
+    log.logIfEnabled(FQCN, Level.TRACE, null, msg, null)
+  }
+
+  override fun trace(msg: Message?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.TRACE, null, msg, t)
+  }
+
+  override fun trace(msg: CharSequence?) {
+    log.logIfEnabled(FQCN, Level.TRACE, null, msg, null)
+  }
+
+  override fun trace(msg: CharSequence?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.TRACE, null, msg, t)
+  }
+
+  override fun trace(msg: Any?) {
+    log.logIfEnabled(FQCN, Level.TRACE, null, msg, null)
+  }
+
+  override fun trace(msg: Any?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.TRACE, null, msg, t)
+  }
+
+  override fun trace(msg: String?) {
+    log.logIfEnabled(FQCN, Level.TRACE, null, msg, null as Throwable?)
+  }
+
+  override fun trace(msg: String?, vararg params: Any?) {
+    log.logIfEnabled(FQCN, Level.TRACE, null, msg, *params)
+  }
+
+  override fun trace(msg: String?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.TRACE, null, msg, t)
+  }
+
+  override fun trace(msgSupplier: Supplier<*>?) {
+    log.logIfEnabled(FQCN, Level.TRACE, null, msgSupplier, null)
+  }
+
+  fun trace(supplier: () -> Any?) {
+    log.logIfEnabled(FQCN, Level.TRACE, null, supplier.asLog4jSupplier(), null)
+  }
+
+  override fun trace(msgSupplier: Supplier<*>?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.TRACE, null, msgSupplier, t)
   }
 
-  inline fun trace(t: Throwable, crossinline supplier: () -> Any?) {
+  fun trace(t: Throwable, supplier: () -> Any?) {
     log.logIfEnabled(FQCN, Level.TRACE, null, supplier.asLog4jSupplier(), t)
   }
 
-  inline fun trace(marker: Marker?, crossinline supplier: () -> Any?) {
+  override fun trace(marker: Marker?, msgSupplier: Supplier<*>?) {
+    log.logIfEnabled(FQCN, Level.TRACE, marker, msgSupplier, null)
+  }
+
+  fun trace(marker: Marker?, supplier: () -> Any?) {
     log.logIfEnabled(FQCN, Level.TRACE, marker, supplier.asLog4jSupplier(), null)
   }
 
-  inline fun trace(marker: Marker?, t: Throwable?, crossinline supplier: () -> Any?) {
+  override fun trace(marker: Marker?, msg: String?, vararg paramSuppliers: Supplier<*>?) {
+    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, *paramSuppliers)
+  }
+
+  fun trace(marker: Marker?, msg: String?, vararg paramSuppliers: () -> Any?) {
+    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, *paramSuppliers.asLog4jSuppliers())
+  }
+
+  override fun trace(marker: Marker?, msgSupplier: Supplier<*>?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.TRACE, marker, msgSupplier, t)
+  }
+
+  fun trace(marker: Marker?, t: Throwable?, supplier: () -> Any?) {
     log.logIfEnabled(FQCN, Level.TRACE, marker, supplier.asLog4jSupplier(), t)
   }
 
-  inline fun debug(crossinline supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, null, supplier.asLog4jSupplier(), null)
+  override fun trace(msg: String?, vararg paramSuppliers: Supplier<*>?) {
+    log.logIfEnabled(FQCN, Level.TRACE, null, msg, *paramSuppliers)
   }
 
-  inline fun debug(t: Throwable, crossinline supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, null, supplier.asLog4jSupplier(), t)
+  fun trace(msg: String?, vararg paramSuppliers: () -> Any?) {
+    log.logIfEnabled(FQCN, Level.TRACE, null, msg, *paramSuppliers.asLog4jSuppliers())
   }
 
-  inline fun debug(marker: Marker?, crossinline supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, marker, supplier.asLog4jSupplier(), null)
+  @Deprecated("Use lambda methods.", ReplaceWith("log.trace(Marker, () -> Any?>)"))
+  override fun trace(marker: Marker?, msgSupplier: MessageSupplier?) {
+    log.logIfEnabled(FQCN, Level.TRACE, marker, msgSupplier, null)
   }
 
-  inline fun debug(marker: Marker?, t: Throwable?, crossinline supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, marker, supplier.asLog4jSupplier(), t)
+  @Deprecated("Use lambda methods.", ReplaceWith("log.trace(Marker, Throwable, () -> Any?>)"))
+  override fun trace(marker: Marker?, msgSupplier: MessageSupplier?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.TRACE, marker, msgSupplier, t)
   }
 
-  inline fun info(crossinline supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.INFO, null, supplier.asLog4jSupplier(), null)
+  @Deprecated("Use lambda methods.", ReplaceWith("log.trace(() -> Any?>)"))
+  override fun trace(messageSupplier: MessageSupplier?) {
+    log.logIfEnabled(FQCN, Level.TRACE, null, messageSupplier, null)
   }
 
-  inline fun info(t: Throwable, crossinline supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.INFO, null, supplier.asLog4jSupplier(), t)
+  @Deprecated("Use lambda methods.", ReplaceWith("log.trace(Throwable, () -> Any?>)"))
+  override fun trace(msgSupplier: MessageSupplier?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.TRACE, null, msgSupplier, t)
   }
 
-  inline fun info(marker: Marker?, crossinline supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.INFO, marker, supplier.asLog4jSupplier(), null)
+  override fun trace(marker: Marker?, msg: String?, p0: Any?) {
+    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, p0)
   }
 
-  inline fun info(marker: Marker?, t: Throwable?, crossinline supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.INFO, marker, supplier.asLog4jSupplier(), t)
+  override fun trace(marker: Marker?, msg: String?, p0: Any?, p1: Any?) {
+    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, p0, p1)
   }
 
-  inline fun warn(crossinline supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.WARN, null, supplier.asLog4jSupplier(), null)
+  override fun trace(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?) {
+    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, p0, p2, p2)
   }
 
-  inline fun warn(t: Throwable, crossinline supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.WARN, null, supplier.asLog4jSupplier(), t)
+  override fun trace(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
+    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, p0, p1, p2, p3)
   }
 
-  inline fun warn(marker: Marker?, crossinline supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.WARN, marker, supplier.asLog4jSupplier(), null)
+  override fun trace(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?) {
+    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, p0, p1, p2, p3, p4)
   }
 
-  inline fun warn(marker: Marker?, t: Throwable?, crossinline supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.WARN, marker, supplier.asLog4jSupplier(), t)
+  override fun trace(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?) {
+    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, p0, p1, p2, p3, p4, p5)
   }
 
-  inline fun error(crossinline supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.ERROR, null, supplier.asLog4jSupplier(), null)
+  override fun trace(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?) {
+    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, p0, p1, p2, p3, p4, p5, p6)
   }
 
-  inline fun error(t: Throwable, crossinline supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.ERROR, null, supplier.asLog4jSupplier(), t)
+  override fun trace(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?, p4: Any?, p5: Any?, p6: Any?, p7: Any?) {
+    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, p0, p1, p2, p3, p4, p5, p6, p7)
   }
 
-  inline fun error(marker: Marker?, crossinline supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.ERROR, marker, supplier.asLog4jSupplier(), null)
+  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?) {
+    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8)
   }
 
-  inline fun error(marker: Marker?, t: Throwable?, crossinline supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.ERROR, marker, supplier.asLog4jSupplier(), t)
+  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?) {
+    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)
   }
 
-  inline fun fatal(crossinline supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.FATAL, null, supplier.asLog4jSupplier(), null)
+  override fun trace(marker: Marker?, msg: Any?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, t)
   }
 
-  inline fun fatal(t: Throwable, crossinline supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.FATAL, null, supplier.asLog4jSupplier(), t)
+  override fun trace(msg: String?, p0: Any?) {
+    log.logIfEnabled(FQCN, Level.TRACE, null, msg, p0)
   }
 
-  inline fun fatal(marker: Marker?, crossinline supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.FATAL, marker, supplier.asLog4jSupplier(), null)
+  override fun trace(msg: String?, p0: Any?, p1: Any?) {
+    log.logIfEnabled(FQCN, Level.TRACE, null, msg, p0, p1)
   }
 
-  inline fun fatal(marker: Marker?, t: Throwable?, crossinline supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.FATAL, marker, supplier.asLog4jSupplier(), t)
+  override fun trace(msg: String?, p0: Any?, p1: Any?, p2: Any?) {
+    log.logIfEnabled(FQCN, Level.TRACE, null, msg, p0, p1, p2)
   }
 
-  inline fun <R : Any?> trace(block: () -> R): R {
-    val entry = traceEntry()
-    try {
-      val result = block()
-      when(result) {
-        Unit -> traceExit(entry)
-        else -> traceExit(entry, result)
-      }
-      return result
-    } catch (e: Throwable) {
-      catching(e)
-      throw e
-    }
+  override fun trace(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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 log.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 log.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 log.traceEntry(*paramSuppliers)
+  }
+
+  fun traceEntry(vararg paramSuppliers: () -> Any?): EntryMessage {
+    return log.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 log.traceEntry(format, *paramSuppliers)
+  }
+
+  fun traceEntry(format: String?, vararg paramSuppliers: () -> Any?): EntryMessage {
+    return log.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 log.traceEntry(message)
+  }
+
+  // TODO exit with fqcn is not part of the ExtendedLogger interface, location-awareness will be broken
+  override fun traceExit() {
+    log.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 log.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 log.traceExit(message, result)
+  }
+
+  // TODO exit with fqcn is not part of the ExtendedLogger interface, location-awareness will be broken
+  override fun traceExit(message: EntryMessage?) {
+    log.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 log.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 log.traceExit(message, result)
+  }
+
+  fun <R : Any?> runInTrace(block: () -> R): R {
+    return runInTrace(traceEntry(), block)
   }
 
-  inline fun <R : Any?> trace(crossinline supplier: () -> Any?, block: () -> R): R {
-    val entry = traceEntry(supplier.asLog4jSupplier())
-    try {
+  fun <R : Any?> runInTrace(entryMessage: EntryMessage, block: () -> R): R {
+    return try {
       val result = block()
       when(result) {
-        Unit -> traceExit(entry)
-        else -> traceExit(entry, result)
+        Unit -> traceExit(entryMessage)
+        else -> traceExit(entryMessage, result)
       }
-      return result
+      result
     } catch (e: Throwable) {
       catching(e)
       throw e
     }
   }
 
-  // define overrides for deprecated MessageSupplier methods, otherwise Kotlin dispatches these over our methods (why?)
-  @Deprecated("Use lambda methods.", ReplaceWith("log.trace(Supplier<Message>)"))
-  override inline fun trace(messageSupplier: MessageSupplier?) {
-    log.logIfEnabled(FQCN, Level.TRACE, null, messageSupplier, null)
+  override fun debug(marker: Marker?, msg: Message?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, marker, msg, null)
   }
-  @Deprecated("Use lambda methods.", ReplaceWith("log.debug(Supplier<Message>)"))
-  override inline fun debug(messageSupplier: MessageSupplier?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, null, messageSupplier, null)
+
+  override fun debug(marker: Marker?, msg: Message?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, marker, msg, t)
   }
-  @Deprecated("Use lambda methods.", ReplaceWith("log.info(Supplier<Message>)"))
-  override inline fun info(messageSupplier: MessageSupplier?) {
-    log.logIfEnabled(FQCN, Level.INFO, null, messageSupplier, null)
+
+  override fun debug(marker: Marker?, msg: CharSequence?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, marker, msg, null)
   }
-  @Deprecated("Use lambda methods.", ReplaceWith("log.warn(Supplier<Message>)"))
-  override inline fun warn(messageSupplier: MessageSupplier?) {
-    log.logIfEnabled(FQCN, Level.WARN, null, messageSupplier, null)
+
+  override fun debug(marker: Marker?, msg: CharSequence?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, marker, msg, t)
   }
-  @Deprecated("Use lambda methods.", ReplaceWith("log.error(Supplier<Message>)"))
-  override inline fun error(messageSupplier: MessageSupplier?) {
-    log.logIfEnabled(FQCN, Level.ERROR, null, messageSupplier, null)
+
+  override fun debug(marker: Marker?, msg: Any?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, marker, msg, null)
   }
-  @Deprecated("Use lambda methods.", ReplaceWith("log.fatal(Supplier<Message>)"))
-  override inline fun fatal(messageSupplier: MessageSupplier?) {
-    log.logIfEnabled(FQCN, Level.FATAL, null, messageSupplier, null)
+
+  override fun debug(marker: Marker?, msg: String?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, marker, msg, null as Throwable?)
+  }
+
+  override fun debug(marker: Marker?, msg: String?, vararg params: Any?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, marker, msg, *params)
+  }
+
+  override fun debug(marker: Marker?, msg: String?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, marker, msg, t)
+  }
+
+  override fun debug(msg: Message?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, null, msg, null)
+  }
+
+  override fun debug(msg: Message?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, null, msg, t)
+  }
+
+  override fun debug(msg: CharSequence?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, null, msg, null)
+  }
+
+  override fun debug(msg: CharSequence?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, null, msg, t)
+  }
+
+  override fun debug(msg: Any?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, null, msg, null)
+  }
+
+  override fun debug(msg: Any?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, null, msg, t)
+  }
+
+  override fun debug(msg: String?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, null, msg, null as Throwable?)
+  }
+
+  override fun debug(msg: String?, vararg params: Any?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, null, msg, *params)
+  }
+
+  override fun debug(msg: String?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, null, msg, t)
+  }
+
+  override fun debug(msgSupplier: Supplier<*>?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, null, msgSupplier, null)
+  }
+
+  fun debug(supplier: () -> Any?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, null, supplier.asLog4jSupplier(), null)
+  }
+
+  override fun debug(msgSupplier: Supplier<*>?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, null, msgSupplier, t)
+  }
+
+  fun debug(t: Throwable, supplier: () -> Any?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, null, supplier.asLog4jSupplier(), t)
+  }
+
+  override fun debug(marker: Marker?, msgSupplier: Supplier<*>?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, marker, msgSupplier, null)
+  }
+
+  fun debug(marker: Marker?, supplier: () -> Any?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, marker, supplier.asLog4jSupplier(), null)
+  }
+
+  override fun debug(marker: Marker?, msg: String?, vararg paramSuppliers: Supplier<*>?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, marker, msg, *paramSuppliers)
+  }
+
+  fun debug(marker: Marker?, msg: String?, vararg paramSuppliers: () -> Any?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, marker, msg, *paramSuppliers.asLog4jSuppliers())
+  }
+
+  override fun debug(marker: Marker?, msgSupplier: Supplier<*>?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, marker, msgSupplier, t)
+  }
+
+  fun debug(marker: Marker?, t: Throwable?, supplier: () -> Any?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, marker, supplier.asLog4jSupplier(), t)
+  }
+
+  override fun debug(msg: String?, vararg paramSuppliers: Supplier<*>?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, null, msg, *paramSuppliers)
+  }
+
+  fun debug(msg: String?, vararg paramSuppliers: () -> Any?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, null, msg, *paramSuppliers.asLog4jSuppliers())
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("log.debug(Marker, () -> Any?>)"))
+  override fun debug(marker: Marker?, msgSupplier: MessageSupplier?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, marker, msgSupplier, null)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("log.debug(Marker, Throwable, () -> Any?>)"))
+  override fun debug(marker: Marker?, msgSupplier: MessageSupplier?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, marker, msgSupplier, t)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("log.debug(() -> Any?>)"))
+  override fun debug(messageSupplier: MessageSupplier?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, null, messageSupplier, null)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("log.debug(Throwable, () -> Any?>)"))
+  override fun debug(msgSupplier: MessageSupplier?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, null, msgSupplier, t)
+  }
+
+  override fun debug(marker: Marker?, msg: String?, p0: Any?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, marker, msg, p0)
+  }
+
+  override fun debug(marker: Marker?, msg: String?, p0: Any?, p1: Any?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, marker, msg, p0, p1)
+  }
+
+  override fun debug(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, marker, msg, p0, p2, p2)
+  }
+
+  override fun debug(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, marker, msg, t)
+  }
+
+  override fun debug(msg: String?, p0: Any?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, null, msg, p0)
+  }
+
+  override fun debug(msg: String?, p0: Any?, p1: Any?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, null, msg, p0, p1)
+  }
+
+  override fun debug(msg: String?, p0: Any?, p1: Any?, p2: Any?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, null, msg, p0, p1, p2)
+  }
+
+  override fun debug(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.logIfEnabled(FQCN, Level.DEBUG, null, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)
+  }
+
+  override fun info(marker: Marker?, msg: Message?) {
+    log.logIfEnabled(FQCN, Level.INFO, marker, msg, null)
+  }
+
+  override fun info(marker: Marker?, msg: Message?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.INFO, marker, msg, t)
+  }
+
+  override fun info(marker: Marker?, msg: CharSequence?) {
+    log.logIfEnabled(FQCN, Level.INFO, marker, msg, null)
+  }
+
+  override fun info(marker: Marker?, msg: CharSequence?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.INFO, marker, msg, t)
+  }
+
+  override fun info(marker: Marker?, msg: Any?) {
+    log.logIfEnabled(FQCN, Level.INFO, marker, msg, null)
+  }
+
+  override fun info(marker: Marker?, msg: String?) {
+    log.logIfEnabled(FQCN, Level.INFO, marker, msg, null as Throwable?)
+  }
+
+  override fun info(marker: Marker?, msg: String?, vararg params: Any?) {
+    log.logIfEnabled(FQCN, Level.INFO, marker, msg, *params)
+  }
+
+  override fun info(marker: Marker?, msg: String?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.INFO, marker, msg, t)
+  }
+
+  override fun info(msg: Message?) {
+    log.logIfEnabled(FQCN, Level.INFO, null, msg, null)
+  }
+
+  override fun info(msg: Message?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.INFO, null, msg, t)
+  }
+
+  override fun info(msg: CharSequence?) {
+    log.logIfEnabled(FQCN, Level.INFO, null, msg, null)
+  }
+
+  override fun info(msg: CharSequence?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.INFO, null, msg, t)
+  }
+
+  override fun info(msg: Any?) {
+    log.logIfEnabled(FQCN, Level.INFO, null, msg, null)
+  }
+
+  override fun info(msg: Any?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.INFO, null, msg, t)
+  }
+
+  override fun info(msg: String?) {
+    log.logIfEnabled(FQCN, Level.INFO, null, msg, null as Throwable?)
+  }
+
+  override fun info(msg: String?, vararg params: Any?) {
+    log.logIfEnabled(FQCN, Level.INFO, null, msg, *params)
+  }
+
+  override fun info(msg: String?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.INFO, null, msg, t)
+  }
+
+  override fun info(msgSupplier: Supplier<*>?) {
+    log.logIfEnabled(FQCN, Level.INFO, null, msgSupplier, null)
+  }
+
+  fun info(supplier: () -> Any?) {
+    log.logIfEnabled(FQCN, Level.INFO, null, supplier.asLog4jSupplier(), null)
+  }
+
+  override fun info(msgSupplier: Supplier<*>?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.INFO, null, msgSupplier, t)
+  }
+
+  fun info(t: Throwable, supplier: () -> Any?) {
+    log.logIfEnabled(FQCN, Level.INFO, null, supplier.asLog4jSupplier(), t)
+  }
+
+  override fun info(marker: Marker?, msgSupplier: Supplier<*>?) {
+    log.logIfEnabled(FQCN, Level.INFO, marker, msgSupplier, null)
+  }
+
+  fun info(marker: Marker?, supplier: () -> Any?) {
+    log.logIfEnabled(FQCN, Level.INFO, marker, supplier.asLog4jSupplier(), null)
+  }
+
+  override fun info(marker: Marker?, msg: String?, vararg paramSuppliers: Supplier<*>?) {
+    log.logIfEnabled(FQCN, Level.INFO, marker, msg, *paramSuppliers)
+  }
+
+  fun info(marker: Marker?, msg: String?, vararg paramSuppliers: () -> Any?) {
+    log.logIfEnabled(FQCN, Level.INFO, marker, msg, *paramSuppliers.asLog4jSuppliers())
+  }
+
+  override fun info(marker: Marker?, msgSupplier: Supplier<*>?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.INFO, marker, msgSupplier, t)
+  }
+
+  fun info(marker: Marker?, t: Throwable?, supplier: () -> Any?) {
+    log.logIfEnabled(FQCN, Level.INFO, marker, supplier.asLog4jSupplier(), t)
+  }
+
+  override fun info(msg: String?, vararg paramSuppliers: Supplier<*>?) {
+    log.logIfEnabled(FQCN, Level.INFO, null, msg, *paramSuppliers)
+  }
+
+  fun info(msg: String?, vararg paramSuppliers: () -> Any?) {
+    log.logIfEnabled(FQCN, Level.INFO, null, msg, *paramSuppliers.asLog4jSuppliers())
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("log.info(Marker, () -> Any?>)"))
+  override fun info(marker: Marker?, msgSupplier: MessageSupplier?) {
+    log.logIfEnabled(FQCN, Level.INFO, marker, msgSupplier, null)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("log.info(Marker, Throwable, () -> Any?>)"))
+  override fun info(marker: Marker?, msgSupplier: MessageSupplier?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.INFO, marker, msgSupplier, t)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("log.info(() -> Any?>)"))
+  override fun info(messageSupplier: MessageSupplier?) {
+    log.logIfEnabled(FQCN, Level.INFO, null, messageSupplier, null)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("log.info(Throwable, () -> Any?>)"))
+  override fun info(msgSupplier: MessageSupplier?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.INFO, null, msgSupplier, t)
+  }
+
+  override fun info(marker: Marker?, msg: String?, p0: Any?) {
+    log.logIfEnabled(FQCN, Level.INFO, marker, msg, p0)
+  }
+
+  override fun info(marker: Marker?, msg: String?, p0: Any?, p1: Any?) {
+    log.logIfEnabled(FQCN, Level.INFO, marker, msg, p0, p1)
+  }
+
+  override fun info(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?) {
+    log.logIfEnabled(FQCN, Level.INFO, marker, msg, p0, p2, p2)
+  }
+
+  override fun info(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.logIfEnabled(FQCN, Level.INFO, marker, msg, t)
+  }
+
+  override fun info(msg: String?, p0: Any?) {
+    log.logIfEnabled(FQCN, Level.INFO, null, msg, p0)
+  }
+
+  override fun info(msg: String?, p0: Any?, p1: Any?) {
+    log.logIfEnabled(FQCN, Level.INFO, null, msg, p0, p1)
+  }
+
+  override fun info(msg: String?, p0: Any?, p1: Any?, p2: Any?) {
+    log.logIfEnabled(FQCN, Level.INFO, null, msg, p0, p1, p2)
+  }
+
+  override fun info(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.logIfEnabled(FQCN, Level.INFO, null, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)
+  }
+
+  override fun warn(marker: Marker?, msg: Message?) {
+    log.logIfEnabled(FQCN, Level.WARN, marker, msg, null)
+  }
+
+  override fun warn(marker: Marker?, msg: Message?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.WARN, marker, msg, t)
+  }
+
+  override fun warn(marker: Marker?, msg: CharSequence?) {
+    log.logIfEnabled(FQCN, Level.WARN, marker, msg, null)
+  }
+
+  override fun warn(marker: Marker?, msg: CharSequence?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.WARN, marker, msg, t)
+  }
+
+  override fun warn(marker: Marker?, msg: Any?) {
+    log.logIfEnabled(FQCN, Level.WARN, marker, msg, null)
+  }
+
+  override fun warn(marker: Marker?, msg: String?) {
+    log.logIfEnabled(FQCN, Level.WARN, marker, msg, null as Throwable?)
+  }
+
+  override fun warn(marker: Marker?, msg: String?, vararg params: Any?) {
+    log.logIfEnabled(FQCN, Level.WARN, marker, msg, *params)
+  }
+
+  override fun warn(marker: Marker?, msg: String?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.WARN, marker, msg, t)
+  }
+
+  override fun warn(msg: Message?) {
+    log.logIfEnabled(FQCN, Level.WARN, null, msg, null)
+  }
+
+  override fun warn(msg: Message?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.WARN, null, msg, t)
+  }
+
+  override fun warn(msg: CharSequence?) {
+    log.logIfEnabled(FQCN, Level.WARN, null, msg, null)
+  }
+
+  override fun warn(msg: CharSequence?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.WARN, null, msg, t)
+  }
+
+  override fun warn(msg: Any?) {
+    log.logIfEnabled(FQCN, Level.WARN, null, msg, null)
+  }
+
+  override fun warn(msg: Any?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.WARN, null, msg, t)
+  }
+
+  override fun warn(msg: String?) {
+    log.logIfEnabled(FQCN, Level.WARN, null, msg, null as Throwable?)
+  }
+
+  override fun warn(msg: String?, vararg params: Any?) {
+    log.logIfEnabled(FQCN, Level.WARN, null, msg, *params)
+  }
+
+  override fun warn(msg: String?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.WARN, null, msg, t)
+  }
+
+  override fun warn(msgSupplier: Supplier<*>?) {
+    log.logIfEnabled(FQCN, Level.WARN, null, msgSupplier, null)
+  }
+
+  fun warn(supplier: () -> Any?) {
+    log.logIfEnabled(FQCN, Level.WARN, null, supplier.asLog4jSupplier(), null)
+  }
+
+  override fun warn(msgSupplier: Supplier<*>?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.WARN, null, msgSupplier, t)
+  }
+
+  fun warn(t: Throwable, supplier: () -> Any?) {
+    log.logIfEnabled(FQCN, Level.WARN, null, supplier.asLog4jSupplier(), t)
+  }
+
+  override fun warn(marker: Marker?, msgSupplier: Supplier<*>?) {
+    log.logIfEnabled(FQCN, Level.WARN, marker, msgSupplier, null)
+  }
+
+  fun warn(marker: Marker?, supplier: () -> Any?) {
+    log.logIfEnabled(FQCN, Level.WARN, marker, supplier.asLog4jSupplier(), null)
+  }
+
+  override fun warn(marker: Marker?, msg: String?, vararg paramSuppliers: Supplier<*>?) {
+    log.logIfEnabled(FQCN, Level.WARN, marker, msg, *paramSuppliers)
+  }
+
+  fun warn(marker: Marker?, msg: String?, vararg paramSuppliers: () -> Any?) {
+    log.logIfEnabled(FQCN, Level.WARN, marker, msg, *paramSuppliers.asLog4jSuppliers())
+  }
+
+  override fun warn(marker: Marker?, msgSupplier: Supplier<*>?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.WARN, marker, msgSupplier, t)
+  }
+
+  fun warn(marker: Marker?, t: Throwable?, supplier: () -> Any?) {
+    log.logIfEnabled(FQCN, Level.WARN, marker, supplier.asLog4jSupplier(), t)
+  }
+
+  override fun warn(msg: String?, vararg paramSuppliers: Supplier<*>?) {
+    log.logIfEnabled(FQCN, Level.WARN, null, msg, *paramSuppliers)
+  }
+
+  fun warn(msg: String?, vararg paramSuppliers: () -> Any?) {
+    log.logIfEnabled(FQCN, Level.WARN, null, msg, *paramSuppliers.asLog4jSuppliers())
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("log.warn(Marker, () -> Any?>)"))
+  override fun warn(marker: Marker?, msgSupplier: MessageSupplier?) {
+    log.logIfEnabled(FQCN, Level.WARN, marker, msgSupplier, null)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("log.warn(Marker, Throwable, () -> Any?>)"))
+  override fun warn(marker: Marker?, msgSupplier: MessageSupplier?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.WARN, marker, msgSupplier, t)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("log.warn(() -> Any?>)"))
+  override fun warn(messageSupplier: MessageSupplier?) {
+    log.logIfEnabled(FQCN, Level.WARN, null, messageSupplier, null)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("log.warn(Throwable, () -> Any?>)"))
+  override fun warn(msgSupplier: MessageSupplier?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.WARN, null, msgSupplier, t)
+  }
+
+  override fun warn(marker: Marker?, msg: String?, p0: Any?) {
+    log.logIfEnabled(FQCN, Level.WARN, marker, msg, p0)
+  }
+
+  override fun warn(marker: Marker?, msg: String?, p0: Any?, p1: Any?) {
+    log.logIfEnabled(FQCN, Level.WARN, marker, msg, p0, p1)
+  }
+
+  override fun warn(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?) {
+    log.logIfEnabled(FQCN, Level.WARN, marker, msg, p0, p2, p2)
+  }
+
+  override fun warn(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.logIfEnabled(FQCN, Level.WARN, marker, msg, t)
+  }
+
+  override fun warn(msg: String?, p0: Any?) {
+    log.logIfEnabled(FQCN, Level.WARN, null, msg, p0)
+  }
+
+  override fun warn(msg: String?, p0: Any?, p1: Any?) {
+    log.logIfEnabled(FQCN, Level.WARN, null, msg, p0, p1)
+  }
+
+  override fun warn(msg: String?, p0: Any?, p1: Any?, p2: Any?) {
+    log.logIfEnabled(FQCN, Level.WARN, null, msg, p0, p1, p2)
+  }
+
+  override fun warn(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.logIfEnabled(FQCN, Level.WARN, null, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)
+  }
+
+  override fun error(marker: Marker?, msg: Message?) {
+    log.logIfEnabled(FQCN, Level.ERROR, marker, msg, null)
+  }
+
+  override fun error(marker: Marker?, msg: Message?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.ERROR, marker, msg, t)
+  }
+
+  override fun error(marker: Marker?, msg: CharSequence?) {
+    log.logIfEnabled(FQCN, Level.ERROR, marker, msg, null)
+  }
+
+  override fun error(marker: Marker?, msg: CharSequence?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.ERROR, marker, msg, t)
+  }
+
+  override fun error(marker: Marker?, msg: Any?) {
+    log.logIfEnabled(FQCN, Level.ERROR, marker, msg, null)
+  }
+
+  override fun error(marker: Marker?, msg: String?) {
+    log.logIfEnabled(FQCN, Level.ERROR, marker, msg, null as Throwable?)
+  }
+
+  override fun error(marker: Marker?, msg: String?, vararg params: Any?) {
+    log.logIfEnabled(FQCN, Level.ERROR, marker, msg, *params)
+  }
+
+  override fun error(marker: Marker?, msg: String?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.ERROR, marker, msg, t)
+  }
+
+  override fun error(msg: Message?) {
+    log.logIfEnabled(FQCN, Level.ERROR, null, msg, null)
+  }
+
+  override fun error(msg: Message?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.ERROR, null, msg, t)
+  }
+
+  override fun error(msg: CharSequence?) {
+    log.logIfEnabled(FQCN, Level.ERROR, null, msg, null)
+  }
+
+  override fun error(msg: CharSequence?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.ERROR, null, msg, t)
+  }
+
+  override fun error(msg: Any?) {
+    log.logIfEnabled(FQCN, Level.ERROR, null, msg, null)
+  }
+
+  override fun error(msg: Any?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.ERROR, null, msg, t)
+  }
+
+  override fun error(msg: String?) {
+    log.logIfEnabled(FQCN, Level.ERROR, null, msg, null as Throwable?)
+  }
+
+  override fun error(msg: String?, vararg params: Any?) {
+    log.logIfEnabled(FQCN, Level.ERROR, null, msg, *params)
+  }
+
+  override fun error(msg: String?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.ERROR, null, msg, t)
+  }
+
+  override fun error(msgSupplier: Supplier<*>?) {
+    log.logIfEnabled(FQCN, Level.ERROR, null, msgSupplier, null)
+  }
+
+  fun error(supplier: () -> Any?) {
+    log.logIfEnabled(FQCN, Level.ERROR, null, supplier.asLog4jSupplier(), null)
+  }
+
+  override fun error(msgSupplier: Supplier<*>?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.ERROR, null, msgSupplier, t)
+  }
+
+  fun error(t: Throwable, supplier: () -> Any?) {
+    log.logIfEnabled(FQCN, Level.ERROR, null, supplier.asLog4jSupplier(), t)
+  }
+
+  override fun error(marker: Marker?, msgSupplier: Supplier<*>?) {
+    log.logIfEnabled(FQCN, Level.ERROR, marker, msgSupplier, null)
+  }
+
+  fun error(marker: Marker?, supplier: () -> Any?) {
+    log.logIfEnabled(FQCN, Level.ERROR, marker, supplier.asLog4jSupplier(), null)
+  }
+
+  override fun error(marker: Marker?, msg: String?, vararg paramSuppliers: Supplier<*>?) {
+    log.logIfEnabled(FQCN, Level.ERROR, marker, msg, *paramSuppliers)
+  }
+
+  fun error(marker: Marker?, msg: String?, vararg paramSuppliers: () -> Any?) {
+    log.logIfEnabled(FQCN, Level.ERROR, marker, msg, *paramSuppliers.asLog4jSuppliers())
+  }
+
+  override fun error(marker: Marker?, msgSupplier: Supplier<*>?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.ERROR, marker, msgSupplier, t)
+  }
+
+  fun error(marker: Marker?, t: Throwable?, supplier: () -> Any?) {
+    log.logIfEnabled(FQCN, Level.ERROR, marker, supplier.asLog4jSupplier(), t)
+  }
+
+  override fun error(msg: String?, vararg paramSuppliers: Supplier<*>?) {
+    log.logIfEnabled(FQCN, Level.ERROR, null, msg, *paramSuppliers)
+  }
+
+  fun error(msg: String?, vararg paramSuppliers: () -> Any?) {
+    log.logIfEnabled(FQCN, Level.ERROR, null, msg, *paramSuppliers.asLog4jSuppliers())
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("log.error(Marker, () -> Any?>)"))
+  override fun error(marker: Marker?, msgSupplier: MessageSupplier?) {
+    log.logIfEnabled(FQCN, Level.ERROR, marker, msgSupplier, null)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("log.error(Marker, Throwable, () -> Any?>)"))
+  override fun error(marker: Marker?, msgSupplier: MessageSupplier?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.ERROR, marker, msgSupplier, t)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("log.error(() -> Any?>)"))
+  override fun error(messageSupplier: MessageSupplier?) {
+    log.logIfEnabled(FQCN, Level.ERROR, null, messageSupplier, null)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("log.error(Throwable, () -> Any?>)"))
+  override fun error(msgSupplier: MessageSupplier?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.ERROR, null, msgSupplier, t)
+  }
+
+  override fun error(marker: Marker?, msg: String?, p0: Any?) {
+    log.logIfEnabled(FQCN, Level.ERROR, marker, msg, p0)
+  }
+
+  override fun error(marker: Marker?, msg: String?, p0: Any?, p1: Any?) {
+    log.logIfEnabled(FQCN, Level.ERROR, marker, msg, p0, p1)
+  }
+
+  override fun error(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?) {
+    log.logIfEnabled(FQCN, Level.ERROR, marker, msg, p0, p2, p2)
+  }
+
+  override fun error(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.logIfEnabled(FQCN, Level.ERROR, marker, msg, t)
+  }
+
+  override fun error(msg: String?, p0: Any?) {
+    log.logIfEnabled(FQCN, Level.ERROR, null, msg, p0)
+  }
+
+  override fun error(msg: String?, p0: Any?, p1: Any?) {
+    log.logIfEnabled(FQCN, Level.ERROR, null, msg, p0, p1)
+  }
+
+  override fun error(msg: String?, p0: Any?, p1: Any?, p2: Any?) {
+    log.logIfEnabled(FQCN, Level.ERROR, null, msg, p0, p1, p2)
+  }
+
+  override fun error(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.logIfEnabled(FQCN, Level.ERROR, null, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)
+  }
+
+  override fun fatal(marker: Marker?, msg: Message?) {
+    log.logIfEnabled(FQCN, Level.FATAL, marker, msg, null)
+  }
+
+  override fun fatal(marker: Marker?, msg: Message?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.FATAL, marker, msg, t)
+  }
+
+  override fun fatal(marker: Marker?, msg: CharSequence?) {
+    log.logIfEnabled(FQCN, Level.FATAL, marker, msg, null)
+  }
+
+  override fun fatal(marker: Marker?, msg: CharSequence?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.FATAL, marker, msg, t)
+  }
+
+  override fun fatal(marker: Marker?, msg: Any?) {
+    log.logIfEnabled(FQCN, Level.FATAL, marker, msg, null)
+  }
+
+  override fun fatal(marker: Marker?, msg: String?) {
+    log.logIfEnabled(FQCN, Level.FATAL, marker, msg, null as Throwable?)
+  }
+
+  override fun fatal(marker: Marker?, msg: String?, vararg params: Any?) {
+    log.logIfEnabled(FQCN, Level.FATAL, marker, msg, *params)
+  }
+
+  override fun fatal(marker: Marker?, msg: String?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.FATAL, marker, msg, t)
+  }
+
+  override fun fatal(msg: Message?) {
+    log.logIfEnabled(FQCN, Level.FATAL, null, msg, null)
+  }
+
+  override fun fatal(msg: Message?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.FATAL, null, msg, t)
+  }
+
+  override fun fatal(msg: CharSequence?) {
+    log.logIfEnabled(FQCN, Level.FATAL, null, msg, null)
+  }
+
+  override fun fatal(msg: CharSequence?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.FATAL, null, msg, t)
+  }
+
+  override fun fatal(msg: Any?) {
+    log.logIfEnabled(FQCN, Level.FATAL, null, msg, null)
+  }
+
+  override fun fatal(msg: Any?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.FATAL, null, msg, t)
+  }
+
+  override fun fatal(msg: String?) {
+    log.logIfEnabled(FQCN, Level.FATAL, null, msg, null as Throwable?)
+  }
+
+  override fun fatal(msg: String?, vararg params: Any?) {
+    log.logIfEnabled(FQCN, Level.FATAL, null, msg, *params)
+  }
+
+  override fun fatal(msg: String?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.FATAL, null, msg, t)
+  }
+
+  override fun fatal(msgSupplier: Supplier<*>?) {
+    log.logIfEnabled(FQCN, Level.FATAL, null, msgSupplier, null)
+  }
+
+  fun fatal(supplier: () -> Any?) {
+    log.logIfEnabled(FQCN, Level.FATAL, null, supplier.asLog4jSupplier(), null)
+  }
+
+  override fun fatal(msgSupplier: Supplier<*>?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.FATAL, null, msgSupplier, t)
+  }
+
+  fun fatal(t: Throwable, supplier: () -> Any?) {
+    log.logIfEnabled(FQCN, Level.FATAL, null, supplier.asLog4jSupplier(), t)
+  }
+
+  override fun fatal(marker: Marker?, msgSupplier: Supplier<*>?) {
+    log.logIfEnabled(FQCN, Level.FATAL, marker, msgSupplier, null)
+  }
+
+  fun fatal(marker: Marker?, supplier: () -> Any?) {
+    log.logIfEnabled(FQCN, Level.FATAL, marker, supplier.asLog4jSupplier(), null)
+  }
+
+  override fun fatal(marker: Marker?, msg: String?, vararg paramSuppliers: Supplier<*>?) {
+    log.logIfEnabled(FQCN, Level.FATAL, marker, msg, *paramSuppliers)
+  }
+
+  fun fatal(marker: Marker?, msg: String?, vararg paramSuppliers: () -> Any?) {
+    log.logIfEnabled(FQCN, Level.FATAL, marker, msg, *paramSuppliers.asLog4jSuppliers())
+  }
+
+  override fun fatal(marker: Marker?, msgSupplier: Supplier<*>?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.FATAL, marker, msgSupplier, t)
+  }
+
+  fun fatal(marker: Marker?, t: Throwable?, supplier: () -> Any?) {
+    log.logIfEnabled(FQCN, Level.FATAL, marker, supplier.asLog4jSupplier(), t)
+  }
+
+  override fun fatal(msg: String?, vararg paramSuppliers: Supplier<*>?) {
+    log.logIfEnabled(FQCN, Level.FATAL, null, msg, *paramSuppliers)
+  }
+
+  fun fatal(msg: String?, vararg paramSuppliers: () -> Any?) {
+    log.logIfEnabled(FQCN, Level.FATAL, null, msg, *paramSuppliers.asLog4jSuppliers())
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("log.fatal(Marker, () -> Any?>)"))
+  override fun fatal(marker: Marker?, msgSupplier: MessageSupplier?) {
+    log.logIfEnabled(FQCN, Level.FATAL, marker, msgSupplier, null)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("log.fatal(Marker, Throwable, () -> Any?>)"))
+  override fun fatal(marker: Marker?, msgSupplier: MessageSupplier?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.FATAL, marker, msgSupplier, t)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("log.fatal(() -> Any?>)"))
+  override fun fatal(messageSupplier: MessageSupplier?) {
+    log.logIfEnabled(FQCN, Level.FATAL, null, messageSupplier, null)
+  }
+
+  @Deprecated("Use lambda methods.", ReplaceWith("log.fatal(Throwable, () -> Any?>)"))
+  override fun fatal(msgSupplier: MessageSupplier?, t: Throwable?) {
+    log.logIfEnabled(FQCN, Level.FATAL, null, msgSupplier, t)
+  }
+
+  override fun fatal(marker: Marker?, msg: String?, p0: Any?) {
+    log.logIfEnabled(FQCN, Level.FATAL, marker, msg, p0)
+  }
+
+  override fun fatal(marker: Marker?, msg: String?, p0: Any?, p1: Any?) {
+    log.logIfEnabled(FQCN, Level.FATAL, marker, msg, p0, p1)
+  }
+
+  override fun fatal(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?) {
+    log.logIfEnabled(FQCN, Level.FATAL, marker, msg, p0, p2, p2)
+  }
+
+  override fun fatal(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.logIfEnabled(FQCN, Level.FATAL, marker, msg, t)
+  }
+
+  override fun fatal(msg: String?, p0: Any?) {
+    log.logIfEnabled(FQCN, Level.FATAL, null, msg, p0)
+  }
+
+  override fun fatal(msg: String?, p0: Any?, p1: Any?) {
+    log.logIfEnabled(FQCN, Level.FATAL, null, msg, p0, p1)
+  }
+
+  override fun fatal(msg: String?, p0: Any?, p1: Any?, p2: Any?) {
+    log.logIfEnabled(FQCN, Level.FATAL, null, msg, p0, p1, p2)
+  }
+
+  override fun fatal(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.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?) {
+    log.logIfEnabled(FQCN, Level.FATAL, null, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)
   }
 }
 

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/9e74a554/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt
index 0683150..f8c4a59 100644
--- a/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt
+++ b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt
@@ -67,8 +67,9 @@ class LoggerTest {
     }
     whenever(f.mockLogger.isEnabled(Level.ERROR)).thenReturn(true)
     val logger = FunctionalLogger(f.mockLogger)
-    logger.error("This is an error log.")
-    verify(f.mockLogger).error(anyString())
+    val msg = "This is an error log."
+    logger.error(msg)
+    verify(f.mockLogger).logIfEnabled(anyString(), eq(Level.ERROR), isNull(), eq(msg), isNull<Throwable>())
   }
 
   @Test
@@ -77,8 +78,9 @@ class LoggerTest {
       on { isEnabled(Level.FATAL) } doReturn true
     }
     val logger = FunctionalLogger(f.mockLogger)
-    logger.fatal("string msg with value: ${f.manager.fetchValue()}")
-    verify(f.mockLogger).fatal(anyString())
+    val msg = "string msg with value: ${f.manager.fetchValue()}"
+    logger.fatal(msg)
+    verify(f.mockLogger).logIfEnabled(anyString(), eq(Level.FATAL), isNull(), eq(msg), isNull<Throwable>())
     verify(f.manager).fetchValue()
   }
 
@@ -91,8 +93,9 @@ class LoggerTest {
     }
     whenever(f.mockLogger.isEnabled(Level.FATAL)).thenReturn(false)
     val logger = FunctionalLogger(f.mockLogger)
-    logger.fatal("string msg with value: ${f.manager.fetchValue()}")
-    verify(f.mockLogger).fatal(anyString())
+    val msg = "string msg with value: ${f.manager.fetchValue()}"
+    logger.fatal(msg)
+    verify(f.mockLogger).logIfEnabled(anyString(), eq(Level.FATAL), isNull(), eq(msg), isNull<Throwable>())
     verify(f.manager).fetchValue()
   }
 


[09/25] logging-log4j-kotlin git commit: Update Kotlin to 1.2.21

Posted by ma...@apache.org.
Update Kotlin to 1.2.21


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/0d9d5ebd
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/tree/0d9d5ebd
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/diff/0d9d5ebd

Branch: refs/heads/master
Commit: 0d9d5ebd3ee6adb6e38fb1d25c8960d02d233b5d
Parents: 2c353e8
Author: Raman Gupta <ro...@gmail.com>
Authored: Tue Feb 20 18:50:57 2018 -0500
Committer: Raman Gupta <ro...@gmail.com>
Committed: Tue Feb 20 18:50:57 2018 -0500

----------------------------------------------------------------------
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/0d9d5ebd/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index bda3301..bc2b2dd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -36,7 +36,7 @@
   </scm>
 
   <properties>
-    <kotlin.version>1.1.60</kotlin.version>
+    <kotlin.version>1.2.21</kotlin.version>
   </properties>
 
   <dependencyManagement>


[07/25] logging-log4j-kotlin git commit: Add unit tests

Posted by ma...@apache.org.
Add unit tests


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/e3918702
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/tree/e3918702
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/diff/e3918702

Branch: refs/heads/master
Commit: e3918702525865fed9a2bfdde0b9be5cf7452411
Parents: d3378df
Author: Raman Gupta <ro...@gmail.com>
Authored: Thu Nov 23 20:33:08 2017 -0500
Committer: Raman Gupta <ro...@gmail.com>
Committed: Thu Nov 23 20:33:08 2017 -0500

----------------------------------------------------------------------
 log4j-api-kotlin/pom.xml                        | 11 +++
 .../LoggerCompanionTest.kt                      |  2 +-
 .../LoggerTest.kt                               | 98 +++++++++++++++++++-
 .../src/test/resources/InfoLogger.xml           | 32 +++++++
 .../src/test/resources/log4j2-test.xml          | 31 -------
 5 files changed, 140 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/e3918702/log4j-api-kotlin/pom.xml
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/pom.xml b/log4j-api-kotlin/pom.xml
index d2dd195..c79537a 100644
--- a/log4j-api-kotlin/pom.xml
+++ b/log4j-api-kotlin/pom.xml
@@ -54,6 +54,17 @@
       <scope>test</scope>
     </dependency>
     <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-core</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-core</artifactId>
+      <type>test-jar</type>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <scope>test</scope>

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/e3918702/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerCompanionTest.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerCompanionTest.kt b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerCompanionTest.kt
index c7c9ba0..a661533 100644
--- a/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerCompanionTest.kt
+++ b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerCompanionTest.kt
@@ -25,6 +25,6 @@ class LoggerCompanionTest {
 
   @Test
   fun `Logging from companion logger works!`() {
-    log.debug("This is a debug log.")
+    log.error("This is an error log.")
   }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/e3918702/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt
index 8f6ada6..0683150 100644
--- a/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt
+++ b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt
@@ -16,13 +16,107 @@
  */
 package org.apache.logging.log4j.kotlin
 
+import com.nhaarman.mockito_kotlin.*
+import org.apache.logging.log4j.Level
+import org.apache.logging.log4j.MarkerManager
+import org.apache.logging.log4j.junit.LoggerContextRule
+import org.apache.logging.log4j.message.DefaultFlowMessageFactory
+import org.apache.logging.log4j.message.MessageFactory2
+import org.apache.logging.log4j.message.ParameterizedMessage
+import org.apache.logging.log4j.message.ParameterizedMessageFactory
+import org.apache.logging.log4j.spi.ExtendedLogger
+import org.junit.Rule
 import org.junit.Test
+import org.mockito.ArgumentMatchers.anyString
+import kotlin.test.assertTrue
+
+data class Custom(val i: Int)
+
+interface Manager {
+  fun fetchValue(): Int
+}
+
+typealias LoggerStubbingFn = KStubbing<ExtendedLogger>.() -> Unit
 
 class LoggerTest {
-  val log = logger()
+  @Rule @JvmField var init = LoggerContextRule("InfoLogger.xml")
+
+  val msg = ParameterizedMessage("msg {}", 17)
+  val entryMsg = DefaultFlowMessageFactory().newEntryMessage(msg)
+  val cseqMsg: CharSequence = StringBuilder().append("cseq msg")
+  val objectMsg = Custom(17)
+  val cause = RuntimeException("cause")
+  val marker = MarkerManager.getMarker("marker")
+  val result = "foo"
+
+  class Fixture(stubbing: LoggerStubbingFn? = null) {
+    val mockLogger = mock<ExtendedLogger> {
+      on { getMessageFactory<MessageFactory2>() } doReturn ParameterizedMessageFactory()
+      if(stubbing != null) stubbing()
+    }
+
+    val manager = mock<Manager> {
+      on { fetchValue() } doReturn 4711
+    }
+  }
 
   @Test
   fun `Logging works!`() {
-    log.debug("This is a debug log.")
+    val f = Fixture {
+      on { isEnabled(Level.ERROR) } doReturn true
+    }
+    whenever(f.mockLogger.isEnabled(Level.ERROR)).thenReturn(true)
+    val logger = FunctionalLogger(f.mockLogger)
+    logger.error("This is an error log.")
+    verify(f.mockLogger).error(anyString())
+  }
+
+  @Test
+  fun `Level fatal enabled with String message`() {
+    val f = Fixture {
+      on { isEnabled(Level.FATAL) } doReturn true
+    }
+    val logger = FunctionalLogger(f.mockLogger)
+    logger.fatal("string msg with value: ${f.manager.fetchValue()}")
+    verify(f.mockLogger).fatal(anyString())
+    verify(f.manager).fetchValue()
+  }
+
+
+  @Test
+  fun `Level fatal disabled with String message`() {
+    // this should fail but it doesn't because unlike Scala, we just delegate, we don't have any extra logic
+    val f = Fixture {
+      on { isEnabled(Level.FATAL) } doReturn false
+    }
+    whenever(f.mockLogger.isEnabled(Level.FATAL)).thenReturn(false)
+    val logger = FunctionalLogger(f.mockLogger)
+    logger.fatal("string msg with value: ${f.manager.fetchValue()}")
+    verify(f.mockLogger).fatal(anyString())
+    verify(f.manager).fetchValue()
+  }
+
+  @Test
+  fun `Lambda functions are evaluated if the level is high enough`() {
+    var count = 0
+    fun lamdaFun(): String {
+      count++
+      return "This should be evaluated."
+    }
+    val log = logger()
+    log.info { lamdaFun() }
+    assertTrue { count == 1 }
+  }
+
+  @Test
+  fun `Lambda functions are not evaluated if the level is low enough`() {
+    var count = 0
+    fun lamdaFun(): String {
+      count++
+      return "This should never be evaluated."
+    }
+    val log = logger()
+    log.debug { lamdaFun() }
+    assertTrue { count == 0 }
   }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/e3918702/log4j-api-kotlin/src/test/resources/InfoLogger.xml
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/test/resources/InfoLogger.xml b/log4j-api-kotlin/src/test/resources/InfoLogger.xml
new file mode 100644
index 0000000..ba3c948
--- /dev/null
+++ b/log4j-api-kotlin/src/test/resources/InfoLogger.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+
+-->
+<Configuration name="KotlinApiTests" status="warn">
+  <Appenders>
+    <Console name="Console">
+      <PatternLayout>
+        <Pattern>%d %5p %c{1} %X %F:%L - %m%n</Pattern>
+      </PatternLayout>
+    </Console>
+  </Appenders>
+  <Loggers>
+    <Root level="INFO">
+      <AppenderRef ref="Console"/>
+    </Root>
+  </Loggers>
+</Configuration>

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/e3918702/log4j-api-kotlin/src/test/resources/log4j2-test.xml
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/test/resources/log4j2-test.xml b/log4j-api-kotlin/src/test/resources/log4j2-test.xml
deleted file mode 100644
index 4113137..0000000
--- a/log4j-api-kotlin/src/test/resources/log4j2-test.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
--->
-<Configuration name="KotlinTests" status="error">
-  <Appenders>
-    <Console name="Console">
-      <PatternLayout>
-        <Pattern>%d %5p %c{1} %X %F:%L - %m%n</Pattern>
-      </PatternLayout>
-    </Console>
-  </Appenders>
-  <Loggers>
-    <Root level="TRACE">
-      <AppenderRef ref="Console"/>
-    </Root>
-  </Loggers>
-</Configuration>


[18/25] logging-log4j-kotlin git commit: Improve nullability checks, String->CharSequence

Posted by ma...@apache.org.
Improve nullability checks, String->CharSequence

Remove String methods which are no longer required given the
availability of CharSequence.

Based on feedback from @jvz.


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/db30ecb5
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/tree/db30ecb5
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/diff/db30ecb5

Branch: refs/heads/master
Commit: db30ecb5f05e2c796a79cb4f37db698498c47e14
Parents: f5b067f
Author: Raman Gupta <ro...@gmail.com>
Authored: Thu Mar 1 22:20:30 2018 -0500
Committer: Raman Gupta <ro...@gmail.com>
Committed: Fri Mar 2 00:25:21 2018 -0500

----------------------------------------------------------------------
 .../apache/logging/log4j/kotlin/KotlinLogger.kt | 319 ++++++-------------
 .../LoggerTest.kt                               |   6 +-
 2 files changed, 108 insertions(+), 217 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/db30ecb5/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
index 853ea9c..eff1497 100644
--- 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
@@ -50,6 +50,9 @@ import org.apache.logging.log4j.spi.ExtendedLogger
  * 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.
  *
+ * We also use Kotlin's nullability features to specify unambiguously which parameters must be non-null
+ * when passed.
+ *
  * Lastly, the ExtendedLogger delegate is available if the underlying Log4j Logger is needed for some reason.
  * Access it via the `delegate` property.
  *
@@ -63,67 +66,51 @@ class KotlinLogger(val delegate: ExtendedLogger) {
     val FQCN: String = KotlinLogger::class.java.name
   }
 
-  fun log(level: Level, marker: Marker?, msg: Message?) {
+  fun log(level: Level, marker: Marker, msg: Message) {
     delegate.logIfEnabled(FQCN, level, marker, msg, null)
   }
 
-  fun log(level: Level, marker: Marker?, msg: Message?, t: Throwable?) {
+  fun log(level: Level, marker: Marker, msg: Message, t: Throwable?) {
     delegate.logIfEnabled(FQCN, level, marker, msg, t)
   }
 
-  fun log(level: Level, marker: Marker?, msg: CharSequence?) {
+  fun log(level: Level, marker: Marker, msg: CharSequence) {
     delegate.logIfEnabled(FQCN, level, marker, msg, null)
   }
 
-  fun log(level: Level, marker: Marker?, msg: CharSequence?, t: Throwable?) {
+  fun log(level: Level, marker: Marker, msg: CharSequence, t: Throwable?) {
     delegate.logIfEnabled(FQCN, level, marker, msg, t)
   }
 
-  fun log(level: Level, marker: Marker?, msg: Any?) {
+  fun log(level: Level, marker: Marker, msg: Any) {
     delegate.logIfEnabled(FQCN, level, marker, msg, null)
   }
 
-  fun log(level: Level, marker: Marker?, msg: Any?, t: Throwable?) {
+  fun log(level: Level, marker: Marker, msg: Any, t: Throwable?) {
     delegate.logIfEnabled(FQCN, level, marker, msg, t)
   }
 
-  fun log(level: Level, marker: Marker?, msg: String?) {
-    delegate.logIfEnabled(FQCN, level, marker, msg, null as Throwable?)
-  }
-
-  fun log(level: Level, marker: Marker?, msg: String?, t: Throwable?) {
-    delegate.logIfEnabled(FQCN, level, marker, msg, t)
-  }
-
-  fun log(level: Level, msg: Message?) {
+  fun log(level: Level, msg: Message) {
     delegate.logIfEnabled(FQCN, level, null, msg, null)
   }
 
-  fun log(level: Level, msg: Message?, t: Throwable?) {
+  fun log(level: Level, msg: Message, t: Throwable?) {
     delegate.logIfEnabled(FQCN, level, null, msg, t)
   }
 
-  fun log(level: Level, msg: CharSequence?) {
+  fun log(level: Level, msg: CharSequence) {
     delegate.logIfEnabled(FQCN, level, null, msg, null)
   }
 
-  fun log(level: Level, msg: CharSequence?, t: Throwable?) {
+  fun log(level: Level, msg: CharSequence, t: Throwable?) {
     delegate.logIfEnabled(FQCN, level, null, msg, t)
   }
 
-  fun log(level: Level, msg: Any?) {
+  fun log(level: Level, msg: Any) {
     delegate.logIfEnabled(FQCN, level, null, msg, null)
   }
 
-  fun log(level: Level, msg: Any?, t: Throwable?) {
-    delegate.logIfEnabled(FQCN, level, null, msg, t)
-  }
-
-  fun log(level: Level, msg: String?) {
-    delegate.logIfEnabled(FQCN, level, null, msg, null as Throwable?)
-  }
-
-  fun log(level: Level, msg: String?, t: Throwable?) {
+  fun log(level: Level, msg: Any, t: Throwable?) {
     delegate.logIfEnabled(FQCN, level, null, msg, t)
   }
 
@@ -135,75 +122,59 @@ class KotlinLogger(val delegate: ExtendedLogger) {
     delegate.logIfEnabled(FQCN, level, null, supplier.asLog4jSupplier(), t)
   }
 
-  fun log(level: Level, marker: Marker?, supplier: () -> Any?) {
+  fun log(level: Level, marker: Marker, supplier: () -> Any?) {
     delegate.logIfEnabled(FQCN, level, marker, supplier.asLog4jSupplier(), null)
   }
 
-  fun log(level: Level, marker: Marker?, t: Throwable?, supplier: () -> Any?) {
+  fun log(level: Level, marker: Marker, t: Throwable?, supplier: () -> Any?) {
     delegate.logIfEnabled(FQCN, level, marker, supplier.asLog4jSupplier(), t)
   }
 
-  fun trace(marker: Marker?, msg: Message?) {
+  fun trace(marker: Marker, msg: Message) {
     delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, null)
   }
 
-  fun trace(marker: Marker?, msg: Message?, t: Throwable?) {
+  fun trace(marker: Marker, msg: Message, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, t)
   }
 
-  fun trace(marker: Marker?, msg: CharSequence?) {
+  fun trace(marker: Marker, msg: CharSequence) {
     delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, null)
   }
 
-  fun trace(marker: Marker?, msg: CharSequence?, t: Throwable?) {
+  fun trace(marker: Marker, msg: CharSequence, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, t)
   }
 
-  fun trace(marker: Marker?, msg: Any?) {
+  fun trace(marker: Marker, msg: Any) {
     delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, null)
   }
 
-  fun trace(marker: Marker?, msg: Any?, t: Throwable?) {
+  fun trace(marker: Marker, msg: Any, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, t)
   }
 
-  fun trace(marker: Marker?, msg: String?) {
-    delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, null as Throwable?)
-  }
-
-  fun trace(marker: Marker?, msg: String?, t: Throwable?) {
-    delegate.logIfEnabled(FQCN, Level.TRACE, marker, msg, t)
-  }
-
-  fun trace(msg: Message?) {
+  fun trace(msg: Message) {
     delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, null)
   }
 
-  fun trace(msg: Message?, t: Throwable?) {
+  fun trace(msg: Message, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, t)
   }
 
-  fun trace(msg: CharSequence?) {
+  fun trace(msg: CharSequence) {
     delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, null)
   }
 
-  fun trace(msg: CharSequence?, t: Throwable?) {
+  fun trace(msg: CharSequence, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, t)
   }
 
-  fun trace(msg: Any?) {
+  fun trace(msg: Any) {
     delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, null)
   }
 
-  fun trace(msg: Any?, t: Throwable?) {
-    delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, t)
-  }
-
-  fun trace(msg: String?) {
-    delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, null as Throwable?)
-  }
-
-  fun trace(msg: String?, t: Throwable?) {
+  fun trace(msg: Any, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.TRACE, null, msg, t)
   }
 
@@ -215,11 +186,11 @@ class KotlinLogger(val delegate: ExtendedLogger) {
     delegate.logIfEnabled(FQCN, Level.TRACE, null, supplier.asLog4jSupplier(), t)
   }
 
-  fun trace(marker: Marker?, supplier: () -> Any?) {
+  fun trace(marker: Marker, supplier: () -> Any?) {
     delegate.logIfEnabled(FQCN, Level.TRACE, marker, supplier.asLog4jSupplier(), null)
   }
 
-  fun trace(marker: Marker?, t: Throwable?, supplier: () -> Any?) {
+  fun trace(marker: Marker, t: Throwable?, supplier: () -> Any?) {
     delegate.logIfEnabled(FQCN, Level.TRACE, marker, supplier.asLog4jSupplier(), t)
   }
 
@@ -244,7 +215,7 @@ class KotlinLogger(val delegate: ExtendedLogger) {
   }
 
   // TODO entry with fqcn is not part of the ExtendedLogger interface, location-awareness will be broken
-  fun traceEntry(message: Message?): EntryMessage {
+  fun traceEntry(message: Message): EntryMessage {
     return delegate.traceEntry(message)
   }
 
@@ -259,12 +230,12 @@ class KotlinLogger(val delegate: ExtendedLogger) {
   }
 
   // TODO exit with fqcn is not part of the ExtendedLogger interface, location-awareness will be broken
-  fun <R : Any?> traceExit(message: Message?, result: R): R {
+  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
-  fun traceExit(message: EntryMessage?) {
+  fun traceExit(message: EntryMessage) {
     delegate.traceExit(message)
   }
 
@@ -274,7 +245,7 @@ class KotlinLogger(val delegate: ExtendedLogger) {
   }
 
   // TODO exit with fqcn is not part of the ExtendedLogger interface, location-awareness will be broken
-  fun <R : Any?> traceExit(message: EntryMessage?, result: R): R {
+  fun <R : Any?> traceExit(message: EntryMessage, result: R): R {
     return delegate.traceExit(message, result)
   }
 
@@ -296,67 +267,51 @@ class KotlinLogger(val delegate: ExtendedLogger) {
     }
   }
 
-  fun debug(marker: Marker?, msg: Message?) {
+  fun debug(marker: Marker, msg: Message) {
     delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, null)
   }
 
-  fun debug(marker: Marker?, msg: Message?, t: Throwable?) {
+  fun debug(marker: Marker, msg: Message, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, t)
   }
 
-  fun debug(marker: Marker?, msg: CharSequence?) {
+  fun debug(marker: Marker, msg: CharSequence) {
     delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, null)
   }
 
-  fun debug(marker: Marker?, msg: CharSequence?, t: Throwable?) {
+  fun debug(marker: Marker, msg: CharSequence, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, t)
   }
 
-  fun debug(marker: Marker?, msg: Any?) {
+  fun debug(marker: Marker, msg: Any) {
     delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, null)
   }
 
-  fun debug(marker: Marker?, msg: Any?, t: Throwable?) {
+  fun debug(marker: Marker, msg: Any, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, t)
   }
 
-  fun debug(marker: Marker?, msg: String?) {
-    delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, null as Throwable?)
-  }
-
-  fun debug(marker: Marker?, msg: String?, t: Throwable?) {
-    delegate.logIfEnabled(FQCN, Level.DEBUG, marker, msg, t)
-  }
-
-  fun debug(msg: Message?) {
+  fun debug(msg: Message) {
     delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, null)
   }
 
-  fun debug(msg: Message?, t: Throwable?) {
+  fun debug(msg: Message, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, t)
   }
 
-  fun debug(msg: CharSequence?) {
+  fun debug(msg: CharSequence) {
     delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, null)
   }
 
-  fun debug(msg: CharSequence?, t: Throwable?) {
+  fun debug(msg: CharSequence, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, t)
   }
 
-  fun debug(msg: Any?) {
+  fun debug(msg: Any) {
     delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, null)
   }
 
-  fun debug(msg: Any?, t: Throwable?) {
-    delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, t)
-  }
-
-  fun debug(msg: String?) {
-    delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, null as Throwable?)
-  }
-
-  fun debug(msg: String?, t: Throwable?) {
+  fun debug(msg: Any, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.DEBUG, null, msg, t)
   }
 
@@ -368,75 +323,59 @@ class KotlinLogger(val delegate: ExtendedLogger) {
     delegate.logIfEnabled(FQCN, Level.DEBUG, null, supplier.asLog4jSupplier(), t)
   }
 
-  fun debug(marker: Marker?, supplier: () -> Any?) {
+  fun debug(marker: Marker, supplier: () -> Any?) {
     delegate.logIfEnabled(FQCN, Level.DEBUG, marker, supplier.asLog4jSupplier(), null)
   }
 
-  fun debug(marker: Marker?, t: Throwable?, supplier: () -> Any?) {
+  fun debug(marker: Marker, t: Throwable?, supplier: () -> Any?) {
     delegate.logIfEnabled(FQCN, Level.DEBUG, marker, supplier.asLog4jSupplier(), t)
   }
 
-  fun info(marker: Marker?, msg: Message?) {
+  fun info(marker: Marker, msg: Message) {
     delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, null)
   }
 
-  fun info(marker: Marker?, msg: Message?, t: Throwable?) {
+  fun info(marker: Marker, msg: Message, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, t)
   }
 
-  fun info(marker: Marker?, msg: CharSequence?) {
+  fun info(marker: Marker, msg: CharSequence) {
     delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, null)
   }
 
-  fun info(marker: Marker?, msg: CharSequence?, t: Throwable?) {
+  fun info(marker: Marker, msg: CharSequence, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, t)
   }
 
-  fun info(marker: Marker?, msg: Any?) {
+  fun info(marker: Marker, msg: Any) {
     delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, null)
   }
 
-  fun info(marker: Marker?, msg: Any?, t: Throwable?) {
-    delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, t)
-  }
-
-  fun info(marker: Marker?, msg: String?) {
-    delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, null as Throwable?)
-  }
-
-  fun info(marker: Marker?, msg: String?, t: Throwable?) {
+  fun info(marker: Marker, msg: Any, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.INFO, marker, msg, t)
   }
 
-  fun info(msg: Message?) {
+  fun info(msg: Message) {
     delegate.logIfEnabled(FQCN, Level.INFO, null, msg, null)
   }
 
-  fun info(msg: Message?, t: Throwable?) {
+  fun info(msg: Message, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.INFO, null, msg, t)
   }
 
-  fun info(msg: CharSequence?) {
+  fun info(msg: CharSequence) {
     delegate.logIfEnabled(FQCN, Level.INFO, null, msg, null)
   }
 
-  fun info(msg: CharSequence?, t: Throwable?) {
+  fun info(msg: CharSequence, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.INFO, null, msg, t)
   }
 
-  fun info(msg: Any?) {
+  fun info(msg: Any) {
     delegate.logIfEnabled(FQCN, Level.INFO, null, msg, null)
   }
 
-  fun info(msg: Any?, t: Throwable?) {
-    delegate.logIfEnabled(FQCN, Level.INFO, null, msg, t)
-  }
-
-  fun info(msg: String?) {
-    delegate.logIfEnabled(FQCN, Level.INFO, null, msg, null as Throwable?)
-  }
-
-  fun info(msg: String?, t: Throwable?) {
+  fun info(msg: Any, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.INFO, null, msg, t)
   }
 
@@ -448,75 +387,59 @@ class KotlinLogger(val delegate: ExtendedLogger) {
     delegate.logIfEnabled(FQCN, Level.INFO, null, supplier.asLog4jSupplier(), t)
   }
 
-  fun info(marker: Marker?, supplier: () -> Any?) {
+  fun info(marker: Marker, supplier: () -> Any?) {
     delegate.logIfEnabled(FQCN, Level.INFO, marker, supplier.asLog4jSupplier(), null)
   }
 
-  fun info(marker: Marker?, t: Throwable?, supplier: () -> Any?) {
+  fun info(marker: Marker, t: Throwable?, supplier: () -> Any?) {
     delegate.logIfEnabled(FQCN, Level.INFO, marker, supplier.asLog4jSupplier(), t)
   }
 
-  fun warn(marker: Marker?, msg: Message?) {
+  fun warn(marker: Marker, msg: Message) {
     delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, null)
   }
 
-  fun warn(marker: Marker?, msg: Message?, t: Throwable?) {
+  fun warn(marker: Marker, msg: Message, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, t)
   }
 
-  fun warn(marker: Marker?, msg: CharSequence?) {
+  fun warn(marker: Marker, msg: CharSequence) {
     delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, null)
   }
 
-  fun warn(marker: Marker?, msg: CharSequence?, t: Throwable?) {
+  fun warn(marker: Marker, msg: CharSequence, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, t)
   }
 
-  fun warn(marker: Marker?, msg: Any?) {
+  fun warn(marker: Marker, msg: Any) {
     delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, null)
   }
 
-  fun warn(marker: Marker?, msg: Any?, t: Throwable?) {
-    delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, t)
-  }
-
-  fun warn(marker: Marker?, msg: String?) {
-    delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, null as Throwable?)
-  }
-
-  fun warn(marker: Marker?, msg: String?, t: Throwable?) {
+  fun warn(marker: Marker, msg: Any, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.WARN, marker, msg, t)
   }
 
-  fun warn(msg: Message?) {
+  fun warn(msg: Message) {
     delegate.logIfEnabled(FQCN, Level.WARN, null, msg, null)
   }
 
-  fun warn(msg: Message?, t: Throwable?) {
+  fun warn(msg: Message, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.WARN, null, msg, t)
   }
 
-  fun warn(msg: CharSequence?) {
+  fun warn(msg: CharSequence) {
     delegate.logIfEnabled(FQCN, Level.WARN, null, msg, null)
   }
 
-  fun warn(msg: CharSequence?, t: Throwable?) {
+  fun warn(msg: CharSequence, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.WARN, null, msg, t)
   }
 
-  fun warn(msg: Any?) {
+  fun warn(msg: Any) {
     delegate.logIfEnabled(FQCN, Level.WARN, null, msg, null)
   }
 
-  fun warn(msg: Any?, t: Throwable?) {
-    delegate.logIfEnabled(FQCN, Level.WARN, null, msg, t)
-  }
-
-  fun warn(msg: String?) {
-    delegate.logIfEnabled(FQCN, Level.WARN, null, msg, null as Throwable?)
-  }
-
-  fun warn(msg: String?, t: Throwable?) {
+  fun warn(msg: Any, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.WARN, null, msg, t)
   }
 
@@ -528,75 +451,59 @@ class KotlinLogger(val delegate: ExtendedLogger) {
     delegate.logIfEnabled(FQCN, Level.WARN, null, supplier.asLog4jSupplier(), t)
   }
 
-  fun warn(marker: Marker?, supplier: () -> Any?) {
+  fun warn(marker: Marker, supplier: () -> Any?) {
     delegate.logIfEnabled(FQCN, Level.WARN, marker, supplier.asLog4jSupplier(), null)
   }
 
-  fun warn(marker: Marker?, t: Throwable?, supplier: () -> Any?) {
+  fun warn(marker: Marker, t: Throwable?, supplier: () -> Any?) {
     delegate.logIfEnabled(FQCN, Level.WARN, marker, supplier.asLog4jSupplier(), t)
   }
 
-  fun error(marker: Marker?, msg: Message?) {
+  fun error(marker: Marker, msg: Message) {
     delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, null)
   }
 
-  fun error(marker: Marker?, msg: Message?, t: Throwable?) {
+  fun error(marker: Marker, msg: Message, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, t)
   }
 
-  fun error(marker: Marker?, msg: CharSequence?) {
+  fun error(marker: Marker, msg: CharSequence) {
     delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, null)
   }
 
-  fun error(marker: Marker?, msg: CharSequence?, t: Throwable?) {
+  fun error(marker: Marker, msg: CharSequence, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, t)
   }
 
-  fun error(marker: Marker?, msg: Any?) {
+  fun error(marker: Marker, msg: Any) {
     delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, null)
   }
 
-  fun error(marker: Marker?, msg: Any?, t: Throwable?) {
+  fun error(marker: Marker, msg: Any, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, t)
   }
 
-  fun error(marker: Marker?, msg: String?) {
-    delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, null as Throwable?)
-  }
-
-  fun error(marker: Marker?, msg: String?, t: Throwable?) {
-    delegate.logIfEnabled(FQCN, Level.ERROR, marker, msg, t)
-  }
-
-  fun error(msg: Message?) {
+  fun error(msg: Message) {
     delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, null)
   }
 
-  fun error(msg: Message?, t: Throwable?) {
+  fun error(msg: Message, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, t)
   }
 
-  fun error(msg: CharSequence?) {
+  fun error(msg: CharSequence) {
     delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, null)
   }
 
-  fun error(msg: CharSequence?, t: Throwable?) {
+  fun error(msg: CharSequence, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, t)
   }
 
-  fun error(msg: Any?) {
+  fun error(msg: Any) {
     delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, null)
   }
 
-  fun error(msg: Any?, t: Throwable?) {
-    delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, t)
-  }
-
-  fun error(msg: String?) {
-    delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, null as Throwable?)
-  }
-
-  fun error(msg: String?, t: Throwable?) {
+  fun error(msg: Any, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.ERROR, null, msg, t)
   }
 
@@ -608,75 +515,59 @@ class KotlinLogger(val delegate: ExtendedLogger) {
     delegate.logIfEnabled(FQCN, Level.ERROR, null, supplier.asLog4jSupplier(), t)
   }
 
-  fun error(marker: Marker?, supplier: () -> Any?) {
+  fun error(marker: Marker, supplier: () -> Any?) {
     delegate.logIfEnabled(FQCN, Level.ERROR, marker, supplier.asLog4jSupplier(), null)
   }
 
-  fun error(marker: Marker?, t: Throwable?, supplier: () -> Any?) {
+  fun error(marker: Marker, t: Throwable?, supplier: () -> Any?) {
     delegate.logIfEnabled(FQCN, Level.ERROR, marker, supplier.asLog4jSupplier(), t)
   }
 
-  fun fatal(marker: Marker?, msg: Message?) {
+  fun fatal(marker: Marker, msg: Message) {
     delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, null)
   }
 
-  fun fatal(marker: Marker?, msg: Message?, t: Throwable?) {
+  fun fatal(marker: Marker, msg: Message, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, t)
   }
 
-  fun fatal(marker: Marker?, msg: CharSequence?) {
+  fun fatal(marker: Marker, msg: CharSequence) {
     delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, null)
   }
 
-  fun fatal(marker: Marker?, msg: CharSequence?, t: Throwable?) {
+  fun fatal(marker: Marker, msg: CharSequence, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, t)
   }
 
-  fun fatal(marker: Marker?, msg: Any?) {
+  fun fatal(marker: Marker, msg: Any) {
     delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, null)
   }
 
-  fun fatal(marker: Marker?, msg: Any?, t: Throwable?) {
+  fun fatal(marker: Marker, msg: Any, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, t)
   }
 
-  fun fatal(marker: Marker?, msg: String?) {
-    delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, null as Throwable?)
-  }
-
-  fun fatal(marker: Marker?, msg: String?, t: Throwable?) {
-    delegate.logIfEnabled(FQCN, Level.FATAL, marker, msg, t)
-  }
-
-  fun fatal(msg: Message?) {
+  fun fatal(msg: Message) {
     delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, null)
   }
 
-  fun fatal(msg: Message?, t: Throwable?) {
+  fun fatal(msg: Message, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, t)
   }
 
-  fun fatal(msg: CharSequence?) {
+  fun fatal(msg: CharSequence) {
     delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, null)
   }
 
-  fun fatal(msg: CharSequence?, t: Throwable?) {
+  fun fatal(msg: CharSequence, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, t)
   }
 
-  fun fatal(msg: Any?) {
+  fun fatal(msg: Any) {
     delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, null)
   }
 
-  fun fatal(msg: Any?, t: Throwable?) {
-    delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, t)
-  }
-
-  fun fatal(msg: String?) {
-    delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, null as Throwable?)
-  }
-
-  fun fatal(msg: String?, t: Throwable?) {
+  fun fatal(msg: Any, t: Throwable?) {
     delegate.logIfEnabled(FQCN, Level.FATAL, null, msg, t)
   }
 
@@ -688,11 +579,11 @@ class KotlinLogger(val delegate: ExtendedLogger) {
     delegate.logIfEnabled(FQCN, Level.FATAL, null, supplier.asLog4jSupplier(), t)
   }
 
-  fun fatal(marker: Marker?, supplier: () -> Any?) {
+  fun fatal(marker: Marker, supplier: () -> Any?) {
     delegate.logIfEnabled(FQCN, Level.FATAL, marker, supplier.asLog4jSupplier(), null)
   }
 
-  fun fatal(marker: Marker?, t: Throwable?, supplier: () -> Any?) {
+  fun fatal(marker: Marker, t: Throwable?, supplier: () -> Any?) {
     delegate.logIfEnabled(FQCN, Level.FATAL, marker, supplier.asLog4jSupplier(), t)
   }
 

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/db30ecb5/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt
index d873454..c8d7d93 100644
--- a/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt
+++ b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt
@@ -69,7 +69,7 @@ class LoggerTest {
     val logger = KotlinLogger(f.mockLogger)
     val msg = "This is an error log."
     logger.error(msg)
-    verify(f.mockLogger).logIfEnabled(anyString(), eq(Level.ERROR), isNull(), eq(msg), isNull<Throwable>())
+    verify(f.mockLogger).logIfEnabled(anyString(), eq(Level.ERROR), isNull(), eq<CharSequence>(msg), isNull())
   }
 
   @Test
@@ -80,7 +80,7 @@ class LoggerTest {
     val logger = KotlinLogger(f.mockLogger)
     val msg = "string msg with value: ${f.manager.fetchValue()}"
     logger.fatal(msg)
-    verify(f.mockLogger).logIfEnabled(anyString(), eq(Level.FATAL), isNull(), eq(msg), isNull<Throwable>())
+    verify(f.mockLogger).logIfEnabled(anyString(), eq(Level.FATAL), isNull(), eq<CharSequence>(msg), isNull())
     verify(f.manager).fetchValue()
   }
 
@@ -95,7 +95,7 @@ class LoggerTest {
     val logger = KotlinLogger(f.mockLogger)
     val msg = "string msg with value: ${f.manager.fetchValue()}"
     logger.fatal(msg)
-    verify(f.mockLogger).logIfEnabled(anyString(), eq(Level.FATAL), isNull(), eq(msg), isNull<Throwable>())
+    verify(f.mockLogger).logIfEnabled(anyString(), eq(Level.FATAL), isNull(), eq<CharSequence>(msg), isNull())
     verify(f.manager).fetchValue()
   }
 


[21/25] logging-log4j-kotlin git commit: Use ListAppender for logging integration testing

Posted by ma...@apache.org.
Use ListAppender for logging integration testing


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/08b62e0b
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/tree/08b62e0b
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/diff/08b62e0b

Branch: refs/heads/master
Commit: 08b62e0bbc27f79f0ba6dbfe5bceb95cbe822ea8
Parents: 45e4700
Author: Raman Gupta <ro...@gmail.com>
Authored: Tue Mar 27 12:08:54 2018 -0400
Committer: Raman Gupta <ro...@gmail.com>
Committed: Tue Mar 27 12:20:34 2018 -0400

----------------------------------------------------------------------
 .../LoggerCompanionTest.kt                      | 20 +++++++++--
 .../LoggerMixinCompanionExtendsTest.kt          | 20 +++++++++--
 .../LoggerMixinExtendsTest.kt                   | 21 +++++++++--
 .../support/LoggerTests.kt                      | 37 ++++++++++++++++++++
 4 files changed, 92 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/08b62e0b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerCompanionTest.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerCompanionTest.kt b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerCompanionTest.kt
index 1d78b0b..5718259 100644
--- a/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerCompanionTest.kt
+++ b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerCompanionTest.kt
@@ -16,16 +16,32 @@
  */
 package org.apache.logging.log4j.kotlin
 
+import org.apache.logging.log4j.Level
+import org.apache.logging.log4j.kotlin.support.withListAppender
 import org.junit.Test
+import kotlin.test.assertEquals
 
 class LoggerCompanionTest {
   companion object {
     val log = logger()
   }
 
+  // note: using LoggerContextRule here to init the config does nothing as the initialization happens in the companion
+  // log4j will fall back to the default config
+
   @Test
   fun `Logging from a function instantiation via companion logs the correct class name`() {
-    // this should log from class LoggerCompanionTest
-    log.error("This is an error log.")
+    val msg = "This is an error log."
+    val msgs = withListAppender { _, _ ->
+      log.error(msg)
+    }
+
+    assertEquals(1, msgs.size.toLong())
+
+    msgs.first().also {
+      assertEquals(Level.ERROR, it.level)
+      assertEquals(msg, it.message.format)
+      assertEquals(LoggerCompanionTest::class.qualifiedName, it.loggerName)
+    }
   }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/08b62e0b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerMixinCompanionExtendsTest.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerMixinCompanionExtendsTest.kt b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerMixinCompanionExtendsTest.kt
index 223a0b6..cd2bbfe 100644
--- a/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerMixinCompanionExtendsTest.kt
+++ b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerMixinCompanionExtendsTest.kt
@@ -16,15 +16,31 @@
  */
 package org.apache.logging.log4j.kotlin
 
+import org.apache.logging.log4j.Level
+import org.apache.logging.log4j.kotlin.support.withListAppender
 import org.junit.Test
+import kotlin.test.assertEquals
 
 class LoggerMixinCompanionExtendsTest {
 
   companion object : Logging
 
+  // note: using LoggerContextRule here to init the config does nothing as the initialization happens in the companion
+  // log4j will fall back to the default config
+
   @Test
   fun `Logging from an interface mix-in via companion logs the correct class name`() {
-    // this should log from class LoggerMixinCompanionExtendsTest
-    logger.error("This is an error log.")
+    val msg = "This is an error log."
+    val msgs = withListAppender { _, _ ->
+      logger.error(msg)
+    }
+
+    assertEquals(1, msgs.size.toLong())
+
+    msgs.first().also {
+      assertEquals(Level.ERROR, it.level)
+      assertEquals(msg, it.message.format)
+      assertEquals(LoggerMixinCompanionExtendsTest::class.qualifiedName, it.loggerName)
+    }
   }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/08b62e0b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerMixinExtendsTest.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerMixinExtendsTest.kt b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerMixinExtendsTest.kt
index 2939833..082c944 100644
--- a/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerMixinExtendsTest.kt
+++ b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerMixinExtendsTest.kt
@@ -16,13 +16,30 @@
  */
 package org.apache.logging.log4j.kotlin
 
+import org.apache.logging.log4j.Level.ERROR
+import org.apache.logging.log4j.junit.LoggerContextRule
+import org.apache.logging.log4j.kotlin.support.withListAppender
+import org.junit.Rule
 import org.junit.Test
+import kotlin.test.assertEquals
 
 class LoggerMixinExtendsTest : Logging {
 
+  @Rule @JvmField var init = LoggerContextRule("InfoLogger.xml")
+
   @Test
   fun `Logging using an interface mix-in logs the correct class name`() {
-    // this should log from class LoggerMixinExtendsTest
-    logger.error("This is an error log.")
+    val msg = "This is an error log."
+    val msgs = withListAppender { _, _ ->
+      logger.error(msg)
+    }
+
+    assertEquals(1, msgs.size.toLong())
+
+    msgs.first().also {
+      assertEquals(ERROR, it.level)
+      assertEquals(msg, it.message.format)
+      assertEquals(LoggerMixinExtendsTest::class.qualifiedName, it.loggerName)
+    }
   }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/08b62e0b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/support/LoggerTests.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/support/LoggerTests.kt b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/support/LoggerTests.kt
new file mode 100644
index 0000000..a3ccf94
--- /dev/null
+++ b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/support/LoggerTests.kt
@@ -0,0 +1,37 @@
+/*
+ * 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.support
+
+import org.apache.logging.log4j.LogManager
+import org.apache.logging.log4j.core.LogEvent
+import org.apache.logging.log4j.core.Logger
+import org.apache.logging.log4j.test.appender.ListAppender
+
+fun rootLogger() = LogManager.getRootLogger() as Logger
+
+fun withListAppender(block: (rootLogger: Logger, appender: ListAppender) -> Unit): List<LogEvent> {
+  val appender = ListAppender("List").apply { start() }
+  val root = rootLogger().apply { addAppender(appender) }
+
+  try {
+    block(root, appender)
+    return appender.events
+  } finally {
+    appender.stop()
+    root.removeAppender(appender)
+  }
+}


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

Posted by ma...@apache.org.
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)
+  }
+}


[03/25] logging-log4j-kotlin git commit: Instantiate logger via =, not by, trace, build updates

Posted by ma...@apache.org.
Instantiate logger via =, not by, trace, build updates


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/5c64cf41
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/tree/5c64cf41
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/diff/5c64cf41

Branch: refs/heads/master
Commit: 5c64cf417955e4b084cf90cbea4aaedf460d4c23
Parents: 3a2eb84
Author: Raman Gupta <ro...@gmail.com>
Authored: Thu Dec 8 11:43:00 2016 -0500
Committer: Raman Gupta <ro...@gmail.com>
Committed: Thu Dec 8 11:43:00 2016 -0500

----------------------------------------------------------------------
 .../logging/log4j/kotlin/sample/LoggingApp.kt   | 34 ++++++++++----
 .../org/apache/logging/log4j/kotlin/Logger.kt   | 44 ++++++++++++++----
 .../LoggerCompanionTest.kt                      | 30 ++++++++++++
 .../LoggerTest.kt                               |  9 +++-
 .../src/test/resources/log4j2-test.xml          | 31 +++++++++++++
 pom.xml                                         | 48 ++++++++++++++++++++
 6 files changed, 176 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/5c64cf41/log4j-api-kotlin-sample/src/main/kotlin/org/apache/logging/log4j/kotlin/sample/LoggingApp.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin-sample/src/main/kotlin/org/apache/logging/log4j/kotlin/sample/LoggingApp.kt b/log4j-api-kotlin-sample/src/main/kotlin/org/apache/logging/log4j/kotlin/sample/LoggingApp.kt
index 33f9d0e..43890ea 100644
--- a/log4j-api-kotlin-sample/src/main/kotlin/org/apache/logging/log4j/kotlin/sample/LoggingApp.kt
+++ b/log4j-api-kotlin-sample/src/main/kotlin/org/apache/logging/log4j/kotlin/sample/LoggingApp.kt
@@ -18,9 +18,10 @@ package org.apache.logging.log4j.kotlin.sample
 
 import org.apache.logging.log4j.Level
 import org.apache.logging.log4j.kotlin.logger
+import java.util.*
 
 object LoggingApp {
-  val log by logger()
+  val log = logger()
 
   @JvmStatic
   fun main(args: Array<String>) {
@@ -30,15 +31,30 @@ object LoggingApp {
 
     log.info { "Hello, world: $s1 $s2" }
 
-    log.traceEntry()
-    log.traceEntry(s1, s2)
-    val entryMessage = log.traceEntry("foobar", "")
+    log.trace("Regular trace")
 
-    log.traceExit()
-    log.traceExit(s2)
-    log.traceExit(entryMessage)
-    log.traceExit(entryMessage, s2)
-    log.traceExit("bonsai", s2)
+    log.trace {
+      log.info("Inside trace extension!")
+    }
+
+    log.trace({ "Trace extension with entry message." }) {
+      log.info("Inside trace extension with supplier!")
+    }
+
+    fun getKey(): Int = log.trace {
+      Random().nextInt(10)
+    }
+
+    fun getKeyError(): Int = log.trace {
+      throw Exception("Oops!")
+    }
+
+    log.info { "Key was ${getKey()}" }
+    try {
+      log.info { "Key was ${getKeyError()}" }
+    } catch(e: Exception) {
+      Unit
+    }
 
     log.throwing(t)
     log.throwing(Level.INFO, t)

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/5c64cf41/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt
index 8e32d54..6e4920c 100644
--- a/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt
+++ b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt
@@ -16,7 +16,6 @@
  */
 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
@@ -51,20 +50,15 @@ import kotlin.reflect.companionObject
  * ```
  * log.error(exc) { "Unexpected exception evaluating $whatever." }
  * ```
+ *
+ * One known limitation of the Kotlin logging API is that location aware logging does not work
  */
-class FunctionalLogger(val log: ExtendedLogger): ReadOnlyProperty<Any?, FunctionalLogger>, Logger by log {
+class FunctionalLogger(val log: ExtendedLogger): Logger by log {
   companion object {
     @Suppress("NOTHING_TO_INLINE")
     inline fun <T: Any?> (() -> T).asLog4jSupplier(): Supplier<T> = Supplier { invoke() }
   }
 
-  // allows access to FunctionalLogger as a property delegate
-  override operator fun getValue(thisRef: Any?, property: KProperty<*>) = this
-
-  inline fun trace(crossinline supplier: () -> Any?) {
-    log.trace(supplier.asLog4jSupplier())
-  }
-
   inline fun trace(t: Throwable, crossinline supplier: () -> Any?) {
     log.trace(supplier.asLog4jSupplier(), t)
   }
@@ -156,10 +150,40 @@ class FunctionalLogger(val log: ExtendedLogger): ReadOnlyProperty<Any?, Function
   inline fun fatal(marker: Marker?, t: Throwable?, crossinline supplier: () -> Any?) {
     log.fatal(marker, supplier.asLog4jSupplier(), t)
   }
+
+  inline fun <R : Any?> trace(block: () -> R): R {
+    val entry = traceEntry()
+    try {
+      val result = block()
+      when(result) {
+        is Unit -> traceExit(entry)
+        else -> traceExit(entry, result)
+      }
+      return result
+    } catch (e: Throwable) {
+      catching(e)
+      throw e
+    }
+  }
+
+  inline fun <R : Any?> trace(crossinline supplier: () -> Any?, block: () -> R): R {
+    val entry = traceEntry(supplier.asLog4jSupplier())
+    try {
+      val result = block()
+      when(result) {
+        is Unit -> traceExit(entry)
+        else -> traceExit(entry, result)
+      }
+      return result
+    } catch (e: Throwable) {
+      catching(e)
+      throw e
+    }
+  }
 }
 
 /**
- * A delegate-based logger instantiation. Use: `val log by logger()`.
+ * Logger instantiation. Use: `val log = logger()`.
  */
 @Suppress("unused")
 inline fun <reified T : Any> T.logger(): FunctionalLogger =

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/5c64cf41/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerCompanionTest.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerCompanionTest.kt b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerCompanionTest.kt
new file mode 100644
index 0000000..c7c9ba0
--- /dev/null
+++ b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerCompanionTest.kt
@@ -0,0 +1,30 @@
+/*
+ * 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.junit.Test
+
+class LoggerCompanionTest {
+  companion object {
+    val log = logger()
+  }
+
+  @Test
+  fun `Logging from companion logger works!`() {
+    log.debug("This is a debug log.")
+  }
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/5c64cf41/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt
index 5abf847..8f6ada6 100644
--- a/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt
+++ b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt
@@ -16,6 +16,13 @@
  */
 package org.apache.logging.log4j.kotlin
 
+import org.junit.Test
+
 class LoggerTest {
-  // TODO
+  val log = logger()
+
+  @Test
+  fun `Logging works!`() {
+    log.debug("This is a debug log.")
+  }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/5c64cf41/log4j-api-kotlin/src/test/resources/log4j2-test.xml
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/test/resources/log4j2-test.xml b/log4j-api-kotlin/src/test/resources/log4j2-test.xml
new file mode 100644
index 0000000..4113137
--- /dev/null
+++ b/log4j-api-kotlin/src/test/resources/log4j2-test.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<Configuration name="KotlinTests" status="error">
+  <Appenders>
+    <Console name="Console">
+      <PatternLayout>
+        <Pattern>%d %5p %c{1} %X %F:%L - %m%n</Pattern>
+      </PatternLayout>
+    </Console>
+  </Appenders>
+  <Loggers>
+    <Root level="TRACE">
+      <AppenderRef ref="Console"/>
+    </Root>
+  </Loggers>
+</Configuration>

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/5c64cf41/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 422428c..0453ad0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -34,6 +34,12 @@
     <url>https://git-wip-us.apache.org/repos/asf?p=logging-log4j-kotlin.git;a=summary</url>
     <tag>log4j-${Log4jReleaseVersion}</tag>
   </scm>
+
+  <properties>
+    <kotlin.version>1.0.5-2</kotlin.version>
+  </properties>
+
+
   <dependencyManagement>
     <dependencies>
       <dependency>
@@ -43,6 +49,48 @@
       </dependency>
     </dependencies>
   </dependencyManagement>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.jetbrains.kotlin</groupId>
+      <artifactId>kotlin-stdlib</artifactId>
+      <version>${kotlin.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.jetbrains.kotlin</groupId>
+      <artifactId>kotlin-test</artifactId>
+      <version>${kotlin.version}</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.jetbrains.kotlin</groupId>
+        <artifactId>kotlin-maven-plugin</artifactId>
+        <version>${kotlin.version}</version>
+        <executions>
+          <execution>
+            <id>compile</id>
+            <phase>compile</phase>
+            <goals>
+              <goal>compile</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>test-compile</id>
+            <phase>test-compile</phase>
+            <goals>
+              <goal>test-compile</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
+
   <modules>
     <module>log4j-api-kotlin</module>
     <module>log4j-api-kotlin-sample</module>


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

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/98f21c94/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt
deleted file mode 100644
index 19760c3..0000000
--- a/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt
+++ /dev/null
@@ -1,1718 +0,0 @@
-/*
- * 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 log: ExtendedLogger): Logger by log {
-  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?) {
-    log.logIfEnabled(FQCN, level, marker, msg, null)
-  }
-
-  override fun log(level: Level, marker: Marker?, msg: Message?, t: Throwable?) {
-    log.logIfEnabled(FQCN, level, marker, msg, t)
-  }
-
-  override fun log(level: Level, marker: Marker?, msg: CharSequence?) {
-    log.logIfEnabled(FQCN, level, marker, msg, null)
-  }
-
-  override fun log(level: Level, marker: Marker?, msg: CharSequence?, t: Throwable?) {
-    log.logIfEnabled(FQCN, level, marker, msg, t)
-  }
-
-  override fun log(level: Level, marker: Marker?, msg: Any?) {
-    log.logIfEnabled(FQCN, level, marker, msg, null)
-  }
-
-  override fun log(level: Level, marker: Marker?, msg: String?) {
-    log.logIfEnabled(FQCN, level, marker, msg, null as Throwable?)
-  }
-
-  override fun log(level: Level, marker: Marker?, msg: String?, vararg params: Any?) {
-    log.logIfEnabled(FQCN, level, marker, msg, *params)
-  }
-
-  override fun log(level: Level, marker: Marker?, msg: String?, t: Throwable?) {
-    log.logIfEnabled(FQCN, level, marker, msg, t)
-  }
-
-  override fun log(level: Level, msg: Message?) {
-    log.logIfEnabled(FQCN, level, null, msg, null)
-  }
-
-  override fun log(level: Level, msg: Message?, t: Throwable?) {
-    log.logIfEnabled(FQCN, level, null, msg, t)
-  }
-
-  override fun log(level: Level, msg: CharSequence?) {
-    log.logIfEnabled(FQCN, level, null, msg, null)
-  }
-
-  override fun log(level: Level, msg: CharSequence?, t: Throwable?) {
-    log.logIfEnabled(FQCN, level, null, msg, t)
-  }
-
-  override fun log(level: Level, msg: Any?) {
-    log.logIfEnabled(FQCN, level, null, msg, null)
-  }
-
-  override fun log(level: Level, msg: Any?, t: Throwable?) {
-    log.logIfEnabled(FQCN, level, null, msg, t)
-  }
-
-  override fun log(level: Level, msg: String?) {
-    log.logIfEnabled(FQCN, level, null, msg, null as Throwable?)
-  }
-
-  override fun log(level: Level, msg: String?, vararg params: Any?) {
-    log.logIfEnabled(FQCN, level, null, msg, *params)
-  }
-
-  override fun log(level: Level, msg: String?, t: Throwable?) {
-    log.logIfEnabled(FQCN, level, null, msg, t)
-  }
-
-  override fun log(level: Level, msgSupplier: Supplier<*>?) {
-    log.logIfEnabled(FQCN, level, null, msgSupplier, null)
-  }
-
-  fun log(level: Level, supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, level, null, supplier.asLog4jSupplier(), null)
-  }
-
-  override fun log(level: Level, msgSupplier: Supplier<*>?, t: Throwable?) {
-    log.logIfEnabled(FQCN, level, null, msgSupplier, t)
-  }
-
-  fun log(level: Level, t: Throwable, supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, level, null, supplier.asLog4jSupplier(), t)
-  }
-
-  override fun log(level: Level, marker: Marker?, msgSupplier: Supplier<*>?) {
-    log.logIfEnabled(FQCN, level, marker, msgSupplier, null)
-  }
-
-  fun log(level: Level, marker: Marker?, supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, level, marker, supplier.asLog4jSupplier(), null)
-  }
-
-  override fun log(level: Level, marker: Marker?, msg: String?, vararg paramSuppliers: Supplier<*>?) {
-    log.logIfEnabled(FQCN, level, marker, msg, *paramSuppliers)
-  }
-
-  fun log(level: Level, marker: Marker?, msg: String?, vararg paramSuppliers: () -> Any?) {
-    log.logIfEnabled(FQCN, level, marker, msg, *paramSuppliers.asLog4jSuppliers())
-  }
-
-  override fun log(level: Level, marker: Marker?, msgSupplier: Supplier<*>?, t: Throwable?) {
-    log.logIfEnabled(FQCN, level, marker, msgSupplier, t)
-  }
-
-  fun log(level: Level, marker: Marker?, t: Throwable?, supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, level, marker, supplier.asLog4jSupplier(), t)
-  }
-
-  override fun log(level: Level, msg: String?, vararg paramSuppliers: Supplier<*>?) {
-    log.logIfEnabled(FQCN, level, null, msg, *paramSuppliers)
-  }
-
-  fun log(level: Level, msg: String?, vararg paramSuppliers: () -> Any?) {
-    log.logIfEnabled(FQCN, level, null, msg, *paramSuppliers.asLog4jSuppliers())
-  }
-
-  @Deprecated("Use lambda methods.", ReplaceWith("log.trace(Marker, () -> Any?>)"))
-  override fun log(level: Level, marker: Marker?, msgSupplier: MessageSupplier?) {
-    log.logIfEnabled(FQCN, level, marker, msgSupplier, null)
-  }
-
-  @Deprecated("Use lambda methods.", ReplaceWith("log.trace(Marker, Throwable, () -> Any?>)"))
-  override fun log(level: Level, marker: Marker?, msgSupplier: MessageSupplier?, t: Throwable?) {
-    log.logIfEnabled(FQCN, level, marker, msgSupplier, t)
-  }
-
-  @Deprecated("Use lambda methods.", ReplaceWith("log.trace(() -> Any?>)"))
-  override fun log(level: Level, messageSupplier: MessageSupplier?) {
-    log.logIfEnabled(FQCN, level, null, messageSupplier, null)
-  }
-
-  @Deprecated("Use lambda methods.", ReplaceWith("log.trace(Throwable, () -> Any?>)"))
-  override fun log(level: Level, msgSupplier: MessageSupplier?, t: Throwable?) {
-    log.logIfEnabled(FQCN, level, null, msgSupplier, t)
-  }
-
-  override fun log(level: Level, marker: Marker?, msg: String?, p0: Any?) {
-    log.logIfEnabled(FQCN, level, marker, msg, p0)
-  }
-
-  override fun log(level: Level, marker: Marker?, msg: String?, p0: Any?, p1: Any?) {
-    log.logIfEnabled(FQCN, level, marker, msg, p0, p1)
-  }
-
-  override fun log(level: Level, marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.logIfEnabled(FQCN, level, marker, msg, t)
-  }
-
-  override fun log(level: Level, msg: String?, p0: Any?) {
-    log.logIfEnabled(FQCN, level, null, msg, p0)
-  }
-
-  override fun log(level: Level, msg: String?, p0: Any?, p1: Any?) {
-    log.logIfEnabled(FQCN, level, null, msg, p0, p1)
-  }
-
-  override fun log(level: Level, msg: String?, p0: Any?, p1: Any?, p2: Any?) {
-    log.logIfEnabled(FQCN, level, null, msg, p0, p1, p2)
-  }
-
-  override fun log(level: Level, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.logIfEnabled(FQCN, level, null, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)
-  }
-
-  override fun trace(marker: Marker?, msg: Message?) {
-    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, null)
-  }
-
-  override fun trace(marker: Marker?, msg: Message?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, t)
-  }
-
-  override fun trace(marker: Marker?, msg: CharSequence?) {
-    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, null)
-  }
-
-  override fun trace(marker: Marker?, msg: CharSequence?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, t)
-  }
-
-  override fun trace(marker: Marker?, msg: Any?) {
-    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, null)
-  }
-
-  override fun trace(marker: Marker?, msg: String?) {
-    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, null as Throwable?)
-  }
-
-  override fun trace(marker: Marker?, msg: String?, vararg params: Any?) {
-    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, *params)
-  }
-
-  override fun trace(marker: Marker?, msg: String?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, t)
-  }
-
-  override fun trace(msg: Message?) {
-    log.logIfEnabled(FQCN, Level.TRACE, null, msg, null)
-  }
-
-  override fun trace(msg: Message?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.TRACE, null, msg, t)
-  }
-
-  override fun trace(msg: CharSequence?) {
-    log.logIfEnabled(FQCN, Level.TRACE, null, msg, null)
-  }
-
-  override fun trace(msg: CharSequence?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.TRACE, null, msg, t)
-  }
-
-  override fun trace(msg: Any?) {
-    log.logIfEnabled(FQCN, Level.TRACE, null, msg, null)
-  }
-
-  override fun trace(msg: Any?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.TRACE, null, msg, t)
-  }
-
-  override fun trace(msg: String?) {
-    log.logIfEnabled(FQCN, Level.TRACE, null, msg, null as Throwable?)
-  }
-
-  override fun trace(msg: String?, vararg params: Any?) {
-    log.logIfEnabled(FQCN, Level.TRACE, null, msg, *params)
-  }
-
-  override fun trace(msg: String?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.TRACE, null, msg, t)
-  }
-
-  override fun trace(msgSupplier: Supplier<*>?) {
-    log.logIfEnabled(FQCN, Level.TRACE, null, msgSupplier, null)
-  }
-
-  fun trace(supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.TRACE, null, supplier.asLog4jSupplier(), null)
-  }
-
-  override fun trace(msgSupplier: Supplier<*>?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.TRACE, null, msgSupplier, t)
-  }
-
-  fun trace(t: Throwable, supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.TRACE, null, supplier.asLog4jSupplier(), t)
-  }
-
-  override fun trace(marker: Marker?, msgSupplier: Supplier<*>?) {
-    log.logIfEnabled(FQCN, Level.TRACE, marker, msgSupplier, null)
-  }
-
-  fun trace(marker: Marker?, supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.TRACE, marker, supplier.asLog4jSupplier(), null)
-  }
-
-  override fun trace(marker: Marker?, msg: String?, vararg paramSuppliers: Supplier<*>?) {
-    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, *paramSuppliers)
-  }
-
-  fun trace(marker: Marker?, msg: String?, vararg paramSuppliers: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, *paramSuppliers.asLog4jSuppliers())
-  }
-
-  override fun trace(marker: Marker?, msgSupplier: Supplier<*>?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.TRACE, marker, msgSupplier, t)
-  }
-
-  fun trace(marker: Marker?, t: Throwable?, supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.TRACE, marker, supplier.asLog4jSupplier(), t)
-  }
-
-  override fun trace(msg: String?, vararg paramSuppliers: Supplier<*>?) {
-    log.logIfEnabled(FQCN, Level.TRACE, null, msg, *paramSuppliers)
-  }
-
-  fun trace(msg: String?, vararg paramSuppliers: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.TRACE, null, msg, *paramSuppliers.asLog4jSuppliers())
-  }
-
-  @Deprecated("Use lambda methods.", ReplaceWith("log.trace(Marker, () -> Any?>)"))
-  override fun trace(marker: Marker?, msgSupplier: MessageSupplier?) {
-    log.logIfEnabled(FQCN, Level.TRACE, marker, msgSupplier, null)
-  }
-
-  @Deprecated("Use lambda methods.", ReplaceWith("log.trace(Marker, Throwable, () -> Any?>)"))
-  override fun trace(marker: Marker?, msgSupplier: MessageSupplier?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.TRACE, marker, msgSupplier, t)
-  }
-
-  @Deprecated("Use lambda methods.", ReplaceWith("log.trace(() -> Any?>)"))
-  override fun trace(messageSupplier: MessageSupplier?) {
-    log.logIfEnabled(FQCN, Level.TRACE, null, messageSupplier, null)
-  }
-
-  @Deprecated("Use lambda methods.", ReplaceWith("log.trace(Throwable, () -> Any?>)"))
-  override fun trace(msgSupplier: MessageSupplier?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.TRACE, null, msgSupplier, t)
-  }
-
-  override fun trace(marker: Marker?, msg: String?, p0: Any?) {
-    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, p0)
-  }
-
-  override fun trace(marker: Marker?, msg: String?, p0: Any?, p1: Any?) {
-    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, p0, p1)
-  }
-
-  override fun trace(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?) {
-    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, p0, p2, p2)
-  }
-
-  override fun trace(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.logIfEnabled(FQCN, Level.TRACE, marker, msg, t)
-  }
-
-  override fun trace(msg: String?, p0: Any?) {
-    log.logIfEnabled(FQCN, Level.TRACE, null, msg, p0)
-  }
-
-  override fun trace(msg: String?, p0: Any?, p1: Any?) {
-    log.logIfEnabled(FQCN, Level.TRACE, null, msg, p0, p1)
-  }
-
-  override fun trace(msg: String?, p0: Any?, p1: Any?, p2: Any?) {
-    log.logIfEnabled(FQCN, Level.TRACE, null, msg, p0, p1, p2)
-  }
-
-  override fun trace(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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 log.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 log.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 log.traceEntry(*paramSuppliers)
-  }
-
-  fun traceEntry(vararg paramSuppliers: () -> Any?): EntryMessage {
-    return log.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 log.traceEntry(format, *paramSuppliers)
-  }
-
-  fun traceEntry(format: String?, vararg paramSuppliers: () -> Any?): EntryMessage {
-    return log.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 log.traceEntry(message)
-  }
-
-  // TODO exit with fqcn is not part of the ExtendedLogger interface, location-awareness will be broken
-  override fun traceExit() {
-    log.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 log.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 log.traceExit(message, result)
-  }
-
-  // TODO exit with fqcn is not part of the ExtendedLogger interface, location-awareness will be broken
-  override fun traceExit(message: EntryMessage?) {
-    log.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 log.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 log.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?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, marker, msg, null)
-  }
-
-  override fun debug(marker: Marker?, msg: Message?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, marker, msg, t)
-  }
-
-  override fun debug(marker: Marker?, msg: CharSequence?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, marker, msg, null)
-  }
-
-  override fun debug(marker: Marker?, msg: CharSequence?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, marker, msg, t)
-  }
-
-  override fun debug(marker: Marker?, msg: Any?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, marker, msg, null)
-  }
-
-  override fun debug(marker: Marker?, msg: String?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, marker, msg, null as Throwable?)
-  }
-
-  override fun debug(marker: Marker?, msg: String?, vararg params: Any?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, marker, msg, *params)
-  }
-
-  override fun debug(marker: Marker?, msg: String?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, marker, msg, t)
-  }
-
-  override fun debug(msg: Message?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, null, msg, null)
-  }
-
-  override fun debug(msg: Message?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, null, msg, t)
-  }
-
-  override fun debug(msg: CharSequence?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, null, msg, null)
-  }
-
-  override fun debug(msg: CharSequence?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, null, msg, t)
-  }
-
-  override fun debug(msg: Any?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, null, msg, null)
-  }
-
-  override fun debug(msg: Any?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, null, msg, t)
-  }
-
-  override fun debug(msg: String?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, null, msg, null as Throwable?)
-  }
-
-  override fun debug(msg: String?, vararg params: Any?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, null, msg, *params)
-  }
-
-  override fun debug(msg: String?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, null, msg, t)
-  }
-
-  override fun debug(msgSupplier: Supplier<*>?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, null, msgSupplier, null)
-  }
-
-  fun debug(supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, null, supplier.asLog4jSupplier(), null)
-  }
-
-  override fun debug(msgSupplier: Supplier<*>?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, null, msgSupplier, t)
-  }
-
-  fun debug(t: Throwable, supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, null, supplier.asLog4jSupplier(), t)
-  }
-
-  override fun debug(marker: Marker?, msgSupplier: Supplier<*>?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, marker, msgSupplier, null)
-  }
-
-  fun debug(marker: Marker?, supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, marker, supplier.asLog4jSupplier(), null)
-  }
-
-  override fun debug(marker: Marker?, msg: String?, vararg paramSuppliers: Supplier<*>?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, marker, msg, *paramSuppliers)
-  }
-
-  fun debug(marker: Marker?, msg: String?, vararg paramSuppliers: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, marker, msg, *paramSuppliers.asLog4jSuppliers())
-  }
-
-  override fun debug(marker: Marker?, msgSupplier: Supplier<*>?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, marker, msgSupplier, t)
-  }
-
-  fun debug(marker: Marker?, t: Throwable?, supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, marker, supplier.asLog4jSupplier(), t)
-  }
-
-  override fun debug(msg: String?, vararg paramSuppliers: Supplier<*>?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, null, msg, *paramSuppliers)
-  }
-
-  fun debug(msg: String?, vararg paramSuppliers: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, null, msg, *paramSuppliers.asLog4jSuppliers())
-  }
-
-  @Deprecated("Use lambda methods.", ReplaceWith("log.debug(Marker, () -> Any?>)"))
-  override fun debug(marker: Marker?, msgSupplier: MessageSupplier?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, marker, msgSupplier, null)
-  }
-
-  @Deprecated("Use lambda methods.", ReplaceWith("log.debug(Marker, Throwable, () -> Any?>)"))
-  override fun debug(marker: Marker?, msgSupplier: MessageSupplier?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, marker, msgSupplier, t)
-  }
-
-  @Deprecated("Use lambda methods.", ReplaceWith("log.debug(() -> Any?>)"))
-  override fun debug(messageSupplier: MessageSupplier?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, null, messageSupplier, null)
-  }
-
-  @Deprecated("Use lambda methods.", ReplaceWith("log.debug(Throwable, () -> Any?>)"))
-  override fun debug(msgSupplier: MessageSupplier?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, null, msgSupplier, t)
-  }
-
-  override fun debug(marker: Marker?, msg: String?, p0: Any?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, marker, msg, p0)
-  }
-
-  override fun debug(marker: Marker?, msg: String?, p0: Any?, p1: Any?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, marker, msg, p0, p1)
-  }
-
-  override fun debug(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, marker, msg, p0, p2, p2)
-  }
-
-  override fun debug(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, marker, msg, t)
-  }
-
-  override fun debug(msg: String?, p0: Any?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, null, msg, p0)
-  }
-
-  override fun debug(msg: String?, p0: Any?, p1: Any?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, null, msg, p0, p1)
-  }
-
-  override fun debug(msg: String?, p0: Any?, p1: Any?, p2: Any?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, null, msg, p0, p1, p2)
-  }
-
-  override fun debug(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.logIfEnabled(FQCN, Level.DEBUG, null, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)
-  }
-
-  override fun info(marker: Marker?, msg: Message?) {
-    log.logIfEnabled(FQCN, Level.INFO, marker, msg, null)
-  }
-
-  override fun info(marker: Marker?, msg: Message?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.INFO, marker, msg, t)
-  }
-
-  override fun info(marker: Marker?, msg: CharSequence?) {
-    log.logIfEnabled(FQCN, Level.INFO, marker, msg, null)
-  }
-
-  override fun info(marker: Marker?, msg: CharSequence?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.INFO, marker, msg, t)
-  }
-
-  override fun info(marker: Marker?, msg: Any?) {
-    log.logIfEnabled(FQCN, Level.INFO, marker, msg, null)
-  }
-
-  override fun info(marker: Marker?, msg: String?) {
-    log.logIfEnabled(FQCN, Level.INFO, marker, msg, null as Throwable?)
-  }
-
-  override fun info(marker: Marker?, msg: String?, vararg params: Any?) {
-    log.logIfEnabled(FQCN, Level.INFO, marker, msg, *params)
-  }
-
-  override fun info(marker: Marker?, msg: String?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.INFO, marker, msg, t)
-  }
-
-  override fun info(msg: Message?) {
-    log.logIfEnabled(FQCN, Level.INFO, null, msg, null)
-  }
-
-  override fun info(msg: Message?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.INFO, null, msg, t)
-  }
-
-  override fun info(msg: CharSequence?) {
-    log.logIfEnabled(FQCN, Level.INFO, null, msg, null)
-  }
-
-  override fun info(msg: CharSequence?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.INFO, null, msg, t)
-  }
-
-  override fun info(msg: Any?) {
-    log.logIfEnabled(FQCN, Level.INFO, null, msg, null)
-  }
-
-  override fun info(msg: Any?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.INFO, null, msg, t)
-  }
-
-  override fun info(msg: String?) {
-    log.logIfEnabled(FQCN, Level.INFO, null, msg, null as Throwable?)
-  }
-
-  override fun info(msg: String?, vararg params: Any?) {
-    log.logIfEnabled(FQCN, Level.INFO, null, msg, *params)
-  }
-
-  override fun info(msg: String?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.INFO, null, msg, t)
-  }
-
-  override fun info(msgSupplier: Supplier<*>?) {
-    log.logIfEnabled(FQCN, Level.INFO, null, msgSupplier, null)
-  }
-
-  fun info(supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.INFO, null, supplier.asLog4jSupplier(), null)
-  }
-
-  override fun info(msgSupplier: Supplier<*>?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.INFO, null, msgSupplier, t)
-  }
-
-  fun info(t: Throwable, supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.INFO, null, supplier.asLog4jSupplier(), t)
-  }
-
-  override fun info(marker: Marker?, msgSupplier: Supplier<*>?) {
-    log.logIfEnabled(FQCN, Level.INFO, marker, msgSupplier, null)
-  }
-
-  fun info(marker: Marker?, supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.INFO, marker, supplier.asLog4jSupplier(), null)
-  }
-
-  override fun info(marker: Marker?, msg: String?, vararg paramSuppliers: Supplier<*>?) {
-    log.logIfEnabled(FQCN, Level.INFO, marker, msg, *paramSuppliers)
-  }
-
-  fun info(marker: Marker?, msg: String?, vararg paramSuppliers: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.INFO, marker, msg, *paramSuppliers.asLog4jSuppliers())
-  }
-
-  override fun info(marker: Marker?, msgSupplier: Supplier<*>?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.INFO, marker, msgSupplier, t)
-  }
-
-  fun info(marker: Marker?, t: Throwable?, supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.INFO, marker, supplier.asLog4jSupplier(), t)
-  }
-
-  override fun info(msg: String?, vararg paramSuppliers: Supplier<*>?) {
-    log.logIfEnabled(FQCN, Level.INFO, null, msg, *paramSuppliers)
-  }
-
-  fun info(msg: String?, vararg paramSuppliers: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.INFO, null, msg, *paramSuppliers.asLog4jSuppliers())
-  }
-
-  @Deprecated("Use lambda methods.", ReplaceWith("log.info(Marker, () -> Any?>)"))
-  override fun info(marker: Marker?, msgSupplier: MessageSupplier?) {
-    log.logIfEnabled(FQCN, Level.INFO, marker, msgSupplier, null)
-  }
-
-  @Deprecated("Use lambda methods.", ReplaceWith("log.info(Marker, Throwable, () -> Any?>)"))
-  override fun info(marker: Marker?, msgSupplier: MessageSupplier?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.INFO, marker, msgSupplier, t)
-  }
-
-  @Deprecated("Use lambda methods.", ReplaceWith("log.info(() -> Any?>)"))
-  override fun info(messageSupplier: MessageSupplier?) {
-    log.logIfEnabled(FQCN, Level.INFO, null, messageSupplier, null)
-  }
-
-  @Deprecated("Use lambda methods.", ReplaceWith("log.info(Throwable, () -> Any?>)"))
-  override fun info(msgSupplier: MessageSupplier?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.INFO, null, msgSupplier, t)
-  }
-
-  override fun info(marker: Marker?, msg: String?, p0: Any?) {
-    log.logIfEnabled(FQCN, Level.INFO, marker, msg, p0)
-  }
-
-  override fun info(marker: Marker?, msg: String?, p0: Any?, p1: Any?) {
-    log.logIfEnabled(FQCN, Level.INFO, marker, msg, p0, p1)
-  }
-
-  override fun info(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?) {
-    log.logIfEnabled(FQCN, Level.INFO, marker, msg, p0, p2, p2)
-  }
-
-  override fun info(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.logIfEnabled(FQCN, Level.INFO, marker, msg, t)
-  }
-
-  override fun info(msg: String?, p0: Any?) {
-    log.logIfEnabled(FQCN, Level.INFO, null, msg, p0)
-  }
-
-  override fun info(msg: String?, p0: Any?, p1: Any?) {
-    log.logIfEnabled(FQCN, Level.INFO, null, msg, p0, p1)
-  }
-
-  override fun info(msg: String?, p0: Any?, p1: Any?, p2: Any?) {
-    log.logIfEnabled(FQCN, Level.INFO, null, msg, p0, p1, p2)
-  }
-
-  override fun info(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.logIfEnabled(FQCN, Level.INFO, null, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)
-  }
-
-  override fun warn(marker: Marker?, msg: Message?) {
-    log.logIfEnabled(FQCN, Level.WARN, marker, msg, null)
-  }
-
-  override fun warn(marker: Marker?, msg: Message?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.WARN, marker, msg, t)
-  }
-
-  override fun warn(marker: Marker?, msg: CharSequence?) {
-    log.logIfEnabled(FQCN, Level.WARN, marker, msg, null)
-  }
-
-  override fun warn(marker: Marker?, msg: CharSequence?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.WARN, marker, msg, t)
-  }
-
-  override fun warn(marker: Marker?, msg: Any?) {
-    log.logIfEnabled(FQCN, Level.WARN, marker, msg, null)
-  }
-
-  override fun warn(marker: Marker?, msg: String?) {
-    log.logIfEnabled(FQCN, Level.WARN, marker, msg, null as Throwable?)
-  }
-
-  override fun warn(marker: Marker?, msg: String?, vararg params: Any?) {
-    log.logIfEnabled(FQCN, Level.WARN, marker, msg, *params)
-  }
-
-  override fun warn(marker: Marker?, msg: String?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.WARN, marker, msg, t)
-  }
-
-  override fun warn(msg: Message?) {
-    log.logIfEnabled(FQCN, Level.WARN, null, msg, null)
-  }
-
-  override fun warn(msg: Message?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.WARN, null, msg, t)
-  }
-
-  override fun warn(msg: CharSequence?) {
-    log.logIfEnabled(FQCN, Level.WARN, null, msg, null)
-  }
-
-  override fun warn(msg: CharSequence?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.WARN, null, msg, t)
-  }
-
-  override fun warn(msg: Any?) {
-    log.logIfEnabled(FQCN, Level.WARN, null, msg, null)
-  }
-
-  override fun warn(msg: Any?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.WARN, null, msg, t)
-  }
-
-  override fun warn(msg: String?) {
-    log.logIfEnabled(FQCN, Level.WARN, null, msg, null as Throwable?)
-  }
-
-  override fun warn(msg: String?, vararg params: Any?) {
-    log.logIfEnabled(FQCN, Level.WARN, null, msg, *params)
-  }
-
-  override fun warn(msg: String?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.WARN, null, msg, t)
-  }
-
-  override fun warn(msgSupplier: Supplier<*>?) {
-    log.logIfEnabled(FQCN, Level.WARN, null, msgSupplier, null)
-  }
-
-  fun warn(supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.WARN, null, supplier.asLog4jSupplier(), null)
-  }
-
-  override fun warn(msgSupplier: Supplier<*>?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.WARN, null, msgSupplier, t)
-  }
-
-  fun warn(t: Throwable, supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.WARN, null, supplier.asLog4jSupplier(), t)
-  }
-
-  override fun warn(marker: Marker?, msgSupplier: Supplier<*>?) {
-    log.logIfEnabled(FQCN, Level.WARN, marker, msgSupplier, null)
-  }
-
-  fun warn(marker: Marker?, supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.WARN, marker, supplier.asLog4jSupplier(), null)
-  }
-
-  override fun warn(marker: Marker?, msg: String?, vararg paramSuppliers: Supplier<*>?) {
-    log.logIfEnabled(FQCN, Level.WARN, marker, msg, *paramSuppliers)
-  }
-
-  fun warn(marker: Marker?, msg: String?, vararg paramSuppliers: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.WARN, marker, msg, *paramSuppliers.asLog4jSuppliers())
-  }
-
-  override fun warn(marker: Marker?, msgSupplier: Supplier<*>?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.WARN, marker, msgSupplier, t)
-  }
-
-  fun warn(marker: Marker?, t: Throwable?, supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.WARN, marker, supplier.asLog4jSupplier(), t)
-  }
-
-  override fun warn(msg: String?, vararg paramSuppliers: Supplier<*>?) {
-    log.logIfEnabled(FQCN, Level.WARN, null, msg, *paramSuppliers)
-  }
-
-  fun warn(msg: String?, vararg paramSuppliers: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.WARN, null, msg, *paramSuppliers.asLog4jSuppliers())
-  }
-
-  @Deprecated("Use lambda methods.", ReplaceWith("log.warn(Marker, () -> Any?>)"))
-  override fun warn(marker: Marker?, msgSupplier: MessageSupplier?) {
-    log.logIfEnabled(FQCN, Level.WARN, marker, msgSupplier, null)
-  }
-
-  @Deprecated("Use lambda methods.", ReplaceWith("log.warn(Marker, Throwable, () -> Any?>)"))
-  override fun warn(marker: Marker?, msgSupplier: MessageSupplier?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.WARN, marker, msgSupplier, t)
-  }
-
-  @Deprecated("Use lambda methods.", ReplaceWith("log.warn(() -> Any?>)"))
-  override fun warn(messageSupplier: MessageSupplier?) {
-    log.logIfEnabled(FQCN, Level.WARN, null, messageSupplier, null)
-  }
-
-  @Deprecated("Use lambda methods.", ReplaceWith("log.warn(Throwable, () -> Any?>)"))
-  override fun warn(msgSupplier: MessageSupplier?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.WARN, null, msgSupplier, t)
-  }
-
-  override fun warn(marker: Marker?, msg: String?, p0: Any?) {
-    log.logIfEnabled(FQCN, Level.WARN, marker, msg, p0)
-  }
-
-  override fun warn(marker: Marker?, msg: String?, p0: Any?, p1: Any?) {
-    log.logIfEnabled(FQCN, Level.WARN, marker, msg, p0, p1)
-  }
-
-  override fun warn(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?) {
-    log.logIfEnabled(FQCN, Level.WARN, marker, msg, p0, p2, p2)
-  }
-
-  override fun warn(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.logIfEnabled(FQCN, Level.WARN, marker, msg, t)
-  }
-
-  override fun warn(msg: String?, p0: Any?) {
-    log.logIfEnabled(FQCN, Level.WARN, null, msg, p0)
-  }
-
-  override fun warn(msg: String?, p0: Any?, p1: Any?) {
-    log.logIfEnabled(FQCN, Level.WARN, null, msg, p0, p1)
-  }
-
-  override fun warn(msg: String?, p0: Any?, p1: Any?, p2: Any?) {
-    log.logIfEnabled(FQCN, Level.WARN, null, msg, p0, p1, p2)
-  }
-
-  override fun warn(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.logIfEnabled(FQCN, Level.WARN, null, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)
-  }
-
-  override fun error(marker: Marker?, msg: Message?) {
-    log.logIfEnabled(FQCN, Level.ERROR, marker, msg, null)
-  }
-
-  override fun error(marker: Marker?, msg: Message?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.ERROR, marker, msg, t)
-  }
-
-  override fun error(marker: Marker?, msg: CharSequence?) {
-    log.logIfEnabled(FQCN, Level.ERROR, marker, msg, null)
-  }
-
-  override fun error(marker: Marker?, msg: CharSequence?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.ERROR, marker, msg, t)
-  }
-
-  override fun error(marker: Marker?, msg: Any?) {
-    log.logIfEnabled(FQCN, Level.ERROR, marker, msg, null)
-  }
-
-  override fun error(marker: Marker?, msg: String?) {
-    log.logIfEnabled(FQCN, Level.ERROR, marker, msg, null as Throwable?)
-  }
-
-  override fun error(marker: Marker?, msg: String?, vararg params: Any?) {
-    log.logIfEnabled(FQCN, Level.ERROR, marker, msg, *params)
-  }
-
-  override fun error(marker: Marker?, msg: String?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.ERROR, marker, msg, t)
-  }
-
-  override fun error(msg: Message?) {
-    log.logIfEnabled(FQCN, Level.ERROR, null, msg, null)
-  }
-
-  override fun error(msg: Message?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.ERROR, null, msg, t)
-  }
-
-  override fun error(msg: CharSequence?) {
-    log.logIfEnabled(FQCN, Level.ERROR, null, msg, null)
-  }
-
-  override fun error(msg: CharSequence?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.ERROR, null, msg, t)
-  }
-
-  override fun error(msg: Any?) {
-    log.logIfEnabled(FQCN, Level.ERROR, null, msg, null)
-  }
-
-  override fun error(msg: Any?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.ERROR, null, msg, t)
-  }
-
-  override fun error(msg: String?) {
-    log.logIfEnabled(FQCN, Level.ERROR, null, msg, null as Throwable?)
-  }
-
-  override fun error(msg: String?, vararg params: Any?) {
-    log.logIfEnabled(FQCN, Level.ERROR, null, msg, *params)
-  }
-
-  override fun error(msg: String?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.ERROR, null, msg, t)
-  }
-
-  override fun error(msgSupplier: Supplier<*>?) {
-    log.logIfEnabled(FQCN, Level.ERROR, null, msgSupplier, null)
-  }
-
-  fun error(supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.ERROR, null, supplier.asLog4jSupplier(), null)
-  }
-
-  override fun error(msgSupplier: Supplier<*>?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.ERROR, null, msgSupplier, t)
-  }
-
-  fun error(t: Throwable, supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.ERROR, null, supplier.asLog4jSupplier(), t)
-  }
-
-  override fun error(marker: Marker?, msgSupplier: Supplier<*>?) {
-    log.logIfEnabled(FQCN, Level.ERROR, marker, msgSupplier, null)
-  }
-
-  fun error(marker: Marker?, supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.ERROR, marker, supplier.asLog4jSupplier(), null)
-  }
-
-  override fun error(marker: Marker?, msg: String?, vararg paramSuppliers: Supplier<*>?) {
-    log.logIfEnabled(FQCN, Level.ERROR, marker, msg, *paramSuppliers)
-  }
-
-  fun error(marker: Marker?, msg: String?, vararg paramSuppliers: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.ERROR, marker, msg, *paramSuppliers.asLog4jSuppliers())
-  }
-
-  override fun error(marker: Marker?, msgSupplier: Supplier<*>?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.ERROR, marker, msgSupplier, t)
-  }
-
-  fun error(marker: Marker?, t: Throwable?, supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.ERROR, marker, supplier.asLog4jSupplier(), t)
-  }
-
-  override fun error(msg: String?, vararg paramSuppliers: Supplier<*>?) {
-    log.logIfEnabled(FQCN, Level.ERROR, null, msg, *paramSuppliers)
-  }
-
-  fun error(msg: String?, vararg paramSuppliers: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.ERROR, null, msg, *paramSuppliers.asLog4jSuppliers())
-  }
-
-  @Deprecated("Use lambda methods.", ReplaceWith("log.error(Marker, () -> Any?>)"))
-  override fun error(marker: Marker?, msgSupplier: MessageSupplier?) {
-    log.logIfEnabled(FQCN, Level.ERROR, marker, msgSupplier, null)
-  }
-
-  @Deprecated("Use lambda methods.", ReplaceWith("log.error(Marker, Throwable, () -> Any?>)"))
-  override fun error(marker: Marker?, msgSupplier: MessageSupplier?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.ERROR, marker, msgSupplier, t)
-  }
-
-  @Deprecated("Use lambda methods.", ReplaceWith("log.error(() -> Any?>)"))
-  override fun error(messageSupplier: MessageSupplier?) {
-    log.logIfEnabled(FQCN, Level.ERROR, null, messageSupplier, null)
-  }
-
-  @Deprecated("Use lambda methods.", ReplaceWith("log.error(Throwable, () -> Any?>)"))
-  override fun error(msgSupplier: MessageSupplier?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.ERROR, null, msgSupplier, t)
-  }
-
-  override fun error(marker: Marker?, msg: String?, p0: Any?) {
-    log.logIfEnabled(FQCN, Level.ERROR, marker, msg, p0)
-  }
-
-  override fun error(marker: Marker?, msg: String?, p0: Any?, p1: Any?) {
-    log.logIfEnabled(FQCN, Level.ERROR, marker, msg, p0, p1)
-  }
-
-  override fun error(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?) {
-    log.logIfEnabled(FQCN, Level.ERROR, marker, msg, p0, p2, p2)
-  }
-
-  override fun error(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.logIfEnabled(FQCN, Level.ERROR, marker, msg, t)
-  }
-
-  override fun error(msg: String?, p0: Any?) {
-    log.logIfEnabled(FQCN, Level.ERROR, null, msg, p0)
-  }
-
-  override fun error(msg: String?, p0: Any?, p1: Any?) {
-    log.logIfEnabled(FQCN, Level.ERROR, null, msg, p0, p1)
-  }
-
-  override fun error(msg: String?, p0: Any?, p1: Any?, p2: Any?) {
-    log.logIfEnabled(FQCN, Level.ERROR, null, msg, p0, p1, p2)
-  }
-
-  override fun error(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.logIfEnabled(FQCN, Level.ERROR, null, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)
-  }
-
-  override fun fatal(marker: Marker?, msg: Message?) {
-    log.logIfEnabled(FQCN, Level.FATAL, marker, msg, null)
-  }
-
-  override fun fatal(marker: Marker?, msg: Message?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.FATAL, marker, msg, t)
-  }
-
-  override fun fatal(marker: Marker?, msg: CharSequence?) {
-    log.logIfEnabled(FQCN, Level.FATAL, marker, msg, null)
-  }
-
-  override fun fatal(marker: Marker?, msg: CharSequence?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.FATAL, marker, msg, t)
-  }
-
-  override fun fatal(marker: Marker?, msg: Any?) {
-    log.logIfEnabled(FQCN, Level.FATAL, marker, msg, null)
-  }
-
-  override fun fatal(marker: Marker?, msg: String?) {
-    log.logIfEnabled(FQCN, Level.FATAL, marker, msg, null as Throwable?)
-  }
-
-  override fun fatal(marker: Marker?, msg: String?, vararg params: Any?) {
-    log.logIfEnabled(FQCN, Level.FATAL, marker, msg, *params)
-  }
-
-  override fun fatal(marker: Marker?, msg: String?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.FATAL, marker, msg, t)
-  }
-
-  override fun fatal(msg: Message?) {
-    log.logIfEnabled(FQCN, Level.FATAL, null, msg, null)
-  }
-
-  override fun fatal(msg: Message?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.FATAL, null, msg, t)
-  }
-
-  override fun fatal(msg: CharSequence?) {
-    log.logIfEnabled(FQCN, Level.FATAL, null, msg, null)
-  }
-
-  override fun fatal(msg: CharSequence?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.FATAL, null, msg, t)
-  }
-
-  override fun fatal(msg: Any?) {
-    log.logIfEnabled(FQCN, Level.FATAL, null, msg, null)
-  }
-
-  override fun fatal(msg: Any?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.FATAL, null, msg, t)
-  }
-
-  override fun fatal(msg: String?) {
-    log.logIfEnabled(FQCN, Level.FATAL, null, msg, null as Throwable?)
-  }
-
-  override fun fatal(msg: String?, vararg params: Any?) {
-    log.logIfEnabled(FQCN, Level.FATAL, null, msg, *params)
-  }
-
-  override fun fatal(msg: String?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.FATAL, null, msg, t)
-  }
-
-  override fun fatal(msgSupplier: Supplier<*>?) {
-    log.logIfEnabled(FQCN, Level.FATAL, null, msgSupplier, null)
-  }
-
-  fun fatal(supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.FATAL, null, supplier.asLog4jSupplier(), null)
-  }
-
-  override fun fatal(msgSupplier: Supplier<*>?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.FATAL, null, msgSupplier, t)
-  }
-
-  fun fatal(t: Throwable, supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.FATAL, null, supplier.asLog4jSupplier(), t)
-  }
-
-  override fun fatal(marker: Marker?, msgSupplier: Supplier<*>?) {
-    log.logIfEnabled(FQCN, Level.FATAL, marker, msgSupplier, null)
-  }
-
-  fun fatal(marker: Marker?, supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.FATAL, marker, supplier.asLog4jSupplier(), null)
-  }
-
-  override fun fatal(marker: Marker?, msg: String?, vararg paramSuppliers: Supplier<*>?) {
-    log.logIfEnabled(FQCN, Level.FATAL, marker, msg, *paramSuppliers)
-  }
-
-  fun fatal(marker: Marker?, msg: String?, vararg paramSuppliers: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.FATAL, marker, msg, *paramSuppliers.asLog4jSuppliers())
-  }
-
-  override fun fatal(marker: Marker?, msgSupplier: Supplier<*>?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.FATAL, marker, msgSupplier, t)
-  }
-
-  fun fatal(marker: Marker?, t: Throwable?, supplier: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.FATAL, marker, supplier.asLog4jSupplier(), t)
-  }
-
-  override fun fatal(msg: String?, vararg paramSuppliers: Supplier<*>?) {
-    log.logIfEnabled(FQCN, Level.FATAL, null, msg, *paramSuppliers)
-  }
-
-  fun fatal(msg: String?, vararg paramSuppliers: () -> Any?) {
-    log.logIfEnabled(FQCN, Level.FATAL, null, msg, *paramSuppliers.asLog4jSuppliers())
-  }
-
-  @Deprecated("Use lambda methods.", ReplaceWith("log.fatal(Marker, () -> Any?>)"))
-  override fun fatal(marker: Marker?, msgSupplier: MessageSupplier?) {
-    log.logIfEnabled(FQCN, Level.FATAL, marker, msgSupplier, null)
-  }
-
-  @Deprecated("Use lambda methods.", ReplaceWith("log.fatal(Marker, Throwable, () -> Any?>)"))
-  override fun fatal(marker: Marker?, msgSupplier: MessageSupplier?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.FATAL, marker, msgSupplier, t)
-  }
-
-  @Deprecated("Use lambda methods.", ReplaceWith("log.fatal(() -> Any?>)"))
-  override fun fatal(messageSupplier: MessageSupplier?) {
-    log.logIfEnabled(FQCN, Level.FATAL, null, messageSupplier, null)
-  }
-
-  @Deprecated("Use lambda methods.", ReplaceWith("log.fatal(Throwable, () -> Any?>)"))
-  override fun fatal(msgSupplier: MessageSupplier?, t: Throwable?) {
-    log.logIfEnabled(FQCN, Level.FATAL, null, msgSupplier, t)
-  }
-
-  override fun fatal(marker: Marker?, msg: String?, p0: Any?) {
-    log.logIfEnabled(FQCN, Level.FATAL, marker, msg, p0)
-  }
-
-  override fun fatal(marker: Marker?, msg: String?, p0: Any?, p1: Any?) {
-    log.logIfEnabled(FQCN, Level.FATAL, marker, msg, p0, p1)
-  }
-
-  override fun fatal(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?) {
-    log.logIfEnabled(FQCN, Level.FATAL, marker, msg, p0, p2, p2)
-  }
-
-  override fun fatal(marker: Marker?, msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.logIfEnabled(FQCN, Level.FATAL, marker, msg, t)
-  }
-
-  override fun fatal(msg: String?, p0: Any?) {
-    log.logIfEnabled(FQCN, Level.FATAL, null, msg, p0)
-  }
-
-  override fun fatal(msg: String?, p0: Any?, p1: Any?) {
-    log.logIfEnabled(FQCN, Level.FATAL, null, msg, p0, p1)
-  }
-
-  override fun fatal(msg: String?, p0: Any?, p1: Any?, p2: Any?) {
-    log.logIfEnabled(FQCN, Level.FATAL, null, msg, p0, p1, p2)
-  }
-
-  override fun fatal(msg: String?, p0: Any?, p1: Any?, p2: Any?, p3: Any?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.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?) {
-    log.logIfEnabled(FQCN, Level.FATAL, null, msg, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)
-  }
-}
-
-/**
- * Logger instantiation by function. Use: `val log = logger()`.
- */
-@Suppress("unused")
-inline fun <reified T : Any> T.logger() = loggerOf(T::class.java)
-
-fun loggerOf(ofClass: Class<*>): KotlinLogger {
-  return KotlinLogger(LogManager.getContext(ofClass.classLoader, false).getLogger(unwrapCompanionClass(ofClass).name))
-}
-
-// unwrap companion class to enclosing class given a Java Class
-fun <T : Any> unwrapCompanionClass(ofClass: Class<T>): Class<*> {
-  return if (ofClass.enclosingClass?.kotlin?.companionObject?.java == ofClass) {
-    ofClass.enclosingClass
-  } else {
-    ofClass
-  }
-}

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/98f21c94/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/LoggingFactory.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/LoggingFactory.kt b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/LoggingFactory.kt
new file mode 100644
index 0000000..0a8dde0
--- /dev/null
+++ b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/LoggingFactory.kt
@@ -0,0 +1,39 @@
+/*
+ * 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.LogManager
+import kotlin.reflect.full.companionObject
+
+/**
+ * Logger instantiation by function. Use: `val log = logger()`.
+ */
+@Suppress("unused")
+inline fun <reified T : Any> T.logger() = loggerOf(T::class.java)
+
+fun loggerOf(ofClass: Class<*>): KotlinLogger {
+  return KotlinLogger(LogManager.getContext(ofClass.classLoader, false).getLogger(unwrapCompanionClass(ofClass).name))
+}
+
+// unwrap companion class to enclosing class given a Java Class
+private fun <T : Any> unwrapCompanionClass(ofClass: Class<T>): Class<*> {
+  return if (ofClass.enclosingClass?.kotlin?.companionObject?.java == ofClass) {
+    ofClass.enclosingClass
+  } else {
+    ofClass
+  }
+}


[23/25] logging-log4j-kotlin git commit: Merge branch 'master' of github.com:rocketraman/logging-log4j-kotlin into api-rocketraman

Posted by ma...@apache.org.
Merge branch 'master' of github.com:rocketraman/logging-log4j-kotlin into api-rocketraman


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/e04ceabd
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/tree/e04ceabd
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/diff/e04ceabd

Branch: refs/heads/master
Commit: e04ceabd300318890fe925c656835da24282ba84
Parents: 73c3f08 2f8a8f8
Author: Matt Sicker <bo...@gmail.com>
Authored: Tue Mar 27 12:13:27 2018 -0500
Committer: Matt Sicker <bo...@gmail.com>
Committed: Tue Mar 27 12:13:27 2018 -0500

----------------------------------------------------------------------
 .gitignore                                      |  12 +
 README.md                                       |  23 +
 log4j-api-kotlin-sample/pom.xml                 |  79 +++
 .../logging/log4j/kotlin/sample/LoggingApp.kt   |  57 ++
 .../log4j/kotlin/sample/LoggingAppMixin.kt      |  55 ++
 .../src/main/resources/log4j2.xml               |  32 ++
 log4j-api-kotlin/pom.xml                        | 162 ++++++
 .../apache/logging/log4j/kotlin/KotlinLogger.kt | 562 +++++++++++++++++++
 .../org/apache/logging/log4j/kotlin/Logging.kt  |  49 ++
 .../logging/log4j/kotlin/LoggingFactory.kt      |  44 ++
 .../apache/logging/log4j/kotlin/Suppliers.kt    |   7 +
 .../LoggerCompanionTest.kt                      |  47 ++
 .../LoggerMixinCompanionExtendsTest.kt          |  46 ++
 .../LoggerMixinExtendsTest.kt                   |  45 ++
 .../LoggerTest.kt                               | 199 +++++++
 .../support/LoggerTests.kt                      |  37 ++
 .../src/test/resources/InfoLogger.xml           |  32 ++
 pom.xml                                         | 107 ++++
 18 files changed, 1595 insertions(+)
----------------------------------------------------------------------



[06/25] logging-log4j-kotlin git commit: Handle deprecated log calls with MessageSupplier param

Posted by ma...@apache.org.
Handle deprecated log calls with MessageSupplier param


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/d3378dfa
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/tree/d3378dfa
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/diff/d3378dfa

Branch: refs/heads/master
Commit: d3378dfa2fac2556d87795467f974f770d2dbd89
Parents: 8987b07
Author: Raman Gupta <ro...@gmail.com>
Authored: Thu Nov 23 20:32:58 2017 -0500
Committer: Raman Gupta <ro...@gmail.com>
Committed: Thu Nov 23 20:32:58 2017 -0500

----------------------------------------------------------------------
 .../org/apache/logging/log4j/kotlin/Logger.kt   | 33 +++++++++++++++++---
 .../org/apache/logging/log4j/kotlin/Logging.kt  |  4 +--
 2 files changed, 31 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/d3378dfa/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt
index 6e4920c..627d1fa 100644
--- a/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt
+++ b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt
@@ -20,10 +20,9 @@ import org.apache.logging.log4j.LogManager
 import org.apache.logging.log4j.Logger
 import org.apache.logging.log4j.Marker
 import org.apache.logging.log4j.spi.ExtendedLogger
+import org.apache.logging.log4j.util.MessageSupplier
 import org.apache.logging.log4j.util.Supplier
-import kotlin.properties.ReadOnlyProperty
-import kotlin.reflect.KProperty
-import kotlin.reflect.companionObject
+import kotlin.reflect.full.companionObject
 
 /**
  * An adapter supporting cleaner syntax when calling a logger with a Kotlin lambda. A Kotlin lambda can
@@ -53,9 +52,9 @@ import kotlin.reflect.companionObject
  *
  * One known limitation of the Kotlin logging API is that location aware logging does not work
  */
+@Suppress("NOTHING_TO_INLINE", "OVERRIDE_BY_INLINE", "UNUSED")
 class FunctionalLogger(val log: ExtendedLogger): Logger by log {
   companion object {
-    @Suppress("NOTHING_TO_INLINE")
     inline fun <T: Any?> (() -> T).asLog4jSupplier(): Supplier<T> = Supplier { invoke() }
   }
 
@@ -180,6 +179,32 @@ class FunctionalLogger(val log: ExtendedLogger): Logger by log {
       throw e
     }
   }
+
+  // define overrides for deprecated MessageSupplier methods, otherwise Kotlin dispatches these over our methods (why?)
+  @Deprecated("Use lambda methods.", ReplaceWith("log.trace(Supplier<Message>)"))
+  override inline fun trace(messageSupplier: MessageSupplier?) {
+    log.debug(messageSupplier)
+  }
+  @Deprecated("Use lambda methods.", ReplaceWith("log.debug(Supplier<Message>)"))
+  override inline fun debug(messageSupplier: MessageSupplier?) {
+    log.trace(messageSupplier)
+  }
+  @Deprecated("Use lambda methods.", ReplaceWith("log.info(Supplier<Message>)"))
+  override inline fun info(messageSupplier: MessageSupplier?) {
+    log.info(messageSupplier)
+  }
+  @Deprecated("Use lambda methods.", ReplaceWith("log.warn(Supplier<Message>)"))
+  override inline fun warn(messageSupplier: MessageSupplier?) {
+    log.warn(messageSupplier)
+  }
+  @Deprecated("Use lambda methods.", ReplaceWith("log.error(Supplier<Message>)"))
+  override inline fun error(messageSupplier: MessageSupplier?) {
+    log.error(messageSupplier)
+  }
+  @Deprecated("Use lambda methods.", ReplaceWith("log.fatal(Supplier<Message>)"))
+  override inline fun fatal(messageSupplier: MessageSupplier?) {
+    log.fatal(messageSupplier)
+  }
 }
 
 /**

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/d3378dfa/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logging.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logging.kt b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logging.kt
index e2b95b4..28229e5 100644
--- a/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logging.kt
+++ b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logging.kt
@@ -15,13 +15,13 @@ import org.apache.logging.log4j.Logger
  *
  * ```
  *
- * A simpler mechanism is to use the delegated property extension directly, like:
+ * A simpler mechanism is to use the class extension directly, like:
  *
  * ```
  * import org.apache.logging.log4j.kotlin.logger
  *
  * class MyClass {
- *   val log by logger()
+ *   val log = logger()
  * }
  *
  * ```


[17/25] logging-log4j-kotlin git commit: KotlinLogger drops parameterized methods

Posted by ma...@apache.org.
KotlinLogger drops parameterized methods

Drop the parameterized methods from KotlinLogger, as those are not
needed with Kotlin string interpolation. Keep the old logger around
as CompleteKotlinLogger (at least for now).


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/f5b067f8
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/tree/f5b067f8
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/diff/f5b067f8

Branch: refs/heads/master
Commit: f5b067f81a5e210e43438308d57b2a08d966ee9f
Parents: 98f21c9
Author: Raman Gupta <ro...@gmail.com>
Authored: Thu Mar 1 01:21:45 2018 -0500
Committer: Raman Gupta <ro...@gmail.com>
Committed: Thu Mar 1 01:21:45 2018 -0500

----------------------------------------------------------------------
 .../log4j/kotlin/sample/LoggingAppComplete.kt   |   58 +
 .../log4j/kotlin/KotlinCompleteLogger.kt        | 1695 ++++++++++++++++++
 .../apache/logging/log4j/kotlin/KotlinLogger.kt | 1296 ++-----------
 .../logging/log4j/kotlin/LoggingFactory.kt      |   17 +-
 .../apache/logging/log4j/kotlin/Suppliers.kt    |    7 +
 5 files changed, 1924 insertions(+), 1149 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/f5b067f8/log4j-api-kotlin-sample/src/main/kotlin/org/apache/logging/log4j/kotlin/sample/LoggingAppComplete.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin-sample/src/main/kotlin/org/apache/logging/log4j/kotlin/sample/LoggingAppComplete.kt b/log4j-api-kotlin-sample/src/main/kotlin/org/apache/logging/log4j/kotlin/sample/LoggingAppComplete.kt
new file mode 100644
index 0000000..1b4cbd7
--- /dev/null
+++ b/log4j-api-kotlin-sample/src/main/kotlin/org/apache/logging/log4j/kotlin/sample/LoggingAppComplete.kt
@@ -0,0 +1,58 @@
+/*
+ * 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.sample
+
+import org.apache.logging.log4j.kotlin.completeLogger
+import org.apache.logging.log4j.kotlin.logger
+import java.util.*
+
+object LoggingAppComplete {
+  val log = completeLogger()
+
+  @JvmStatic
+  fun main(args: Array<String>) {
+    val s1 = "foo"
+    val s2 = "bar"
+
+    log.info { "Hello, world: $s1 $s2" }
+
+    log.trace("Regular trace")
+
+    log.runInTrace {
+      log.info("Inside trace extension!")
+    }
+
+    log.runInTrace(log.traceEntry({ "param1" }, { "param2" })) {
+      log.info("Inside trace extension with params suppliers!")
+    }
+
+    fun getKey(): Int = log.runInTrace {
+      Random().nextInt(10)
+    }
+
+    fun getKeyError(): Int = log.runInTrace {
+      throw Exception("Oops!")
+    }
+
+    log.info { "Key was ${getKey()}" }
+    try {
+      log.info { "Key was ${getKeyError()}" }
+    } catch(e: Exception) {
+      log.info { "Key threw ${e.message}" }
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/f5b067f8/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/KotlinCompleteLogger.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/KotlinCompleteLogger.kt b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/KotlinCompleteLogger.kt
new file mode 100644
index 0000000..752f523
--- /dev/null
+++ b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/KotlinCompleteLogger.kt
@@ -0,0 +1,1695 @@
+/*
+ * 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.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
+
+/**
+ * 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 KotlinCompleteLogger(private val delegate: ExtendedLogger): Logger by delegate {
+  companion object {
+    val FQCN: String = KotlinCompleteLogger::class.java.name
+  }
+
+  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)
+  }
+}


[02/25] logging-log4j-kotlin git commit: Removed unneeded dependency on log4j-core

Posted by ma...@apache.org.
Removed unneeded dependency on log4j-core


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/3a2eb846
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/tree/3a2eb846
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/diff/3a2eb846

Branch: refs/heads/master
Commit: 3a2eb846fbd87639fb3d37cd81fc26f40fe97123
Parents: fc43d3f
Author: Raman Gupta <ro...@gmail.com>
Authored: Mon Nov 14 14:37:11 2016 -0500
Committer: Raman Gupta <ro...@gmail.com>
Committed: Mon Nov 14 14:37:11 2016 -0500

----------------------------------------------------------------------
 log4j-api-kotlin/pom.xml | 4 ----
 1 file changed, 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/3a2eb846/log4j-api-kotlin/pom.xml
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/pom.xml b/log4j-api-kotlin/pom.xml
index f55796a..d0c62a6 100644
--- a/log4j-api-kotlin/pom.xml
+++ b/log4j-api-kotlin/pom.xml
@@ -37,10 +37,6 @@
       <artifactId>log4j-api</artifactId>
     </dependency>
     <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-core</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.jetbrains.kotlin</groupId>
       <artifactId>kotlin-stdlib</artifactId>
       <version>${kotlin.version}</version>


[10/25] logging-log4j-kotlin git commit: Use ExtendedLogger directly

Posted by ma...@apache.org.
Use ExtendedLogger directly

Instead of delegating to ExtendedLogger via `log`, use
the `logIfEnabled` method of ExtendedLogger directly.


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/1840262b
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/tree/1840262b
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/diff/1840262b

Branch: refs/heads/master
Commit: 1840262bc458cecb32c9c84aa82e11c53bc45dee
Parents: 0d9d5eb
Author: Raman Gupta <ro...@gmail.com>
Authored: Mon Feb 26 19:50:23 2018 -0500
Committer: Raman Gupta <ro...@gmail.com>
Committed: Mon Feb 26 19:50:23 2018 -0500

----------------------------------------------------------------------
 .../org/apache/logging/log4j/kotlin/Logger.kt   | 64 ++++++++++----------
 1 file changed, 33 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/1840262b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt
index 6ed453e..2304967 100644
--- a/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt
+++ b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt
@@ -16,6 +16,7 @@
  */
 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
@@ -55,99 +56,100 @@ import kotlin.reflect.full.companionObject
 @Suppress("NOTHING_TO_INLINE", "OVERRIDE_BY_INLINE", "UNUSED")
 class FunctionalLogger(val log: ExtendedLogger): Logger by log {
   companion object {
+    val FQCN: String = FunctionalLogger::class.java.name
     inline fun <T: Any?> (() -> T).asLog4jSupplier(): Supplier<T> = Supplier { invoke() }
   }
 
   inline fun trace(t: Throwable, crossinline supplier: () -> Any?) {
-    log.trace(supplier.asLog4jSupplier(), t)
+    log.logIfEnabled(FQCN, Level.TRACE, null, supplier.asLog4jSupplier(), t)
   }
 
   inline fun trace(marker: Marker?, crossinline supplier: () -> Any?) {
-    log.trace(marker, supplier.asLog4jSupplier())
+    log.logIfEnabled(FQCN, Level.TRACE, marker, supplier.asLog4jSupplier(), null)
   }
 
   inline fun trace(marker: Marker?, t: Throwable?, crossinline supplier: () -> Any?) {
-    log.trace(marker, supplier.asLog4jSupplier(), t)
+    log.logIfEnabled(FQCN, Level.TRACE, marker, supplier.asLog4jSupplier(), t)
   }
 
   inline fun debug(crossinline supplier: () -> Any?) {
-    log.debug(supplier.asLog4jSupplier())
+    log.logIfEnabled(FQCN, Level.DEBUG, null, supplier.asLog4jSupplier(), null)
   }
 
   inline fun debug(t: Throwable, crossinline supplier: () -> Any?) {
-    log.debug(supplier.asLog4jSupplier(), t)
+    log.logIfEnabled(FQCN, Level.DEBUG, null, supplier.asLog4jSupplier(), t)
   }
 
   inline fun debug(marker: Marker?, crossinline supplier: () -> Any?) {
-    log.debug(marker, supplier.asLog4jSupplier())
+    log.logIfEnabled(FQCN, Level.DEBUG, marker, supplier.asLog4jSupplier(), null)
   }
 
   inline fun debug(marker: Marker?, t: Throwable?, crossinline supplier: () -> Any?) {
-    log.debug(marker, supplier.asLog4jSupplier(), t)
+    log.logIfEnabled(FQCN, Level.DEBUG, marker, supplier.asLog4jSupplier(), t)
   }
 
   inline fun info(crossinline supplier: () -> Any?) {
-    log.info(supplier.asLog4jSupplier())
+    log.logIfEnabled(FQCN, Level.INFO, null, supplier.asLog4jSupplier(), null)
   }
 
   inline fun info(t: Throwable, crossinline supplier: () -> Any?) {
-    log.info(supplier.asLog4jSupplier(), t)
+    log.logIfEnabled(FQCN, Level.INFO, null, supplier.asLog4jSupplier(), t)
   }
 
   inline fun info(marker: Marker?, crossinline supplier: () -> Any?) {
-    log.info(marker, supplier.asLog4jSupplier())
+    log.logIfEnabled(FQCN, Level.INFO, marker, supplier.asLog4jSupplier(), null)
   }
 
   inline fun info(marker: Marker?, t: Throwable?, crossinline supplier: () -> Any?) {
-    log.info(marker, supplier.asLog4jSupplier(), t)
+    log.logIfEnabled(FQCN, Level.INFO, marker, supplier.asLog4jSupplier(), t)
   }
 
   inline fun warn(crossinline supplier: () -> Any?) {
-    log.warn(supplier.asLog4jSupplier())
+    log.logIfEnabled(FQCN, Level.WARN, null, supplier.asLog4jSupplier(), null)
   }
 
   inline fun warn(t: Throwable, crossinline supplier: () -> Any?) {
-    log.warn(supplier.asLog4jSupplier(), t)
+    log.logIfEnabled(FQCN, Level.WARN, null, supplier.asLog4jSupplier(), t)
   }
 
   inline fun warn(marker: Marker?, crossinline supplier: () -> Any?) {
-    log.warn(marker, supplier.asLog4jSupplier())
+    log.logIfEnabled(FQCN, Level.WARN, marker, supplier.asLog4jSupplier(), null)
   }
 
   inline fun warn(marker: Marker?, t: Throwable?, crossinline supplier: () -> Any?) {
-    log.warn(marker, supplier.asLog4jSupplier(), t)
+    log.logIfEnabled(FQCN, Level.WARN, marker, supplier.asLog4jSupplier(), t)
   }
 
   inline fun error(crossinline supplier: () -> Any?) {
-    log.error(supplier.asLog4jSupplier())
+    log.logIfEnabled(FQCN, Level.ERROR, null, supplier.asLog4jSupplier(), null)
   }
 
   inline fun error(t: Throwable, crossinline supplier: () -> Any?) {
-    log.error(supplier.asLog4jSupplier(), t)
+    log.logIfEnabled(FQCN, Level.ERROR, null, supplier.asLog4jSupplier(), t)
   }
 
   inline fun error(marker: Marker?, crossinline supplier: () -> Any?) {
-    log.error(marker, supplier.asLog4jSupplier())
+    log.logIfEnabled(FQCN, Level.ERROR, marker, supplier.asLog4jSupplier(), null)
   }
 
   inline fun error(marker: Marker?, t: Throwable?, crossinline supplier: () -> Any?) {
-    log.error(marker, supplier.asLog4jSupplier(), t)
+    log.logIfEnabled(FQCN, Level.ERROR, marker, supplier.asLog4jSupplier(), t)
   }
 
   inline fun fatal(crossinline supplier: () -> Any?) {
-    log.fatal(supplier.asLog4jSupplier())
+    log.logIfEnabled(FQCN, Level.FATAL, null, supplier.asLog4jSupplier(), null)
   }
 
   inline fun fatal(t: Throwable, crossinline supplier: () -> Any?) {
-    log.fatal(supplier.asLog4jSupplier(), t)
+    log.logIfEnabled(FQCN, Level.FATAL, null, supplier.asLog4jSupplier(), t)
   }
 
   inline fun fatal(marker: Marker?, crossinline supplier: () -> Any?) {
-    log.fatal(marker, supplier.asLog4jSupplier())
+    log.logIfEnabled(FQCN, Level.FATAL, marker, supplier.asLog4jSupplier(), null)
   }
 
   inline fun fatal(marker: Marker?, t: Throwable?, crossinline supplier: () -> Any?) {
-    log.fatal(marker, supplier.asLog4jSupplier(), t)
+    log.logIfEnabled(FQCN, Level.FATAL, marker, supplier.asLog4jSupplier(), t)
   }
 
   inline fun <R : Any?> trace(block: () -> R): R {
@@ -155,7 +157,7 @@ class FunctionalLogger(val log: ExtendedLogger): Logger by log {
     try {
       val result = block()
       when(result) {
-        is Unit -> traceExit(entry)
+        Unit -> traceExit(entry)
         else -> traceExit(entry, result)
       }
       return result
@@ -170,7 +172,7 @@ class FunctionalLogger(val log: ExtendedLogger): Logger by log {
     try {
       val result = block()
       when(result) {
-        is Unit -> traceExit(entry)
+        Unit -> traceExit(entry)
         else -> traceExit(entry, result)
       }
       return result
@@ -183,27 +185,27 @@ class FunctionalLogger(val log: ExtendedLogger): Logger by log {
   // define overrides for deprecated MessageSupplier methods, otherwise Kotlin dispatches these over our methods (why?)
   @Deprecated("Use lambda methods.", ReplaceWith("log.trace(Supplier<Message>)"))
   override inline fun trace(messageSupplier: MessageSupplier?) {
-    log.debug(messageSupplier)
+    log.logIfEnabled(FQCN, Level.TRACE, null, messageSupplier, null)
   }
   @Deprecated("Use lambda methods.", ReplaceWith("log.debug(Supplier<Message>)"))
   override inline fun debug(messageSupplier: MessageSupplier?) {
-    log.trace(messageSupplier)
+    log.logIfEnabled(FQCN, Level.DEBUG, null, messageSupplier, null)
   }
   @Deprecated("Use lambda methods.", ReplaceWith("log.info(Supplier<Message>)"))
   override inline fun info(messageSupplier: MessageSupplier?) {
-    log.info(messageSupplier)
+    log.logIfEnabled(FQCN, Level.INFO, null, messageSupplier, null)
   }
   @Deprecated("Use lambda methods.", ReplaceWith("log.warn(Supplier<Message>)"))
   override inline fun warn(messageSupplier: MessageSupplier?) {
-    log.warn(messageSupplier)
+    log.logIfEnabled(FQCN, Level.WARN, null, messageSupplier, null)
   }
   @Deprecated("Use lambda methods.", ReplaceWith("log.error(Supplier<Message>)"))
   override inline fun error(messageSupplier: MessageSupplier?) {
-    log.error(messageSupplier)
+    log.logIfEnabled(FQCN, Level.ERROR, null, messageSupplier, null)
   }
   @Deprecated("Use lambda methods.", ReplaceWith("log.fatal(Supplier<Message>)"))
   override inline fun fatal(messageSupplier: MessageSupplier?) {
-    log.fatal(messageSupplier)
+    log.logIfEnabled(FQCN, Level.FATAL, null, messageSupplier, null)
   }
 }
 


[25/25] logging-log4j-kotlin git commit: Add minimal jenkins pipeline

Posted by ma...@apache.org.
Add minimal jenkins pipeline


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/cd789c4e
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/tree/cd789c4e
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/diff/cd789c4e

Branch: refs/heads/master
Commit: cd789c4ed2c3231f0ff803ecab42996bdc9322cb
Parents: e3405da
Author: Matt Sicker <bo...@gmail.com>
Authored: Tue Mar 27 12:54:57 2018 -0500
Committer: Matt Sicker <bo...@gmail.com>
Committed: Tue Mar 27 12:54:57 2018 -0500

----------------------------------------------------------------------
 Jenkinsfile | 45 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 45 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/cd789c4e/Jenkinsfile
----------------------------------------------------------------------
diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 0000000..eafcb26
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1,45 @@
+#!groovy
+/*
+ * 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.
+ */
+
+pipeline {
+    agent {
+        label 'ubuntu'
+    }
+    tools {
+        maven 'Maven 3 (latest)'
+        jdk 'JDK 1.8 (latest)'
+    }
+    stages {
+        stage('Build') {
+            steps {
+                ansiColor('xterm') {
+                    sh 'mvn install'
+                }
+            }
+        }
+        stage('Deploy') {
+            when { branch 'master' }
+            steps {
+                ansiColor('xterm') {
+                    sh 'mvn deploy'
+                }
+            }
+        }
+    }
+}
+


[13/25] logging-log4j-kotlin git commit: Rename logger class to reflect function

Posted by ma...@apache.org.
Rename logger class to reflect function

Rename FunctionalLogger -> KotlinLogger, since the logger now
is not limited to functional variants of Supplier.


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/ae6dd5ed
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/tree/ae6dd5ed
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/diff/ae6dd5ed

Branch: refs/heads/master
Commit: ae6dd5ed977a7d53f6845ebce008b128ab5a41eb
Parents: 9e74a55
Author: Raman Gupta <ro...@gmail.com>
Authored: Tue Feb 27 13:25:24 2018 -0500
Committer: Raman Gupta <ro...@gmail.com>
Committed: Tue Feb 27 13:25:24 2018 -0500

----------------------------------------------------------------------
 .../org/apache/logging/log4j/kotlin/Logger.kt   | 29 ++++++++++++--------
 .../LoggerTest.kt                               |  6 ++--
 2 files changed, 20 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/ae6dd5ed/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt
index 8eb0a6a..19760c3 100644
--- a/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt
+++ b/log4j-api-kotlin/src/main/kotlin/org/apache/logging/log4j/kotlin/Logger.kt
@@ -28,13 +28,13 @@ import org.apache.logging.log4j.util.Supplier
 import kotlin.reflect.full.companionObject
 
 /**
- * An adapter supporting cleaner syntax when calling a logger with a Kotlin lambda. A Kotlin lambda can
+ * 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 explicitly take a Kotlin Lambda, and
+ * 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.
  *
@@ -53,20 +53,25 @@ import kotlin.reflect.full.companionObject
  * log.error(exc) { "Unexpected exception evaluating $whatever." }
  * ```
  *
- * 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
+ * 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.
  *
- * Lastly, while Kotlin's delegation capabilities would normally allow this implementation to be
+ * 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, as the ExtendedLogger delegate assumes its own FQCN is the root of the
- * logging stack.
+ * 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 FunctionalLogger(private val log: ExtendedLogger): Logger by log {
+class KotlinLogger(private val log: ExtendedLogger): Logger by log {
   companion object {
-    val FQCN: String = FunctionalLogger::class.java.name
+    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()
   }
@@ -1699,8 +1704,8 @@ class FunctionalLogger(private val log: ExtendedLogger): Logger by log {
 @Suppress("unused")
 inline fun <reified T : Any> T.logger() = loggerOf(T::class.java)
 
-fun loggerOf(ofClass: Class<*>): FunctionalLogger {
-  return FunctionalLogger(LogManager.getContext(ofClass.classLoader, false).getLogger(unwrapCompanionClass(ofClass).name))
+fun loggerOf(ofClass: Class<*>): KotlinLogger {
+  return KotlinLogger(LogManager.getContext(ofClass.classLoader, false).getLogger(unwrapCompanionClass(ofClass).name))
 }
 
 // unwrap companion class to enclosing class given a Java Class

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/ae6dd5ed/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt
index f8c4a59..d873454 100644
--- a/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt
+++ b/log4j-api-kotlin/src/test/kotlin/org.apache.logging.log4j.kotlin/LoggerTest.kt
@@ -66,7 +66,7 @@ class LoggerTest {
       on { isEnabled(Level.ERROR) } doReturn true
     }
     whenever(f.mockLogger.isEnabled(Level.ERROR)).thenReturn(true)
-    val logger = FunctionalLogger(f.mockLogger)
+    val logger = KotlinLogger(f.mockLogger)
     val msg = "This is an error log."
     logger.error(msg)
     verify(f.mockLogger).logIfEnabled(anyString(), eq(Level.ERROR), isNull(), eq(msg), isNull<Throwable>())
@@ -77,7 +77,7 @@ class LoggerTest {
     val f = Fixture {
       on { isEnabled(Level.FATAL) } doReturn true
     }
-    val logger = FunctionalLogger(f.mockLogger)
+    val logger = KotlinLogger(f.mockLogger)
     val msg = "string msg with value: ${f.manager.fetchValue()}"
     logger.fatal(msg)
     verify(f.mockLogger).logIfEnabled(anyString(), eq(Level.FATAL), isNull(), eq(msg), isNull<Throwable>())
@@ -92,7 +92,7 @@ class LoggerTest {
       on { isEnabled(Level.FATAL) } doReturn false
     }
     whenever(f.mockLogger.isEnabled(Level.FATAL)).thenReturn(false)
-    val logger = FunctionalLogger(f.mockLogger)
+    val logger = KotlinLogger(f.mockLogger)
     val msg = "string msg with value: ${f.manager.fetchValue()}"
     logger.fatal(msg)
     verify(f.mockLogger).logIfEnabled(anyString(), eq(Level.FATAL), isNull(), eq(msg), isNull<Throwable>())


[24/25] logging-log4j-kotlin git commit: Clean up pom files

Posted by ma...@apache.org.
Clean up pom files

* Fix group ids
* Use logging-parent
* Use log4j 2.11.0
* Use Kotlin 1.2.31


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/e3405dae
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/tree/e3405dae
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/diff/e3405dae

Branch: refs/heads/master
Commit: e3405daef8cb84d06bf4daaac921737dfb42cbfb
Parents: e04ceab
Author: Matt Sicker <bo...@gmail.com>
Authored: Tue Mar 27 12:52:28 2018 -0500
Committer: Matt Sicker <bo...@gmail.com>
Committed: Tue Mar 27 12:52:28 2018 -0500

----------------------------------------------------------------------
 log4j-api-kotlin-sample/pom.xml |  9 ++++--
 log4j-api-kotlin/pom.xml        | 60 ++++--------------------------------
 pom.xml                         | 50 +++++++++++++++++++++++-------
 3 files changed, 51 insertions(+), 68 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/e3405dae/log4j-api-kotlin-sample/pom.xml
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin-sample/pom.xml b/log4j-api-kotlin-sample/pom.xml
index 810f338..7ae5f4c 100644
--- a/log4j-api-kotlin-sample/pom.xml
+++ b/log4j-api-kotlin-sample/pom.xml
@@ -19,13 +19,16 @@
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.apache.logging.log4j</groupId>
-    <artifactId>log4j-kotlin</artifactId>
-    <version>2.10.1-SNAPSHOT</version>
+    <artifactId>log4j-api-kotlin-parent</artifactId>
+    <version>1.0-SNAPSHOT</version>
     <relativePath>../</relativePath>
   </parent>
+
   <artifactId>log4j-api-kotlin-sample</artifactId>
+  <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>
-  <name>Kotlin API samples</name>
+  <name>Apache Log4j Kotlin API Samples</name>
+  <description>Sample usage of the Log4j Kotlin API</description>
   <url>http://http://logging.apache.org/log4j/2.x/</url>
 
   <dependencies>

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/e3405dae/log4j-api-kotlin/pom.xml
----------------------------------------------------------------------
diff --git a/log4j-api-kotlin/pom.xml b/log4j-api-kotlin/pom.xml
index c79537a..e3c340a 100644
--- a/log4j-api-kotlin/pom.xml
+++ b/log4j-api-kotlin/pom.xml
@@ -19,19 +19,17 @@
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.apache.logging.log4j</groupId>
-    <artifactId>log4j-kotlin</artifactId>
-    <version>2.10.1-SNAPSHOT</version>
+    <artifactId>log4j-api-kotlin-parent</artifactId>
+    <version>1.0-SNAPSHOT</version>
     <relativePath>../</relativePath>
   </parent>
+
   <artifactId>log4j-api-kotlin</artifactId>
+  <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>
-  <name>Kotlin wrapper for Log4j API</name>
+  <name>Apache Log4j Kotlin API</name>
   <description>Kotlin wrapper for Log4j API</description>
 
-  <properties>
-    <log4jParentDir>${basedir}/..</log4jParentDir>
-  </properties>
-
   <dependencies>
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
@@ -67,6 +65,7 @@
     <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
+      <version>4.12</version>
       <scope>test</scope>
     </dependency>
     <dependency>
@@ -100,59 +99,12 @@
           </execution>
         </executions>
       </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-plugin</artifactId>
-      </plugin>
-      <!-- Include the standard NOTICE and LICENSE -->
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-remote-resources-plugin</artifactId>
-        <executions>
-          <execution>
-            <goals>
-              <goal>process</goal>
-            </goals>
-            <configuration>
-              <skip>false</skip>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.felix</groupId>
-        <artifactId>maven-bundle-plugin</artifactId>
-      </plugin>
     </plugins>
   </build>
 
   <reporting>
     <plugins>
       <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-changes-plugin</artifactId>
-        <version>${changes.plugin.version}</version>
-        <reportSets>
-          <reportSet>
-            <reports>
-              <report>changes-report</report>
-            </reports>
-          </reportSet>
-        </reportSets>
-        <configuration>
-          <issueLinkTemplate>%URL%/show_bug.cgi?id=%ISSUE%</issueLinkTemplate>
-          <useJql>true</useJql>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-pmd-plugin</artifactId>
-        <version>${pmd.plugin.version}</version>
-        <configuration>
-          <targetJdk>${maven.compile.target}</targetJdk>
-        </configuration>
-      </plugin>
-      <plugin>
         <groupId>org.jetbrains.kotlin</groupId>
         <artifactId>kotlin-maven-plugin</artifactId>
         <version>${kotlin.version}</version>

http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin/blob/e3405dae/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index bc2b2dd..31af9ba 100644
--- a/pom.xml
+++ b/pom.xml
@@ -17,26 +17,30 @@
   -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
-  <artifactId>log4j-kotlin</artifactId>
-  <packaging>pom</packaging>
-  <name>Apache Log4j 2 Kotlin API</name>
-  <version>2.10.1-SNAPSHOT</version>
   <parent>
-    <groupId>org.apache.logging.log4j</groupId>
-    <artifactId>log4j</artifactId>
-    <version>2.10.1-SNAPSHOT</version>
+    <groupId>org.apache.logging</groupId>
+    <artifactId>logging-parent</artifactId>
+    <version>2</version>
   </parent>
-  <description>Apache Log4j 2 Kotlin API</description>
-  <url>http://logging.apache.org/log4j/2.x/</url>
+
+  <groupId>org.apache.logging.log4j</groupId>
+  <artifactId>log4j-api-kotlin-parent</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <packaging>pom</packaging>
+  <name>Apache Log4j Kotlin API</name>
+  <description>Apache Log4j Kotlin API parent project</description>
+
+  <!-- TODO: website publishing -->
+  <url>https://logging.apache.org/log4j/kotlin/</url>
   <scm>
     <connection>scm:git:http://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin.git</connection>
     <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/logging-log4j-kotlin.git</developerConnection>
     <url>https://git-wip-us.apache.org/repos/asf?p=logging-log4j-kotlin.git;a=summary</url>
-    <tag>log4j-${Log4jReleaseVersion}</tag>
   </scm>
 
   <properties>
-    <kotlin.version>1.2.21</kotlin.version>
+    <kotlin.version>1.2.31</kotlin.version>
+    <log4j.version>2.11.0</log4j.version>
   </properties>
 
   <dependencyManagement>
@@ -46,6 +50,30 @@
         <artifactId>log4j-api-kotlin</artifactId>
         <version>${project.version}</version>
       </dependency>
+      <dependency>
+        <groupId>org.apache.logging.log4j</groupId>
+        <artifactId>log4j-api</artifactId>
+        <version>${log4j.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.logging.log4j</groupId>
+        <artifactId>log4j-core</artifactId>
+        <version>${log4j.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.logging.log4j</groupId>
+        <artifactId>log4j-api</artifactId>
+        <version>${log4j.version}</version>
+        <type>test-jar</type>
+        <scope>test</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.logging.log4j</groupId>
+        <artifactId>log4j-core</artifactId>
+        <version>${log4j.version}</version>
+        <type>test-jar</type>
+        <scope>test</scope>
+      </dependency>
     </dependencies>
   </dependencyManagement>