<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>logging Archives - Creatronix</title>
	<atom:link href="https://creatronix.de/tag/logging/feed/" rel="self" type="application/rss+xml" />
	<link>https://creatronix.de/tag/logging/</link>
	<description>My adventures in code &#38; business</description>
	<lastBuildDate>Sun, 05 Jan 2025 10:40:01 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Log4j2 PatternLayout Cheatsheet</title>
		<link>https://creatronix.de/log4j2-patternlayout-cheatsheet/</link>
		
		<dc:creator><![CDATA[Jörn]]></dc:creator>
		<pubDate>Tue, 27 Apr 2021 09:22:47 +0000</pubDate>
				<category><![CDATA[Kotlin & Java]]></category>
		<category><![CDATA[kotlin]]></category>
		<category><![CDATA[log4j2]]></category>
		<category><![CDATA[logging]]></category>
		<category><![CDATA[patternlayout]]></category>
		<guid isPermaLink="false">https://creatronix.de/?p=3567</guid>

					<description><![CDATA[<p>In Log4j2 for Kotlin I&#8217;ve showed you how to configure a basic logger with log4j2. If you use a PatternLayout like this appender.console.layout.type = PatternLayout appender.console.layout.pattern = %m%n you can customize the appearance of the output. eg. appender.console.layout.pattern = %d{yyyy-mm-dd-HH:mm:ss.SSS} %-4p %C{1}.%M [%t] - %m%n%ex Parameter Parameter Meaning %m The log message %n line break&#8230;</p>
<p>The post <a href="https://creatronix.de/log4j2-patternlayout-cheatsheet/">Log4j2 PatternLayout Cheatsheet</a> appeared first on <a href="https://creatronix.de">Creatronix</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>In <a href="https://creatronix.de/log4j2-for-kotlin/">Log4j2 for Kotlin</a> I&#8217;ve showed you how to configure a basic logger with log4j2.</p>
<p>If you use a PatternLayout like this</p>
<pre>appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %m%n</pre>
<p>you can customize the appearance of the output.</p>
<p>eg.</p>
<pre>appender.console.layout.pattern = %d{yyyy-mm-dd-HH:mm:ss.SSS} %-4p %C{1}.%M [%t] - %m%n%ex</pre>
<h2>Parameter</h2>
<table>
<thead>
<tr>
<th>Parameter</th>
<th>Meaning</th>
</tr>
</thead>
<tbody>
<tr>
<td>%m</td>
<td>The log message</td>
</tr>
<tr>
<td>%n</td>
<td>line break</td>
</tr>
<tr>
<td>%d</td>
<td>timestamp</td>
</tr>
<tr>
<td>%p</td>
<td>priority</td>
</tr>
<tr>
<td>%t</td>
<td>thread</td>
</tr>
<tr>
<td>%C</td>
<td>class</td>
</tr>
</tbody>
</table>
<h2>Timestamps</h2>
<p>&nbsp;</p>
<pre>%d{yyyy-mm-dd-HH:mm:ss.SSS}
2021-50-27-10:50:32.701</pre>
<table>
<thead>
<tr>
<th>Parameter</th>
<th>Meaning</th>
</tr>
</thead>
<tbody>
<tr>
<td>yyyy</td>
<td>year in four digits</td>
</tr>
<tr>
<td>MM</p>
<p>MMM</td>
<td>month in two digits</p>
<p>Name of month three characters wide</td>
</tr>
<tr>
<td>dd</td>
<td>day</td>
</tr>
<tr>
<td>HH</td>
<td>hour</td>
</tr>
<tr>
<td>mm</td>
<td>minutes</td>
</tr>
<tr>
<td>ss</td>
<td>seconds</td>
</tr>
<tr>
<td>SSS</td>
<td>milliseconds</td>
</tr>
</tbody>
</table>
<p>The post <a href="https://creatronix.de/log4j2-patternlayout-cheatsheet/">Log4j2 PatternLayout Cheatsheet</a> appeared first on <a href="https://creatronix.de">Creatronix</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Log4j2 for Kotlin</title>
		<link>https://creatronix.de/log4j2-for-kotlin/</link>
		
		<dc:creator><![CDATA[Jörn]]></dc:creator>
		<pubDate>Tue, 20 Apr 2021 13:40:00 +0000</pubDate>
				<category><![CDATA[Kotlin & Java]]></category>
		<category><![CDATA[cook book]]></category>
		<category><![CDATA[gradle]]></category>
		<category><![CDATA[kotlin]]></category>
		<category><![CDATA[log4j2]]></category>
		<category><![CDATA[logger]]></category>
		<category><![CDATA[logging]]></category>
		<category><![CDATA[recipe]]></category>
		<category><![CDATA[Zero-Day Exploit]]></category>
		<guid isPermaLink="false">https://creatronix.de/?p=3555</guid>

					<description><![CDATA[<p>Motivation Logging is a common good practice in software engineering. It enables you to monitor applications in production to gather information about crashes and other malfunctions for further analysis. It is the &#8220;little brother&#8221; of debugging and often a precursor for setting up test cases which can lead to reproducing the bugs on the developers&#8230;</p>
<p>The post <a href="https://creatronix.de/log4j2-for-kotlin/">Log4j2 for Kotlin</a> appeared first on <a href="https://creatronix.de">Creatronix</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Motivation</h2>
<p>Logging is a common good practice in software engineering. It enables you to monitor applications in production to gather information about crashes and other malfunctions for further analysis. It is the &#8220;little brother&#8221; of debugging and often a precursor for setting up test cases which can lead to reproducing the bugs on the developers machine.</p>
<p>Log4j2 is version 2 of the very famous Apache logging library log4j from the Java ecosystem.</p>
<p>This article describes a minimal working solution for log4j2 with Kotlin and Gradle.</p>
<h2>Dependencies</h2>
<p>To get started with log4j2 add the following lines to your build.gradle file in the dependency section:</p>
<pre>implementation 'org.apache.logging.log4j:log4j-api:2.15.0'
implementation 'org.apache.logging.log4j:log4j-core:2.15.0'</pre>
<p><strong>Please make sure to use the latest </strong><del>2.15.0</del><strong> 2.16.0 to avoid the Zero-Day Exploit! <a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-45046">More Details</a><br />
</strong></p>
<h2>Configuration</h2>
<p>Create a file with the name log4j2.properties under src/resources with the content:</p>
<pre>status = error

appender.console.type = Console
appender.console.name = LogToConsole
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %m%n

rootLogger.level = error
rootLogger.appenderRef.stdout.ref = LogToConsole</pre>
<h2>Logger</h2>
<p>In your code you can insert the log statements the following way:</p>
<pre>import org.apache.logging.log4j.kotlin.logger

fun main() {
    val log = logger("Main")
    log.trace("Trace")
    log.debug("Debug")
    log.info("Info")
    log.warn("Warn")
    log.error("Error")
    log.fatal("Fatal")
}</pre>
<h2>Log Levels</h2>
<p>In the configuration file you can set the log level.</p>
<p>e.g. rootLogger.level = error will log all log message which are more severe than error including error -&gt; (fatal and error)</p>
<pre>| Log msg |        |       |       |      |      |       |       |     |
|---------|--------|-------|-------|------|------|-------|-------|-----|
| trace   |        |       |       |      |      |       | x     | x   |
| debug   |        |       |       |      |      | x     | x     | x   |
| info    |        |       |       |      | x    | x     | x     | x   |
| warn    |        |       |       | x    | x    | x     | x     | x   |
| error   |        |       | x     | x    | x    | x     | x     | x   |
| fatal   |        | x     | x     | x    | x    | x     | x     | x   |
|         | off    | fatal | error | warn | info | debug | trace | all |
|         | config |       |       |      |      |       |       |     |</pre>
<p>The post <a href="https://creatronix.de/log4j2-for-kotlin/">Log4j2 for Kotlin</a> appeared first on <a href="https://creatronix.de">Creatronix</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
