This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch main-site-pro-out
in repository https://gitbox.apache.org/repos/asf/logging-log4j-kotlin.git


The following commit(s) were added to refs/heads/main-site-pro-out by this push:
     new 89ab990  Add website content generated from 
`55c182884e911c5bc2b3581281c6014ac362304c`
89ab990 is described below

commit 89ab990bd5663618975aa9110cbfb67bce1b8f90
Author: ASF Logging Services RM <[email protected]>
AuthorDate: Sun Jul 7 17:33:26 2024 +0000

    Add website content generated from 
`55c182884e911c5bc2b3581281c6014ac362304c`
---
 404.html                                  | 101 ++++++
 README.txt                                |   1 -
 _/css/site.css                            |   3 +
 _/css/vendor/tabs.css                     | 110 ++++++
 _/font/roboto-cyrillic-400-italic.woff2   | Bin 0 -> 10292 bytes
 _/font/roboto-cyrillic-400-normal.woff2   | Bin 0 -> 9628 bytes
 _/font/roboto-cyrillic-500-italic.woff2   | Bin 0 -> 10640 bytes
 _/font/roboto-cyrillic-500-normal.woff2   | Bin 0 -> 9840 bytes
 _/font/roboto-latin-400-italic.woff       | Bin 0 -> 22048 bytes
 _/font/roboto-latin-400-italic.woff2      | Bin 0 -> 17368 bytes
 _/font/roboto-latin-400-normal.woff       | Bin 0 -> 20344 bytes
 _/font/roboto-latin-400-normal.woff2      | Bin 0 -> 15744 bytes
 _/font/roboto-latin-500-italic.woff       | Bin 0 -> 22092 bytes
 _/font/roboto-latin-500-italic.woff2      | Bin 0 -> 17336 bytes
 _/font/roboto-latin-500-normal.woff       | Bin 0 -> 20544 bytes
 _/font/roboto-latin-500-normal.woff2      | Bin 0 -> 15920 bytes
 _/font/roboto-mono-latin-400-normal.woff  | Bin 0 -> 15160 bytes
 _/font/roboto-mono-latin-400-normal.woff2 | Bin 0 -> 12312 bytes
 _/font/roboto-mono-latin-500-normal.woff  | Bin 0 -> 15364 bytes
 _/font/roboto-mono-latin-500-normal.woff2 | Bin 0 -> 12532 bytes
 _/img/back.svg                            |   1 +
 _/img/caret.svg                           |   1 +
 _/img/chevron.svg                         |   1 +
 _/img/home-o.svg                          |   1 +
 _/img/home.svg                            |   1 +
 _/img/menu.svg                            |   1 +
 _/img/octicons-16.svg                     |   1 +
 _/js/site.js                              |   6 +
 _/js/vendor/highlight.js                  |   1 +
 _/js/vendor/tabs.js                       | 127 +++++++
 development.html                          | 167 +++++++++
 index.html                                | 558 ++++++++++++++++++++++++++++++
 release-notes.html                        | 402 +++++++++++++++++++++
 sitemap.xml                               |  15 +
 34 files changed, 1497 insertions(+), 1 deletion(-)

diff --git a/404.html b/404.html
new file mode 100644
index 0000000..bd66e9c
--- /dev/null
+++ b/404.html
@@ -0,0 +1,101 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Page Not Found :: Apache Log4j Kotlin</title>
+    <meta name="generator" content="Antora 3.2.0-alpha.5">
+<link rel="stylesheet" href="/log4j/kotlin/_/css/site.css">
+<link rel="icon" href="/log4j/kotlin/_/../_images/favicon.ico" 
type="image/x-icon">
+<!-- `@asciidoctor/tabs` extension styles -->
+<link rel="stylesheet" href="/log4j/kotlin/_/css/vendor/tabs.css">
+<style>
+  /* Swap colors of `IMPORTANT` and `WARNING` blocks */
+  .doc .admonitionblock.important .icon { background-color: #f70; }
+  .doc .admonitionblock.warning .icon { background-color: #e40046; }
+  /* Default `h4`, `h5`, and `h6` are smaller than the normal text, fix header 
font sizing: */
+  .doc h1 { font-size: 1.9rem; }
+  .doc h2 { font-size: 1.7rem; }
+  .doc h3 { font-size: 1.5rem; font-weight: 400; }
+  .doc h4 { font-size: 1.3rem; font-weight: 500; }
+  .doc h5 { font-size: 1.1rem; font-weight: 500; text-decoration: underline; }
+  .doc h6 { font-size: 0.9rem; font-weight: 500; text-decoration: underline; }
+  /* Default `code`, `pre`, and `.colist` (source code annotations) fonts are 
too big, adjust them: */
+  .doc .colist>table code, .doc p code, .doc thead code { font-size: 0.8em; }
+  .doc pre { font-size: 0.7rem; }
+  .doc .colist { font-size: 0.75rem; }
+  /* Make links more visible: */
+  .doc a { text-decoration: underline; }
+  .doc a code { text-decoration: underline; color: #1565c0; }
+  /* Tab header fonts aren't rendered good, adjusting the font weight: */
+  .tablist > ul li { font-weight: 500; }
+  /* `page-toclevels` greater than 4 are not supported by Antora UI, patching 
it: */
+  .toc .toc-menu li[data-level="4"] a {
+    padding-left: 2.75rem;
+  }
+  /* Replace the default highlight.js color for strings from red 
(unnecessarily signaling something negative) to green: */
+  .hljs-string {
+    color: #0f8532;
+  }
+</style>
+  </head>
+  <body class="status-404">
+<header class="header">
+  <nav class="navbar">
+    <div class="navbar-brand">
+      <span class="navbar-item title">Apache Log4j Kotlin</span>
+    </div>
+    <div id="topbar-nav" class="navbar-menu">
+      <div class="navbar-end">
+        <a class="navbar-item" href="https://logging.apache.org";>a subproject 
of&nbsp;<strong>Apache Logging Services</strong></a>
+      </div>
+    </div>
+  </nav>
+</header>
+<div class="body">
+<div class="nav-container">
+  <aside class="nav">
+    <div class="panels">
+    </div>
+  </aside>
+</div>
+<main class="article">
+<div class="toolbar" role="navigation">
+<button class="nav-toggle"></button>
+  <a href="/log4j/kotlin/index.html" class="home-link"></a>
+<nav class="breadcrumbs" aria-label="breadcrumbs">
+</nav>
+<div class="edit-this-page"><a 
href="https://github.com/apache/logging-log4j-kotlin/edit/main/src/site/antora/modules//pages/";>Edit
 this Page</a></div>
+</div>
+  <div class="content">
+<article class="doc">
+<h1 class="page">Page Not Found</h1>
+<div class="paragraph">
+<p>The page you&#8217;re looking for does not exist. It may have been moved. 
You can return to the <a href="/index.html">start page</a>, or follow one of 
the links in the navigation to the left.</p>
+</div>
+<div class="paragraph">
+<p>If you arrived on this page by clicking on a link, please notify the owner 
of the site that the link is broken.
+If you typed the URL of this page manually, please double check that you 
entered the address correctly.</p>
+</div>
+</article>
+  </div>
+</main>
+</div>
+<footer class="footer">
+  <p>
+    Copyright © 1999-2024 <a href="https://www.apache.org/";>The Apache 
Software Foundation</a>.
+    Licensed under the <a 
href="https://www.apache.org/licenses/LICENSE-2.0";>Apache Software License, 
Version 2.0</a>.
+    Please read our <a 
href="https://privacy.apache.org/policies/privacy-policy-public.html";>privacy 
policy</a>.
+  </p>
+  <p>
+    Apache, Log4j, and the Apache feather logo are trademarks or registered 
trademarks of The Apache Software Foundation.
+    Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+    Other names may be trademarks of their respective owners.
+  </p>
+</footer>
+<script id="site-script" src="/log4j/kotlin/_/js/site.js" 
data-ui-root-path="/log4j/kotlin/_"></script>
+<script async src="/log4j/kotlin/_/js/vendor/highlight.js"></script>
+<!-- `@asciidoctor/tabs` extension scripts -->
+<script async src="/log4j/kotlin/_/js/vendor/tabs.js"></script>
+  </body>
+</html>
diff --git a/README.txt b/README.txt
deleted file mode 100644
index 1e534a0..0000000
--- a/README.txt
+++ /dev/null
@@ -1 +0,0 @@
-Content for initializing an orphan branch for the website to be generated from 
`55c182884e911c5bc2b3581281c6014ac362304c`
diff --git a/_/css/site.css b/_/css/site.css
new file mode 100644
index 0000000..e7b43c5
--- /dev/null
+++ b/_/css/site.css
@@ -0,0 +1,3 @@
+@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(../font/roboto-latin-400-normal.woff2)
 format("woff2"),url(../font/roboto-latin-400-normal.woff) 
format("woff");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:url(../font/roboto-cyrillic-400-normal.woff2)
 format("woff2");unicode-range:U+0301,U+0400-04 [...]
+
+/*! Adapted from the GitHub style by Vasily Polovnyov <[email protected]> 
*/.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:600}.hljs-literal,.hljs-number,.hljs-tag
 
.hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:600}.hljs-subst{font-weight:400}.hljs-class
 .hljs-title,.hljs-type{color:#458;font-wei [...]
\ No newline at end of file
diff --git a/_/css/vendor/tabs.css b/_/css/vendor/tabs.css
new file mode 100644
index 0000000..00771c4
--- /dev/null
+++ b/_/css/vendor/tabs.css
@@ -0,0 +1,110 @@
+/*! Asciidoctor Tabs | Copyright (c) 2018-present Dan Allen | MIT License */
+.tabs {
+  margin-bottom: 1.25em;
+}
+
+.tablist > ul {
+  display: flex;
+  flex-wrap: wrap;
+  list-style: none;
+  margin: 0;
+  padding: 0;
+}
+
+.tablist > ul li {
+  align-items: center;
+  background-color: #fff;
+  cursor: pointer;
+  display: flex;
+  font-weight: bold;
+  line-height: 1.5;
+  padding: 0.25em 1em;
+  position: relative;
+}
+
+.tablist > ul li:focus-visible {
+  outline: none;
+}
+
+.tablist.ulist,
+.tablist.ulist > ul li {
+  margin: 0;
+}
+
+.tablist.ulist > ul li + li {
+  margin-left: 0.25em;
+}
+
+.tabs .tablist li::after {
+  content: "";
+  display: block;
+  height: 1px;
+  position: absolute;
+  bottom: -1px;
+  left: 0;
+  right: 0;
+}
+
+.tabs.is-loading .tablist li:not(:first-child),
+.tabs:not(.is-loading) .tablist li:not(.is-selected) {
+  background-color: #f5f5f5;
+}
+
+.tabs.is-loading .tablist li:first-child::after,
+.tabs:not(.is-loading) .tablist li.is-selected::after {
+  background-color: #fff;
+}
+
+/*
+.tabs:not(.is-loading) .tablist li,
+.tabs:not(.is-loading) .tablist li::after {
+  transition: background-color 200ms ease-in-out;
+}
+*/
+
+.tablist > ul p {
+  line-height: inherit;
+  margin: 0;
+}
+
+.tabpanel {
+  background-color: #fff;
+  padding: 1.25em;
+}
+
+.tablist > ul li,
+.tabpanel {
+  border: 1px solid #dcdcdc;
+}
+
+.tablist > ul li {
+  border-bottom: 0;
+}
+
+.tabs.is-loading .tabpanel + .tabpanel,
+.tabs:not(.is-loading) .tabpanel.is-hidden {
+  display: none;
+}
+
+.tabpanel > :first-child {
+  margin-top: 0;
+}
+
+/* #content is a signature of the Asciidoctor standalone HTML output */
+#content .tabpanel > :last-child,
+#content .tabpanel > :last-child > :last-child,
+#content .tabpanel > :last-child > :last-child > li:last-child > :last-child {
+  margin-bottom: 0;
+}
+
+.tablecontainer {
+  overflow-x: auto;
+}
+
+#content .tablecontainer {
+  margin-bottom: 1.25em;
+}
+
+#content .tablecontainer > table.tableblock {
+  margin-bottom: 0;
+}
diff --git a/_/font/roboto-cyrillic-400-italic.woff2 
b/_/font/roboto-cyrillic-400-italic.woff2
new file mode 100644
index 0000000..dd587a2
Binary files /dev/null and b/_/font/roboto-cyrillic-400-italic.woff2 differ
diff --git a/_/font/roboto-cyrillic-400-normal.woff2 
b/_/font/roboto-cyrillic-400-normal.woff2
new file mode 100644
index 0000000..47da362
Binary files /dev/null and b/_/font/roboto-cyrillic-400-normal.woff2 differ
diff --git a/_/font/roboto-cyrillic-500-italic.woff2 
b/_/font/roboto-cyrillic-500-italic.woff2
new file mode 100644
index 0000000..cbe564b
Binary files /dev/null and b/_/font/roboto-cyrillic-500-italic.woff2 differ
diff --git a/_/font/roboto-cyrillic-500-normal.woff2 
b/_/font/roboto-cyrillic-500-normal.woff2
new file mode 100644
index 0000000..cb5834f
Binary files /dev/null and b/_/font/roboto-cyrillic-500-normal.woff2 differ
diff --git a/_/font/roboto-latin-400-italic.woff 
b/_/font/roboto-latin-400-italic.woff
new file mode 100644
index 0000000..ebee16b
Binary files /dev/null and b/_/font/roboto-latin-400-italic.woff differ
diff --git a/_/font/roboto-latin-400-italic.woff2 
b/_/font/roboto-latin-400-italic.woff2
new file mode 100644
index 0000000..e1b7a79
Binary files /dev/null and b/_/font/roboto-latin-400-italic.woff2 differ
diff --git a/_/font/roboto-latin-400-normal.woff 
b/_/font/roboto-latin-400-normal.woff
new file mode 100644
index 0000000..9eaa94f
Binary files /dev/null and b/_/font/roboto-latin-400-normal.woff differ
diff --git a/_/font/roboto-latin-400-normal.woff2 
b/_/font/roboto-latin-400-normal.woff2
new file mode 100644
index 0000000..020729e
Binary files /dev/null and b/_/font/roboto-latin-400-normal.woff2 differ
diff --git a/_/font/roboto-latin-500-italic.woff 
b/_/font/roboto-latin-500-italic.woff
new file mode 100644
index 0000000..b6ad1c5
Binary files /dev/null and b/_/font/roboto-latin-500-italic.woff differ
diff --git a/_/font/roboto-latin-500-italic.woff2 
b/_/font/roboto-latin-500-italic.woff2
new file mode 100644
index 0000000..ae1933f
Binary files /dev/null and b/_/font/roboto-latin-500-italic.woff2 differ
diff --git a/_/font/roboto-latin-500-normal.woff 
b/_/font/roboto-latin-500-normal.woff
new file mode 100644
index 0000000..d39bb52
Binary files /dev/null and b/_/font/roboto-latin-500-normal.woff differ
diff --git a/_/font/roboto-latin-500-normal.woff2 
b/_/font/roboto-latin-500-normal.woff2
new file mode 100644
index 0000000..29342a8
Binary files /dev/null and b/_/font/roboto-latin-500-normal.woff2 differ
diff --git a/_/font/roboto-mono-latin-400-normal.woff 
b/_/font/roboto-mono-latin-400-normal.woff
new file mode 100644
index 0000000..be3eb4c
Binary files /dev/null and b/_/font/roboto-mono-latin-400-normal.woff differ
diff --git a/_/font/roboto-mono-latin-400-normal.woff2 
b/_/font/roboto-mono-latin-400-normal.woff2
new file mode 100644
index 0000000..f8894ba
Binary files /dev/null and b/_/font/roboto-mono-latin-400-normal.woff2 differ
diff --git a/_/font/roboto-mono-latin-500-normal.woff 
b/_/font/roboto-mono-latin-500-normal.woff
new file mode 100644
index 0000000..43ca6a1
Binary files /dev/null and b/_/font/roboto-mono-latin-500-normal.woff differ
diff --git a/_/font/roboto-mono-latin-500-normal.woff2 
b/_/font/roboto-mono-latin-500-normal.woff2
new file mode 100644
index 0000000..b4f2bf8
Binary files /dev/null and b/_/font/roboto-mono-latin-500-normal.woff2 differ
diff --git a/_/img/back.svg b/_/img/back.svg
new file mode 100644
index 0000000..bf7d30e
--- /dev/null
+++ b/_/img/back.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg"; width="100" height="100" viewBox="0 0 
100 100"><path d="M50.001 9.9L9.9 50 50 
90.1l5.656-5.655-30.435-30.442H90.1v-8.006H25.222l30.435-30.44z"/></svg>
\ No newline at end of file
diff --git a/_/img/caret.svg b/_/img/caret.svg
new file mode 100644
index 0000000..1af41bc
--- /dev/null
+++ b/_/img/caret.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg"; width="30" height="30" viewBox="0 0 30 
30"><path d="M10.187 3l14 12-14 12z" fill="#c1c1c1" stroke="#c1c1c1" 
stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
\ No newline at end of file
diff --git a/_/img/chevron.svg b/_/img/chevron.svg
new file mode 100644
index 0000000..40e962a
--- /dev/null
+++ b/_/img/chevron.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg"; width="30" height="30" viewBox="0 0 30 
30"><path d="M3.67 6.59L1.455 8.615 15 23.375l13.545-14.76L26.33 6.59 15 
18.76z" fill="#5d5d5d"/></svg>
\ No newline at end of file
diff --git a/_/img/home-o.svg b/_/img/home-o.svg
new file mode 100644
index 0000000..95d193b
--- /dev/null
+++ b/_/img/home-o.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 100 100"><g fill="none" 
stroke="#222" stroke-width="4"><path d="M50.02 13.576l-28.58 25.54-.02 
47.345h21.506l.025-25.166H57.05l.025 
25.166H78.62l.02-47.31-28.62-25.575z"/><path d="M63.815 
25.904v-9.217h8.657V33.64zM21.439 39.116l-9.982 8.92m77.125 
0l-9.943-8.885"/></g></svg>
\ No newline at end of file
diff --git a/_/img/home.svg b/_/img/home.svg
new file mode 100644
index 0000000..4e96b35
--- /dev/null
+++ b/_/img/home.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 100 100"><g stroke="#222" 
stroke-width="4"><path d="M50.02 13.576l-28.58 25.54-.02 
47.345h21.506l.025-25.166H57.05l.025 25.166H78.62l.02-47.31-28.62-25.575z" 
fill="#222" fill-rule="evenodd"/><path d="M63.815 25.904v-9.217h8.657V33.64z" 
fill="#222" fill-rule="evenodd"/><path d="M21.439 39.116l-9.982 8.92m77.125 
0l-9.943-8.885" fill="none"/></g></svg>
\ No newline at end of file
diff --git a/_/img/menu.svg b/_/img/menu.svg
new file mode 100644
index 0000000..8b43b2e
--- /dev/null
+++ b/_/img/menu.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 100 100"><path d="M35 
19.772h55" fill="none" stroke="#222" stroke-width="8" 
stroke-opacity=".941"/><path fill="#222" d="M10 12.272h15v15H10z"/><path d="M43 
63.678h45" fill="none" stroke="#222" stroke-width="5" 
stroke-opacity=".941"/><path fill="#222" d="M23 58.677h10v10H23z"/><path d="M43 
82.727h45" fill="none" stroke="#222" stroke-width="5" 
stroke-opacity=".941"/><path fill="#222" d="M23 77.727h10v10H23z"/><path d="M43 
44.628h45" fill [...]
\ No newline at end of file
diff --git a/_/img/octicons-16.svg b/_/img/octicons-16.svg
new file mode 100644
index 0000000..c221510
--- /dev/null
+++ b/_/img/octicons-16.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg"; viewBox="0 0 16 16"><desc>Octicons 
v11.2.0 by GitHub - https://primer.style/octicons/ - License: MIT</desc><symbol 
id="icon-clippy" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M5.75 
1a.75.75 0 00-.75.75v3c0 .414.336.75.75.75h4.5a.75.75 0 00.75-.75v-3a.75.75 0 
00-.75-.75h-4.5zm.75 3V2.5h3V4h-3zm-2.874-.467a.75.75 0 00-.752-1.298A1.75 1.75 
0 002 3.75v9.5c0 .966.784 1.75 1.75 1.75h8.5A1.75 1.75 0 0014 13.25v-9.5a1.75 
1.75 0 00-.874-1.515.75.75 0  [...]
\ No newline at end of file
diff --git a/_/js/site.js b/_/js/site.js
new file mode 100644
index 0000000..f02ada9
--- /dev/null
+++ b/_/js/site.js
@@ -0,0 +1,6 @@
+!function(){"use strict";var 
i,c,e,o,t,s,r,l=/^sect(\d)$/,a=document.querySelector(".nav-container");function
 n(){var 
e,t,n=window.location.hash;if(n&&(n.indexOf("%")&&(n=decodeURIComponent(n)),!(e=o.querySelector('.nav-link[href="'+n+'"]')))){n=document.getElementById(n.slice(1));if(n)for(var
 i=n,a=document.querySelector("article.doc");(i=i.parentNode)&&i!==a;){var 
c=i.id;if((c=c||(c=l.test(i.className))&&(i.firstElementChild||{}).id)&&(e=o.querySelector('.nav-link[href="#'+c+'"]')))bre
 [...]
+!function(){"use strict";var 
e=document.querySelector("aside.toc.sidebar");if(e){if(document.querySelector("body.-toc"))return
 e.parentNode.removeChild(e);var 
t=parseInt(e.dataset.levels||2,10);if(!(t<0)){var 
o="article.doc",d=document.querySelector(o);if(d){for(var 
n=[],i=0;i<=t;i++){var r=[o];if(i){for(var 
c=1;c<=i;c++)r.push((2===c?".sectionbody>":"")+".sect"+c);r.push("h"+(i+1)+"[id]"+(1<i?":not(.discrete)":""))}else
 r.push("h1[id].sect0");n.push(r.join(">"))}m=n.join(","),f=d.parent [...]
+!function(){"use strict";var 
n,o,i=document.querySelector("article.doc");function c(e){return 
e&&(~e.indexOf("%")?decodeURIComponent(e):e).slice(1)}function 
r(e){if(e){if(e.altKey||e.ctrlKey)return;window.location.hash="#"+this.id,e.preventDefault()}var
 t=function e(t,n){return 
i.contains(t)?e(t.offsetParent,t.offsetTop+n):n}(this,0)-n.getBoundingClientRect().bottom;!1===e&&o?window.scrollTo({left:0,top:t,behavior:"instant"}):window.scrollTo(0,t)}i&&(n=document.querySelector(".toolbar"),
 [...]
+!function(){"use strict";var t,e=document.querySelector(".page-versions 
.version-menu-toggle");e&&(t=document.querySelector(".page-versions"),e.addEventListener("click",function(e){t.classList.toggle("is-active"),e.stopPropagation()}),document.documentElement.addEventListener("click",function(){t.classList.remove("is-active")}))}();
+!function(){"use strict";var 
i=document.querySelector(".navbar-burger");i&&i.addEventListener("click",function(t){t.stopPropagation(),document.documentElement.classList.toggle("is-clipped--navbar"),i.setAttribute("aria-expanded",this.classList.toggle("is-active"));t=document.getElementById(this.getAttribute("aria-controls")||this.dataset.target);{var
 
e;t.classList.toggle("is-active")&&(t.style.maxHeight="",e=window.innerHeight-Math.round(t.getBoundingClientRect().top),parseInt(window.get
 [...]
+!function(){"use strict";var o=/^\$ (\S[^\\\n]*(\\\n(?!\$ 
)[^\\\n]*)*)(?=\n|$)/gm,s=/( ) *\\\n *|\\\n( ?) */g,l=/ 
+$/gm,e=(document.getElementById("site-script")||{dataset:{}}).dataset,d=window.navigator.clipboard,r=e.svgAs,p=(null==e.uiRootPath?window:e).uiRootPath||".";[].slice.call(document.querySelectorAll(".doc
 pre.highlight, .doc .literalblock pre")).forEach(function(e){var 
t,n,a,c;if(e.classList.contains("highlight"))(i=(t=e.querySelector("code")).dataset.lang)&&"console"!==i&&((a
 [...]
\ No newline at end of file
diff --git a/_/js/vendor/highlight.js b/_/js/vendor/highlight.js
new file mode 100644
index 0000000..c617244
--- /dev/null
+++ b/_/js/vendor/highlight.js
@@ -0,0 +1 @@
+!function(){function 
e(e){return{aliases:["adoc"],contains:[e.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10}),e.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section",relevance:10,variants:[{begin:"^(={1,5})
 .+?( 
\\1)?$"},{begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta",begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta",begin:"^\\[.+?\\]$",relevance:0},{
 [...]
\ No newline at end of file
diff --git a/_/js/vendor/tabs.js b/_/js/vendor/tabs.js
new file mode 100644
index 0000000..f8966c0
--- /dev/null
+++ b/_/js/vendor/tabs.js
@@ -0,0 +1,127 @@
+;(function () { /*! Asciidoctor Tabs | Copyright (c) 2018-present Dan Allen | 
MIT License */
+  'use strict'
+
+  var config = (document.currentScript || {}).dataset || {}
+  var forEach = Array.prototype.forEach
+
+  init(document.querySelectorAll('.tabs'))
+
+  function init (tabsBlocks) {
+    if (!tabsBlocks.length) return
+    forEach.call(tabsBlocks, function (tabs) {
+      var syncIds = tabs.classList.contains('is-sync') ? {} : undefined
+      var tablist = tabs.querySelector('.tablist ul')
+      tablist.setAttribute('role', 'tablist')
+      var start
+      forEach.call(tablist.querySelectorAll('li'), function (tab, idx) {
+        tab.tabIndex = -1
+        tab.setAttribute('role', tab.classList.add('tab') || 'tab')
+        var id, anchor, syncId
+        if (!(id = tab.id) && (anchor = tab.querySelector('a[id]'))) {
+          id = tab.id = anchor.parentNode.removeChild(anchor).id
+        }
+        var panel = id && tabs.querySelector('.tabpanel[aria-labelledby~="' + 
id + '"]')
+        if (!panel) return idx ? undefined : toggleSelected(tab, true) // 
invalid state
+        syncIds && (((syncId = tab.textContent.trim()) in syncIds) ? (syncId = 
undefined) : true) &&
+          (syncIds[(tab.dataset.syncId = syncId)] = tab)
+        idx || (syncIds && (start = { tab: tab, panel: panel })) ? 
toggleHidden(panel, true) : toggleSelected(tab, true)
+        tab.setAttribute('aria-controls', panel.id)
+        panel.setAttribute('role', 'tabpanel')
+        var onClick = syncId === undefined ? activateTab : activateTabSync
+        tab.addEventListener('click', onClick.bind({ tabs: tabs, tab: tab, 
panel: panel }))
+      })
+      if (!tabs.closest('.tabpanel')) {
+        forEach.call(tabs.querySelectorAll('.tabpanel table.tableblock'), 
function (table) {
+          var container = Object.assign(document.createElement('div'), { 
className: 'tablecontainer' })
+          table.parentNode.insertBefore(container, table).appendChild(table)
+        })
+      }
+      if (start) {
+        var syncGroupId
+        for (var i = 0, lst = tabs.classList, len = lst.length, className; i 
!== len; i++) {
+          if (!(className = lst.item(i)).startsWith('data-sync-group-id=')) 
continue
+          tabs.dataset.syncGroupId = syncGroupId = lst.remove(className) || 
className.slice(19).replace(/\u00a0/g, ' ')
+          break
+        }
+        if (syncGroupId === undefined) tabs.dataset.syncGroupId = syncGroupId 
= Object.keys(syncIds).sort().join('|')
+        var preferredSyncId = 'syncStorageKey' in config &&
+          window[(config.syncStorageScope || 'local') + 
'Storage'].getItem(config.syncStorageKey + '-' + syncGroupId)
+        var tab = preferredSyncId && syncIds[preferredSyncId]
+        tab && Object.assign(start, { tab: tab, panel: 
document.getElementById(tab.getAttribute('aria-controls')) })
+        toggleSelected(start.tab, true) || toggleHidden(start.panel, false)
+      }
+    })
+    onHashChange()
+    toggleClassOnEach(tabsBlocks, 'is-loading', 'remove')
+    window.setTimeout(toggleClassOnEach.bind(null, tabsBlocks, 'is-loaded', 
'add'), 0)
+    window.addEventListener('hashchange', onHashChange)
+  }
+
+  function activateTab (e) {
+    var tab = this.tab
+    var tabs = this.tabs || (this.tabs = tab.closest('.tabs'))
+    var panel = this.panel || (this.panel = 
document.getElementById(tab.getAttribute('aria-controls')))
+    querySelectorWithSiblings(tabs, '.tablist .tab', 'tab').forEach(function 
(el) {
+      toggleSelected(el, el === tab)
+    })
+    querySelectorWithSiblings(tabs, '.tabpanel', 'tabpanel').forEach(function 
(el) {
+      toggleHidden(el, el !== panel)
+    })
+    if (!this.isSync && 'syncStorageKey' in config && 'syncGroupId' in 
tabs.dataset) {
+      var storageKey = config.syncStorageKey + '-' + tabs.dataset.syncGroupId
+      window[(config.syncStorageScope || 'local') + 
'Storage'].setItem(storageKey, tab.dataset.syncId)
+    }
+    if (!e) return
+    var loc = window.location
+    var hashIdx = loc.hash ? loc.href.indexOf('#') : -1
+    if (~hashIdx) window.history.replaceState(null, '', loc.href.slice(0, 
hashIdx))
+    e.preventDefault()
+  }
+
+  function activateTabSync (e) {
+    activateTab.call(this, e)
+    var thisTabs = this.tabs
+    var thisTab = this.tab
+    var initialY = thisTabs.getBoundingClientRect().y
+    forEach.call(document.querySelectorAll('.tabs'), function (tabs) {
+      if (tabs === thisTabs || tabs.dataset.syncGroupId !== 
thisTabs.dataset.syncGroupId) return
+      querySelectorWithSiblings(tabs, '.tablist .tab', 'tab').forEach(function 
(tab) {
+        if (tab.dataset.syncId === thisTab.dataset.syncId) activateTab.call({ 
tabs: tabs, tab: tab, isSync: true })
+      })
+    })
+    var shiftedBy = thisTabs.getBoundingClientRect().y - initialY
+    if (shiftedBy && (shiftedBy = Math.round(shiftedBy))) window.scrollBy({ 
top: shiftedBy, behavior: 'instant' })
+  }
+
+  function querySelectorWithSiblings (scope, selector, siblingClass) {
+    var el = scope.querySelector(selector)
+    if (!el) return []
+    var result = [el]
+    while ((el = el.nextElementSibling) && 
el.classList.contains(siblingClass)) result.push(el)
+    return result
+  }
+
+  function toggleClassOnEach (elements, className, method) {
+    forEach.call(elements, function (el) {
+      el.classList[method](className)
+    })
+  }
+
+  function toggleHidden (el, state) {
+    el.classList[(el.hidden = state) ? 'add' : 'remove']('is-hidden')
+  }
+
+  function toggleSelected (el, state) {
+    el.setAttribute('aria-selected', '' + state)
+    el.classList[state ? 'add' : 'remove']('is-selected')
+    el.tabIndex = state ? 0 : -1
+  }
+
+  function onHashChange () {
+    var id = window.location.hash.slice(1)
+    if (!id) return
+    var tab = document.getElementById(~id.indexOf('%') ? 
decodeURIComponent(id) : id)
+    if (!(tab && tab.classList.contains('tab'))) return
+    'syncId' in tab.dataset ? activateTabSync.call({ tab: tab }) : 
activateTab.call({ tab: tab })
+  }
+})()
diff --git a/development.html b/development.html
new file mode 100644
index 0000000..cc3a5cf
--- /dev/null
+++ b/development.html
@@ -0,0 +1,167 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Development :: Apache Log4j Kotlin</title>
+    <link rel="canonical" 
href="https://logging.apache.org/log4j/kotlin/development.html";>
+    <meta name="generator" content="Antora 3.2.0-alpha.5">
+<link rel="stylesheet" href="./_/css/site.css">
+<link rel="icon" href="./_/../_images/favicon.ico" type="image/x-icon">
+<!-- `@asciidoctor/tabs` extension styles -->
+<link rel="stylesheet" href="./_/css/vendor/tabs.css">
+<style>
+  /* Swap colors of `IMPORTANT` and `WARNING` blocks */
+  .doc .admonitionblock.important .icon { background-color: #f70; }
+  .doc .admonitionblock.warning .icon { background-color: #e40046; }
+  /* Default `h4`, `h5`, and `h6` are smaller than the normal text, fix header 
font sizing: */
+  .doc h1 { font-size: 1.9rem; }
+  .doc h2 { font-size: 1.7rem; }
+  .doc h3 { font-size: 1.5rem; font-weight: 400; }
+  .doc h4 { font-size: 1.3rem; font-weight: 500; }
+  .doc h5 { font-size: 1.1rem; font-weight: 500; text-decoration: underline; }
+  .doc h6 { font-size: 0.9rem; font-weight: 500; text-decoration: underline; }
+  /* Default `code`, `pre`, and `.colist` (source code annotations) fonts are 
too big, adjust them: */
+  .doc .colist>table code, .doc p code, .doc thead code { font-size: 0.8em; }
+  .doc pre { font-size: 0.7rem; }
+  .doc .colist { font-size: 0.75rem; }
+  /* Make links more visible: */
+  .doc a { text-decoration: underline; }
+  .doc a code { text-decoration: underline; color: #1565c0; }
+  /* Tab header fonts aren't rendered good, adjusting the font weight: */
+  .tablist > ul li { font-weight: 500; }
+  /* `page-toclevels` greater than 4 are not supported by Antora UI, patching 
it: */
+  .toc .toc-menu li[data-level="4"] a {
+    padding-left: 2.75rem;
+  }
+  /* Replace the default highlight.js color for strings from red 
(unnecessarily signaling something negative) to green: */
+  .hljs-string {
+    color: #0f8532;
+  }
+</style>
+  </head>
+  <body class="article">
+<header class="header">
+  <nav class="navbar">
+    <div class="navbar-brand">
+      <span class="navbar-item title">Apache Log4j Kotlin</span>
+    </div>
+    <div id="topbar-nav" class="navbar-menu">
+      <div class="navbar-end">
+        <a class="navbar-item" href="https://logging.apache.org";>a subproject 
of&nbsp;<strong>Apache Logging Services</strong></a>
+      </div>
+    </div>
+  </nav>
+</header>
+<div class="body">
+<div class="nav-container" data-component="ROOT" data-version="">
+  <aside class="nav">
+    <div class="panels">
+<div class="nav-panel-menu is-active" data-panel="menu">
+  <nav class="nav-menu">
+    <button class="nav-menu-toggle" aria-label="Toggle expand/collapse all" 
style="display: none"></button>
+    <h3 class="title"><a href="index.html">Home</a></h3>
+<ul class="nav-list">
+  <li class="nav-item" data-depth="0">
+<ul class="nav-list">
+  <li class="nav-item is-current-page" data-depth="1">
+    <a class="nav-link" href="development.html">Development</a>
+  </li>
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="release-notes.html">Release notes</a>
+  </li>
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" 
href="https://logging.apache.org/download.html";>Download</a>
+  </li>
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" 
href="https://logging.apache.org/support.html";>Support</a>
+  </li>
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" 
href="https://logging.apache.org/security.html";>Security</a>
+  </li>
+</ul>
+  </li>
+</ul>
+  </nav>
+</div>
+    </div>
+  </aside>
+</div>
+<main class="article">
+<div class="toolbar" role="navigation">
+<button class="nav-toggle"></button>
+  <a href="index.html" class="home-link"></a>
+<nav class="breadcrumbs" aria-label="breadcrumbs">
+  <ul>
+    <li><a href="index.html">Home</a></li>
+    <li><a href="development.html">Development</a></li>
+  </ul>
+</nav>
+<div class="edit-this-page"><a 
href="https://github.com/apache/logging-log4j-kotlin/edit/main/src/site/antora/modules/ROOT/pages/development.adoc";>Edit
 this Page</a></div>
+</div>
+  <div class="content">
+<aside class="toc sidebar" data-title="Contents" data-levels="2">
+  <div class="toc-menu"></div>
+</aside>
+<article class="doc">
+<h1 class="page">Development</h1>
+<div id="preamble">
+<div class="sectionbody">
+<div class="paragraph">
+<p>Log4j Kotlin API uses <a 
href="https://github.com/apache/logging-log4j-kotlin";>GitHub</a> for source 
code management.</p>
+</div>
+<div class="paragraph">
+<p>The project requires a Java compiler matching the <code>[17,18)</code> 
range and targets Java <code>8</code> and Kotlin <code>1.6.21</code>.</p>
+</div>
+<div class="paragraph">
+<p>You can build and verify sources using:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-bash hljs" 
data-lang="bash">./mvnw verify</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>You can build and view the website as follows:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-bash hljs" 
data-lang="bash">./mvnw -N site</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>You can view the generated website with a browser by pointing it to 
<code>target/site</code> directory.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="release-instructions"><a class="anchor" 
href="#release-instructions"></a>Release instructions</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Log4j Kotlin API employs the CI/CD foundation provided by the <a 
href="https://logging.apache.org/logging-parent";><code>logging-parent</code></a>.
+You can simply use its release instructions.</p>
+</div>
+</div>
+</div>
+</article>
+  </div>
+</main>
+</div>
+<footer class="footer">
+  <p>
+    Copyright © 1999-2024 <a href="https://www.apache.org/";>The Apache 
Software Foundation</a>.
+    Licensed under the <a 
href="https://www.apache.org/licenses/LICENSE-2.0";>Apache Software License, 
Version 2.0</a>.
+    Please read our <a 
href="https://privacy.apache.org/policies/privacy-policy-public.html";>privacy 
policy</a>.
+  </p>
+  <p>
+    Apache, Log4j, and the Apache feather logo are trademarks or registered 
trademarks of The Apache Software Foundation.
+    Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+    Other names may be trademarks of their respective owners.
+  </p>
+</footer>
+<script id="site-script" src="./_/js/site.js" data-ui-root-path="./_"></script>
+<script async src="./_/js/vendor/highlight.js"></script>
+<!-- `@asciidoctor/tabs` extension scripts -->
+<script async src="./_/js/vendor/tabs.js"></script>
+  </body>
+</html>
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..1d2787c
--- /dev/null
+++ b/index.html
@@ -0,0 +1,558 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Log4j Kotlin API :: Apache Log4j Kotlin</title>
+    <link rel="canonical" 
href="https://logging.apache.org/log4j/kotlin/index.html";>
+    <meta name="generator" content="Antora 3.2.0-alpha.5">
+<link rel="stylesheet" href="./_/css/site.css">
+<link rel="icon" href="./_/../_images/favicon.ico" type="image/x-icon">
+<!-- `@asciidoctor/tabs` extension styles -->
+<link rel="stylesheet" href="./_/css/vendor/tabs.css">
+<style>
+  /* Swap colors of `IMPORTANT` and `WARNING` blocks */
+  .doc .admonitionblock.important .icon { background-color: #f70; }
+  .doc .admonitionblock.warning .icon { background-color: #e40046; }
+  /* Default `h4`, `h5`, and `h6` are smaller than the normal text, fix header 
font sizing: */
+  .doc h1 { font-size: 1.9rem; }
+  .doc h2 { font-size: 1.7rem; }
+  .doc h3 { font-size: 1.5rem; font-weight: 400; }
+  .doc h4 { font-size: 1.3rem; font-weight: 500; }
+  .doc h5 { font-size: 1.1rem; font-weight: 500; text-decoration: underline; }
+  .doc h6 { font-size: 0.9rem; font-weight: 500; text-decoration: underline; }
+  /* Default `code`, `pre`, and `.colist` (source code annotations) fonts are 
too big, adjust them: */
+  .doc .colist>table code, .doc p code, .doc thead code { font-size: 0.8em; }
+  .doc pre { font-size: 0.7rem; }
+  .doc .colist { font-size: 0.75rem; }
+  /* Make links more visible: */
+  .doc a { text-decoration: underline; }
+  .doc a code { text-decoration: underline; color: #1565c0; }
+  /* Tab header fonts aren't rendered good, adjusting the font weight: */
+  .tablist > ul li { font-weight: 500; }
+  /* `page-toclevels` greater than 4 are not supported by Antora UI, patching 
it: */
+  .toc .toc-menu li[data-level="4"] a {
+    padding-left: 2.75rem;
+  }
+  /* Replace the default highlight.js color for strings from red 
(unnecessarily signaling something negative) to green: */
+  .hljs-string {
+    color: #0f8532;
+  }
+</style>
+  </head>
+  <body class="article">
+<header class="header">
+  <nav class="navbar">
+    <div class="navbar-brand">
+      <span class="navbar-item title">Apache Log4j Kotlin</span>
+    </div>
+    <div id="topbar-nav" class="navbar-menu">
+      <div class="navbar-end">
+        <a class="navbar-item" href="https://logging.apache.org";>a subproject 
of&nbsp;<strong>Apache Logging Services</strong></a>
+      </div>
+    </div>
+  </nav>
+</header>
+<div class="body">
+<div class="nav-container" data-component="ROOT" data-version="">
+  <aside class="nav">
+    <div class="panels">
+<div class="nav-panel-menu is-active" data-panel="menu">
+  <nav class="nav-menu">
+    <button class="nav-menu-toggle" aria-label="Toggle expand/collapse all" 
style="display: none"></button>
+    <h3 class="title"><a href="index.html">Home</a></h3>
+<ul class="nav-list">
+  <li class="nav-item" data-depth="0">
+<ul class="nav-list">
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="development.html">Development</a>
+  </li>
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="release-notes.html">Release notes</a>
+  </li>
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" 
href="https://logging.apache.org/download.html";>Download</a>
+  </li>
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" 
href="https://logging.apache.org/support.html";>Support</a>
+  </li>
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" 
href="https://logging.apache.org/security.html";>Security</a>
+  </li>
+</ul>
+  </li>
+</ul>
+  </nav>
+</div>
+    </div>
+  </aside>
+</div>
+<main class="article">
+<div class="toolbar" role="navigation">
+<button class="nav-toggle"></button>
+  <a href="index.html" class="home-link is-current"></a>
+<nav class="breadcrumbs" aria-label="breadcrumbs">
+  <ul>
+    <li><a href="index.html">Home</a></li>
+    <li><a href="index.html">Log4j Kotlin API</a></li>
+  </ul>
+</nav>
+<div class="edit-this-page"><a 
href="https://github.com/apache/logging-log4j-kotlin/edit/main/src/site/antora/modules/ROOT/pages/index.adoc";>Edit
 this Page</a></div>
+</div>
+  <div class="content">
+<aside class="toc sidebar" data-title="Contents" data-levels="2">
+  <div class="toc-menu"></div>
+</aside>
+<article class="doc">
+<h1 class="page">Log4j Kotlin API</h1>
+<div id="preamble">
+<div class="sectionbody">
+<div class="paragraph">
+<p>Log4j Kotlin API provides a Kotlin-friendly interface to log against <a 
href="https://logging.apache.org/log4j/2.x/manual/api-separation.html";>the 
Log4j API</a>.
+The minimum requirements are Java <code>8</code> and Kotlin 
<code>1.6.21</code>.</p>
+</div>
+<div class="admonitionblock important">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-important" title="Important"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>This is just a logging API.
+Your application still needs to have a logging backend (e.g., <a 
href="https://logging.apache.org/log4j/2.x";>Log4j</a>) configured.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="dependencies"><a class="anchor" 
href="#dependencies"></a>Dependencies</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>You need to have the <code>org.apache.logging.log4j:log4j-api-kotlin</code> 
dependency in your classpath:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" 
data-lang="xml">&lt;dependency&gt;
+  &lt;groupId&gt;org.apache.logging.log4j&lt;/groupId&gt;
+  &lt;artifactId&gt;log4j-api-kotlin&lt;/artifactId&gt;
+  &lt;version&gt;1.5.0-SNAPSHOT&lt;/version&gt;
+&lt;/dependency&gt;</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Java module name and OSGi <code>Bundle-SymbolicName</code> are set to 
<code>org.apache.logging.log4j.api.kotlin</code>.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="create-loggers"><a class="anchor" href="#create-loggers"></a>Creating 
loggers</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>A <code>Logger</code> is the primary interface that users interact with 
Log4j Kotlin.
+You can create <code>Logger</code>s particularly in two ways:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><a href="#class-loggers">Associate them with the class</a> 
(<strong>Recommended!</strong>)</p>
+</li>
+<li>
+<p><a href="#instance-loggers">Associate them with the instance</a></p>
+</li>
+</ul>
+</div>
+<div class="sect2">
+<h3 id="class-loggers"><a class="anchor" href="#class-loggers"></a><a 
id="usage"></a> Creating class loggers</h3>
+<div class="paragraph">
+<p>For most applications, we recommend you to create <strong>a single logger 
instance per class definition</strong> – not <a href="#instance-loggers">per 
class instance</a>!
+This not only avoids creating an extra logger field for each instance, its 
access pattern transparently communicates the implementation: the 
<code>Logger</code> is statically bound to the class definition.
+You can create class loggers in one of following ways:</p>
+</div>
+<div class="sect3">
+<h4 id="create-companion-logger"><a class="anchor" 
href="#create-companion-logger"></a>Creating a logger in the companion 
object</h4>
+<div class="paragraph">
+<p>This is the traditional approach to create class loggers.
+It also happens to be the most efficient one, since the logger lookup is 
performed once and its result is stored in the companion object shared by all 
instances of the class.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-kotlin hljs" 
data-lang="kotlin">import org.apache.logging.log4j.kotlin.logger
+
+class DbTableService {
+
+  companion object {
+
+    private val LOGGER = logger() <i class="conum" 
data-value="1"></i><b>(1)</b>
+
+  }
+
+  fun truncateTable(tableName: String) {
+    LOGGER.warn { "truncating table `${tableName}`" }
+    db.truncate(tableName)
+  }
+
+}</code></pre>
+</div>
+</div>
+<div class="colist arabic">
+<table>
+<tr>
+<td><i class="conum" data-value="1"></i><b>1</b></td>
+<td>Create a <code>Logger</code> associated with the static class definition 
that all instances of the class share</td>
+</tr>
+</table>
+</div>
+</div>
+<div class="sect3">
+<h4 id="extend-companion"><a class="anchor" 
href="#extend-companion"></a>Extending companion object from 
<code>Logging</code></h4>
+<div class="paragraph">
+<p><code>Logging</code> interface contains a <code>logger</code> getter that 
you can use by extending the companion object from the <code>Logging</code> 
class:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-kotlin hljs" 
data-lang="kotlin">import org.apache.logging.log4j.kotlin.Logging
+
+class DbTableService {
+
+  companion object: Logging <i class="conum" data-value="1"></i><b>(1)</b>
+
+  fun truncateTable(tableName: String) {
+    logger.warn { "truncating table `${tableName}`" }
+    db.truncate(tableName)
+  }
+
+}</code></pre>
+</div>
+</div>
+<div class="colist arabic">
+<table>
+<tr>
+<td><i class="conum" data-value="1"></i><b>1</b></td>
+<td>Extending the companion object from <code>Logging</code> effectively 
creates a single <code>Logger</code> instance
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Assigned to the <code>logger</code> field</p>
+</li>
+<li>
+<p>Associated with the static class definition that all instances of the class 
share</p>
+</li>
+</ol>
+</div></td>
+</tr>
+</table>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>This getter-based approach incurs an extra overhead (compared to <a 
href="#create-companion-logger">Creating a logger in the companion object</a>) 
due to the logger lookup involved at runtime.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="instance-loggers"><a class="anchor" 
href="#instance-loggers"></a>Creating instance loggers</h3>
+<div class="paragraph">
+<p>Even though we recommend you to <a href="#class-loggers">create class 
loggers</a>, there might be occasions (most notably while <a 
href="https://logging.apache.org/log4j/2.x/manual/webapp.html#log-separation";>sharing
 classes in Jakarta EE environments</a>) necessitating loggers associated with 
each instance.
+You can achieve this as follows:</p>
+</div>
+<div class="sect3">
+<h4 id="create-instance-logger"><a class="anchor" 
href="#create-instance-logger"></a>Creating a logger in the class</h4>
+<div class="paragraph">
+<p>This is the traditional approach to create instance loggers.
+It also happens to be the most efficient one, since the logger lookup is 
performed once and its result is stored in the instance field.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-kotlin hljs" 
data-lang="kotlin">import org.apache.logging.log4j.kotlin.logger
+
+class DbTableService {
+
+  private val logger = logger() <i class="conum" data-value="1"></i><b>(1)</b>
+
+  fun truncateTable(tableName: String) {
+    logger.warn { "truncating table `${tableName}`" }
+    db.truncate(tableName)
+  }
+
+}</code></pre>
+</div>
+</div>
+<div class="colist arabic">
+<table>
+<tr>
+<td><i class="conum" data-value="1"></i><b>1</b></td>
+<td>Create a <code>Logger</code> associated with the class instance</td>
+</tr>
+</table>
+</div>
+</div>
+<div class="sect3">
+<h4 id="extend-instance"><a class="anchor" 
href="#extend-instance"></a>Extending the class from <code>Logging</code></h4>
+<div class="paragraph">
+<p><code>Logging</code> interface contains a <code>logger</code> getter that 
you can use by extending the class from <code>Logging</code>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-kotlin hljs" 
data-lang="kotlin">import org.apache.logging.log4j.kotlin.Logging
+
+class DbTableService: Logging { <i class="conum" data-value="1"></i><b>(1)</b>
+
+  fun truncateTable(tableName: String) {
+    logger.warn { "truncating table `${tableName}`" }
+    db.truncate(tableName)
+  }
+
+}</code></pre>
+</div>
+</div>
+<div class="colist arabic">
+<table>
+<tr>
+<td><i class="conum" data-value="1"></i><b>1</b></td>
+<td>Extending the class from <code>Logging</code> effectively creates a single 
<code>Logger</code> instance
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Assigned to the <code>logger</code> field</p>
+</li>
+<li>
+<p>Exclusively associated with the class instance (i.e., not shared among 
instances!)</p>
+</li>
+</ol>
+</div></td>
+</tr>
+</table>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>This getter-based approach incurs an extra overhead (compared to <a 
href="#create-instance-logger">Creating a logger in the class</a>) due to the 
logger lookup involved at runtime.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</div>
+<div class="sect3">
+<h4 id="logger-extension"><a class="anchor" href="#logger-extension"></a>Using 
<code>logger</code> extension property</h4>
+<div class="paragraph">
+<p>You can use the <code>logger</code>  extension property to dynamically 
inject a logger at the spot:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-kotlin hljs" 
data-lang="kotlin">import org.apache.logging.log4j.kotlin.logger
+
+class DbTableService {
+
+  fun truncateTable(tableName: String) {
+    logger.warn { "truncating table `${tableName}`" } <i class="conum" 
data-value="1"></i><b>(1)</b>
+    db.truncate(tableName)
+  }
+
+}</code></pre>
+</div>
+</div>
+<div class="colist arabic">
+<table>
+<tr>
+<td><i class="conum" data-value="1"></i><b>1</b></td>
+<td><code>logger</code> will look up the associated <code>Logger</code> 
instance for the encapsulating class</td>
+</tr>
+</table>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>This getter-based approach incurs an extra overhead (compared to <a 
href="#create-instance-logger">Creating a logger in the class</a>) due to the 
logger lookup involved at runtime.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="thread-context"><a class="anchor" href="#thread-context"></a>Thread 
context</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The <code>ThreadContext</code> API has two facade objects provided: 
<code>ContextMap</code> and <code>ContextStack</code>.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-kotlin hljs" 
data-lang="kotlin">import org.apache.logging.log4j.kotlin.ContextMap
+import org.apache.logging.log4j.kotlin.ContextStack
+
+ContextMap["key"] = "value"
+assert(ContextMap["key"] == "value")
+assert("key" in ContextMap)
+
+ContextMap += "anotherKey" to "anotherValue"
+ContextMap -= "key"
+
+ContextStack.push("message")
+assert(!ContextStack.empty)
+assert(ContextStack.depth == 1)
+val message = ContextStack.peek()
+assert(message == ContextStack.pop())
+assert(ContextStack.empty)</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>A <code>CoroutineThreadContext</code> context element is provided to 
integrate logging context with coroutines.</p>
+</div>
+<div class="paragraph">
+<p>We provide convenience functions <code>loggingContext</code> and 
<code>additionalLoggingContext</code> to create instances of 
<code>CoroutineThreadContext</code> with the appropriate context data.
+The result of these functions can be passed directly to coroutine builders to 
set the context for the coroutine.</p>
+</div>
+<div class="paragraph">
+<p>To set the context, ignoring any context currently in scope:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-kotlin hljs" 
data-lang="kotlin">launch(loggingContext(mapOf("myKey" to "myValue"), 
listOf("test"))) {
+  assertEquals("myValue", ContextMap["myKey"])
+  assertEquals("test", ContextStack.peek())
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Or to preserve the existing context and add additional logging context:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-kotlin hljs" 
data-lang="kotlin">launch(additionalLoggingContext(mapOf("myKey" to "myValue"), 
listOf("test"))) {
+  assertEquals("myValue", ContextMap["myKey"])
+  assertEquals("test", ContextStack.peek())
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Alternatively, to change the context without launching a new coroutine, the 
<code>withLoggingContext</code> and <code>withAdditionalLoggingContext</code> 
functions are provided:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-kotlin hljs" 
data-lang="kotlin">withAdditionalLoggingContext(mapOf("myKey" to "myValue"), 
listOf("test")) {
+  assertEquals("myValue", ContextMap["myKey"])
+  assertEquals("test", ContextStack.peek())
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>These functions are shorthand for 
<code>withContext(loggingContext(&#8230;&#8203;))</code> or 
<code>withContext(additionalLoggingContext(&#8230;&#8203;))</code>.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="params"><a class="anchor" href="#params"></a>Parameter 
substitution</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Unlike Java, Kotlin provides native functionality for <a 
href="https://kotlinlang.org/docs/reference/basic-syntax.html#using-string-templates";>string
 templates</a>.
+However, using a string template still incurs the message construction cost if 
the logger level is not enabled.
+To avoid this, prefer passing a lambda which won&#8217;t be evaluated until 
necessary:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-kotlin hljs" 
data-lang="kotlin">logger.debug { "Logging in user ${user.name} with birthday 
${user.calcBirthday()}" }</code></pre>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="logger-names"><a class="anchor" href="#logger-names"></a>Logger 
names</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Most logging implementations use a hierarchical scheme for matching logger 
names with logging configuration.</p>
+</div>
+<div class="paragraph">
+<p>In this scheme the logger name hierarchy is represented by <code>.</code> 
(dot) characters in the logger name, in a fashion very similar to the hierarchy 
used for Java/Kotlin package names.
+The <code>Logger</code> property added by the <code>Logging</code> interface 
follows this convention: the interface ensures the <code>Logger</code> is 
automatically named according to the class it is being used in.</p>
+</div>
+<div class="paragraph">
+<p>The value returned when calling the <code>logger()</code> extension method 
depends on the receiver of the extension.
+When called within an object, the receiver is <code>this</code> and therefore 
the logger will again be named according to the class it is being used in.
+However, a logger named via another class can be obtained as well:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-kotlin hljs" 
data-lang="kotlin">import org.apache.logging.log4j.kotlin
+
+class MyClass: BaseClass {
+
+  val logger = SomeOtherClass.logger()
+
+  // ...
+
+}</code></pre>
+</div>
+</div>
+<div class="sect2">
+<h3 id="explicitly-named-loggers"><a class="anchor" 
href="#explicitly-named-loggers"></a>Explicitly Named Loggers</h3>
+<div class="paragraph">
+<p>An explicitly-named logger may be obtained via the <code>logger</code> 
function that takes a <code>name</code> parameter:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-kotlin hljs" 
data-lang="kotlin">import org.apache.logging.log4j.kotlin
+
+class MyClass: BaseClass {
+
+  val logger = logger("MyCustomLoggerName")
+
+  // ...
+
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This is also needed in scopes that do not have a <code>this</code> object, 
such as top-level functions.</p>
+</div>
+</div>
+</div>
+</div>
+</article>
+  </div>
+</main>
+</div>
+<footer class="footer">
+  <p>
+    Copyright © 1999-2024 <a href="https://www.apache.org/";>The Apache 
Software Foundation</a>.
+    Licensed under the <a 
href="https://www.apache.org/licenses/LICENSE-2.0";>Apache Software License, 
Version 2.0</a>.
+    Please read our <a 
href="https://privacy.apache.org/policies/privacy-policy-public.html";>privacy 
policy</a>.
+  </p>
+  <p>
+    Apache, Log4j, and the Apache feather logo are trademarks or registered 
trademarks of The Apache Software Foundation.
+    Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+    Other names may be trademarks of their respective owners.
+  </p>
+</footer>
+<script id="site-script" src="./_/js/site.js" data-ui-root-path="./_"></script>
+<script async src="./_/js/vendor/highlight.js"></script>
+<!-- `@asciidoctor/tabs` extension scripts -->
+<script async src="./_/js/vendor/tabs.js"></script>
+  </body>
+</html>
diff --git a/release-notes.html b/release-notes.html
new file mode 100644
index 0000000..93adebc
--- /dev/null
+++ b/release-notes.html
@@ -0,0 +1,402 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Release notes :: Apache Log4j Kotlin</title>
+    <link rel="canonical" 
href="https://logging.apache.org/log4j/kotlin/release-notes.html";>
+    <meta name="generator" content="Antora 3.2.0-alpha.5">
+<link rel="stylesheet" href="./_/css/site.css">
+<link rel="icon" href="./_/../_images/favicon.ico" type="image/x-icon">
+<!-- `@asciidoctor/tabs` extension styles -->
+<link rel="stylesheet" href="./_/css/vendor/tabs.css">
+<style>
+  /* Swap colors of `IMPORTANT` and `WARNING` blocks */
+  .doc .admonitionblock.important .icon { background-color: #f70; }
+  .doc .admonitionblock.warning .icon { background-color: #e40046; }
+  /* Default `h4`, `h5`, and `h6` are smaller than the normal text, fix header 
font sizing: */
+  .doc h1 { font-size: 1.9rem; }
+  .doc h2 { font-size: 1.7rem; }
+  .doc h3 { font-size: 1.5rem; font-weight: 400; }
+  .doc h4 { font-size: 1.3rem; font-weight: 500; }
+  .doc h5 { font-size: 1.1rem; font-weight: 500; text-decoration: underline; }
+  .doc h6 { font-size: 0.9rem; font-weight: 500; text-decoration: underline; }
+  /* Default `code`, `pre`, and `.colist` (source code annotations) fonts are 
too big, adjust them: */
+  .doc .colist>table code, .doc p code, .doc thead code { font-size: 0.8em; }
+  .doc pre { font-size: 0.7rem; }
+  .doc .colist { font-size: 0.75rem; }
+  /* Make links more visible: */
+  .doc a { text-decoration: underline; }
+  .doc a code { text-decoration: underline; color: #1565c0; }
+  /* Tab header fonts aren't rendered good, adjusting the font weight: */
+  .tablist > ul li { font-weight: 500; }
+  /* `page-toclevels` greater than 4 are not supported by Antora UI, patching 
it: */
+  .toc .toc-menu li[data-level="4"] a {
+    padding-left: 2.75rem;
+  }
+  /* Replace the default highlight.js color for strings from red 
(unnecessarily signaling something negative) to green: */
+  .hljs-string {
+    color: #0f8532;
+  }
+</style>
+  </head>
+  <body class="article">
+<header class="header">
+  <nav class="navbar">
+    <div class="navbar-brand">
+      <span class="navbar-item title">Apache Log4j Kotlin</span>
+    </div>
+    <div id="topbar-nav" class="navbar-menu">
+      <div class="navbar-end">
+        <a class="navbar-item" href="https://logging.apache.org";>a subproject 
of&nbsp;<strong>Apache Logging Services</strong></a>
+      </div>
+    </div>
+  </nav>
+</header>
+<div class="body">
+<div class="nav-container" data-component="ROOT" data-version="">
+  <aside class="nav">
+    <div class="panels">
+<div class="nav-panel-menu is-active" data-panel="menu">
+  <nav class="nav-menu">
+    <button class="nav-menu-toggle" aria-label="Toggle expand/collapse all" 
style="display: none"></button>
+    <h3 class="title"><a href="index.html">Home</a></h3>
+<ul class="nav-list">
+  <li class="nav-item" data-depth="0">
+<ul class="nav-list">
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" href="development.html">Development</a>
+  </li>
+  <li class="nav-item is-current-page" data-depth="1">
+    <a class="nav-link" href="release-notes.html">Release notes</a>
+  </li>
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" 
href="https://logging.apache.org/download.html";>Download</a>
+  </li>
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" 
href="https://logging.apache.org/support.html";>Support</a>
+  </li>
+  <li class="nav-item" data-depth="1">
+    <a class="nav-link" 
href="https://logging.apache.org/security.html";>Security</a>
+  </li>
+</ul>
+  </li>
+</ul>
+  </nav>
+</div>
+    </div>
+  </aside>
+</div>
+<main class="article">
+<div class="toolbar" role="navigation">
+<button class="nav-toggle"></button>
+  <a href="index.html" class="home-link"></a>
+<nav class="breadcrumbs" aria-label="breadcrumbs">
+  <ul>
+    <li><a href="index.html">Home</a></li>
+    <li><a href="release-notes.html">Release notes</a></li>
+  </ul>
+</nav>
+<div class="edit-this-page"><a 
href="https://github.com/apache/logging-log4j-kotlin/edit/main/src/site/antora/modules/ROOT/pages/release-notes.adoc";>Edit
 this Page</a></div>
+</div>
+  <div class="content">
+<aside class="toc sidebar" data-title="Contents" data-levels="1">
+  <div class="toc-menu"></div>
+</aside>
+<article class="doc">
+<h1 class="page">Release notes</h1>
+<div class="sect1">
+<h2 id="release-notes-1-x-x"><a class="anchor" 
href="#release-notes-1-x-x"></a>1.x.x</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>List of changes for the upcoming release.</p>
+</div>
+<div class="sect2">
+<h3 id="release-notes-1-x-x-added"><a class="anchor" 
href="#release-notes-1-x-x-added"></a>Added</h3>
+<div class="ulist">
+<ul>
+<li>
+<p>Add convenience functions for managing logging context in coroutines (<a 
href="https://github.com/apache/logging-log4j-kotlin/pull/65";>65</a>)</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="release-notes-1-x-x-changed"><a class="anchor" 
href="#release-notes-1-x-x-changed"></a>Changed</h3>
+<div class="ulist">
+<ul>
+<li>
+<p>Migrate website to Antora (<a 
href="https://github.com/apache/logging-log4j2/pull/2443";>apache/logging-log4j2#2443</a>)</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="release-notes-1-x-x-updated"><a class="anchor" 
href="#release-notes-1-x-x-updated"></a>Updated</h3>
+<div class="ulist">
+<ul>
+<li>
+<p>Update <code>org.apache.logging.log4j:log4j-bom</code> to version 
<code>2.23.1</code> (<a 
href="https://github.com/apache/logging-log4j-kotlin/pull/70";>70</a>)</p>
+</li>
+<li>
+<p>Update <code>org.apache.logging:logging-parent</code> to version 
<code>11.1.0</code> (<a 
href="https://github.com/apache/logging-log4j-kotlin/pull/74";>74</a>)</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="release-notes-1-4-0"><a class="anchor" 
href="#release-notes-1-4-0"></a>1.4.0</h2>
+<div class="sectionbody">
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Release date</dt>
+<dd>
+<p>2023-12-18</p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>This minor release fixes incorrect coroutine context map and stack.</p>
+</div>
+<div class="sect2">
+<h3 id="release-notes-1-4-0-added"><a class="anchor" 
href="#release-notes-1-4-0-added"></a>Added</h3>
+<div class="ulist">
+<ul>
+<li>
+<p>Started generating CycloneDX SBOM with the recent update of 
<code>logging-parent</code> to version <code>10.2.0</code></p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="release-notes-1-4-0-changed"><a class="anchor" 
href="#release-notes-1-4-0-changed"></a>Changed</h3>
+<div class="ulist">
+<ul>
+<li>
+<p>Coroutine context is not cleared properly, only appended to (<a 
href="https://github.com/apache/logging-log4j-kotlin/issues/54";>54</a>)</p>
+</li>
+<li>
+<p>Update <code>org.apache.logging:logging-parent</code> to version 
<code>10.2.0</code></p>
+</li>
+<li>
+<p>Update <code>org.apache.logging.log4j:log4j-bom</code> to version 
<code>2.22.0</code> (<a 
href="https://github.com/apache/logging-log4j-kotlin/pull/52";>52</a>)</p>
+</li>
+<li>
+<p>Update <code>org.codehaus.mojo:build-helper-maven-plugin</code> to version 
<code>3.5.0</code> (<a 
href="https://github.com/apache/logging-log4j-kotlin/pull/51";>51</a>)</p>
+</li>
+<li>
+<p>Update <code>org.codehaus.mojo:exec-maven-plugin</code> to version 
<code>3.1.1</code> (<a 
href="https://github.com/apache/logging-log4j-kotlin/pull/50";>50</a>)</p>
+</li>
+<li>
+<p>Update <code>org.junit:junit-bom</code> to version <code>5.10.1</code> (<a 
href="https://github.com/apache/logging-log4j-kotlin/pull/49";>49</a>)</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="release-notes-1-4-0-updated"><a class="anchor" 
href="#release-notes-1-4-0-updated"></a>Updated</h3>
+<div class="ulist">
+<ul>
+<li>
+<p>Update <code>org.apache.logging:logging-parent</code> to version 
<code>10.5.0</code> (<a 
href="https://github.com/apache/logging-log4j-kotlin/pull/58";>58</a>)</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="release-notes-1-3-0"><a class="anchor" 
href="#release-notes-1-3-0"></a>1.3.0</h2>
+<div class="sectionbody">
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Release date</dt>
+<dd>
+<p>2023-10-03</p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>This minor release bumps the Kotlin baseline to 1.6.21 and contains various 
small improvements.</p>
+</div>
+<div class="sect2">
+<h3 id="release-notes-1-3-0-added"><a class="anchor" 
href="#release-notes-1-3-0-added"></a>Added</h3>
+<div class="ulist">
+<ul>
+<li>
+<p>Added an extension property for storing a cached logger (<a 
href="https://github.com/apache/logging-log4j-kotlin/issues/29";>29</a>)</p>
+</li>
+<li>
+<p>Added facade APIs for manipulating the context map and stack (<a 
href="https://github.com/apache/logging-log4j-kotlin/issues/30";>30</a>)</p>
+</li>
+<li>
+<p>Added missing <code>catching</code> and <code>throwing</code> API methods 
in <code>KotlinLogger</code> (<a 
href="https://github.com/apache/logging-log4j-kotlin/issues/32";>32</a>)</p>
+</li>
+<li>
+<p>Added JPMS support and used 
<code>org.apache.logging.log4j.api.kotlin</code> for the module name (identical 
to OSGi <code>Bundle-SymbolicName</code>) of the <code>log4j-api-kotlin</code> 
artifact</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="release-notes-1-3-0-changed"><a class="anchor" 
href="#release-notes-1-3-0-changed"></a>Changed</h3>
+<div class="ulist">
+<ul>
+<li>
+<p>Updated Log4j dependency to <code>2.20.0</code></p>
+</li>
+<li>
+<p>Bumped <code>logging-parent</code> version to <code>10.1.1</code> and 
overhauled the entire project infrastructure to take advantage of its goodies 
(<a href="https://github.com/apache/logging-log4j-kotlin/pull/37";>37</a>)</p>
+</li>
+<li>
+<p>Renamed OSGi <code>Bundle-SymbolicName</code> from 
<code>org.apache.logging.log4j.kotlin</code> to 
<code>org.apache.logging.log4j.api.kotlin</code></p>
+</li>
+<li>
+<p>Migrated tests to JUnit 5</p>
+</li>
+<li>
+<p>Bumped Kotlin and Kotlin Extensions baseline to <code>1.6.21</code> and 
<code>1.6.4</code> respectively</p>
+</li>
+<li>
+<p>Skipped deploying <code>log4j-api-kotlin-benchmark</code> and 
<code>log4j-api-kotlin-sample</code> modules</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="release-notes-1-3-0-removed"><a class="anchor" 
href="#release-notes-1-3-0-removed"></a>Removed</h3>
+<div class="ulist">
+<ul>
+<li>
+<p>Stopped exporting KDoc to HTML</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="release-notes-1-2-0"><a class="anchor" 
href="#release-notes-1-2-0"></a>1.2.0</h2>
+<div class="sectionbody">
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Release date</dt>
+<dd>
+<p>2021-12-20</p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>This is the 3rd minor release of the project.</p>
+</div>
+<div class="sect2">
+<h3 id="release-notes-1-2-0-changed"><a class="anchor" 
href="#release-notes-1-2-0-changed"></a>Changed</h3>
+<div class="ulist">
+<ul>
+<li>
+<p>Update Kotlin baseline version to <code>1.3.72</code> (<a 
href="https://issues.apache.org/jira/browse/LOG4J2-3218";>LOG4J2-3218</a>)</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="release-notes-1-1-0"><a class="anchor" 
href="#release-notes-1-1-0"></a>1.1.0</h2>
+<div class="sectionbody">
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Release date</dt>
+<dd>
+<p>2021-08-28</p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>This is the 2nd minor release of the project.</p>
+</div>
+<div class="sect2">
+<h3 id="release-notes-1-1-0-added"><a class="anchor" 
href="#release-notes-1-1-0-added"></a>Added</h3>
+<div class="ulist">
+<ul>
+<li>
+<p>Support MDCs with Kotlin coroutines (<a 
href="https://issues.apache.org/jira/browse/LOG4J2-2433";>LOG4J2-2433</a>)</p>
+</li>
+<li>
+<p>Support suspend functions in supplier lambdas (<a 
href="https://issues.apache.org/jira/browse/LOG4J2-2518";>LOG4J2-2518</a>)</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="release-notes-1-1-0-changed"><a class="anchor" 
href="#release-notes-1-1-0-changed"></a>Changed</h3>
+<div class="ulist">
+<ul>
+<li>
+<p>Update Kotlin baseline version to 1.3.72 (<a 
href="https://issues.apache.org/jira/browse/LOG4J2-2843";>LOG4J2-2843</a>)</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="release-notes-1-0-0"><a class="anchor" 
href="#release-notes-1-0-0"></a>1.0.0</h2>
+<div class="sectionbody">
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Release date</dt>
+<dd>
+<p>2018-11-03</p>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>This is the first major release of the project.</p>
+</div>
+<div class="sect2">
+<h3 id="release-notes-1-0-0-added"><a class="anchor" 
href="#release-notes-1-0-0-added"></a>Added</h3>
+<div class="ulist">
+<ul>
+<li>
+<p>Create Kotlin wrapper API for Log4j (<a 
href="https://issues.apache.org/jira/browse/LOG4J2-1705";>LOG4J2-3556</a>)</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="release-notes-1-0-0-changed"><a class="anchor" 
href="#release-notes-1-0-0-changed"></a>Changed</h3>
+<div class="ulist">
+<ul>
+<li>
+<p>Make <code>namedLogger</code> more discoverable (<a 
href="https://issues.apache.org/jira/browse/LOG4J2-2432";>LOG4J2-2432</a>)</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</div>
+</article>
+  </div>
+</main>
+</div>
+<footer class="footer">
+  <p>
+    Copyright © 1999-2024 <a href="https://www.apache.org/";>The Apache 
Software Foundation</a>.
+    Licensed under the <a 
href="https://www.apache.org/licenses/LICENSE-2.0";>Apache Software License, 
Version 2.0</a>.
+    Please read our <a 
href="https://privacy.apache.org/policies/privacy-policy-public.html";>privacy 
policy</a>.
+  </p>
+  <p>
+    Apache, Log4j, and the Apache feather logo are trademarks or registered 
trademarks of The Apache Software Foundation.
+    Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+    Other names may be trademarks of their respective owners.
+  </p>
+</footer>
+<script id="site-script" src="./_/js/site.js" data-ui-root-path="./_"></script>
+<script async src="./_/js/vendor/highlight.js"></script>
+<!-- `@asciidoctor/tabs` extension scripts -->
+<script async src="./_/js/vendor/tabs.js"></script>
+  </body>
+</html>
diff --git a/sitemap.xml b/sitemap.xml
new file mode 100644
index 0000000..f1710ba
--- /dev/null
+++ b/sitemap.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9";>
+<url>
+<loc>https://logging.apache.org/log4j/kotlin/development.html</loc>
+<lastmod>2024-07-07T17:33:22.578Z</lastmod>
+</url>
+<url>
+<loc>https://logging.apache.org/log4j/kotlin/index.html</loc>
+<lastmod>2024-07-07T17:33:22.578Z</lastmod>
+</url>
+<url>
+<loc>https://logging.apache.org/log4j/kotlin/release-notes.html</loc>
+<lastmod>2024-07-07T17:33:22.578Z</lastmod>
+</url>
+</urlset>

Reply via email to