BAEL-6754 Parameterized Logging with Slf4j (#14447)

- updated logback-classic version
- updated logback.xml to have only one appender for new classes
- added sample parameterized logging and fluent logging
This commit is contained in:
Tetiana
2023-07-23 20:16:50 +03:00
committed by GitHub
parent 0da3664191
commit f78b9f0b9b
5 changed files with 89 additions and 7 deletions
@@ -0,0 +1,36 @@
package com.baeldung.parameterized.logging;
import java.time.LocalDateTime;
import java.time.ZonedDateTime;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class FluentLoggingPlayground {
public static void main(String[] args) {
Exception exceptionCause = new Exception(new IllegalArgumentException("Something unprocessable"));
log.atInfo()
.setMessage("App is running at {}, zone = {}")
.addArgument(LocalDateTime.now())
.addArgument(ZonedDateTime.now().getZone())
.log();
log.atInfo()
.setMessage("App is running at {}, zone = {}")
.addArgument(LocalDateTime.now())
.addArgument(ZonedDateTime.now().getZone())
.setCause(exceptionCause)
.log();
log.atInfo()
.setMessage("App is running at")
.addKeyValue("time", LocalDateTime.now())
.addKeyValue("zone", ZonedDateTime.now().getZone())
.setCause(exceptionCause)
.log();
}
}
@@ -0,0 +1,40 @@
package com.baeldung.parameterized.logging;
import java.time.LocalDateTime;
import java.time.ZonedDateTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LoggingPlayground {
public static final Logger log = LoggerFactory.getLogger(LoggingPlayground.class);
public static void main(String[] args) {
log.info("App is running at {}", LocalDateTime.now());
log.info("App is running at {}, zone = {}", LocalDateTime.now(), ZonedDateTime.now()
.getZone());
log.info("App is running at {}, zone = {}, java version = {}", LocalDateTime.now(), ZonedDateTime.now()
.getZone(), System.getProperty("java.version"));
log.info("App is running at {}, zone = {}, java version = {}, java vm = {}", LocalDateTime.now(), ZonedDateTime.now()
.getZone(), System.getProperty("java.version"), System.getProperty("java.vm.name"));
//old approach to print multiple parameters
log.info("App is running at {}, zone = {}, java version = {}, java vm = {}",
new Object[] { ZonedDateTime.now(), ZonedDateTime.now().getZone(), System.getProperty("java.version"), System.getProperty("java.vm.name") });
Exception exceptionCause = new Exception(new IllegalArgumentException("Something unprocessable"));
//exception as last parameters is considered as exception and printed with trace
log.info("App is running at {}, zone = {}, java version = {}, java vm = {}", LocalDateTime.now(), ZonedDateTime.now()
.getZone(), System.getProperty("java.version"), System.getProperty("java.vm.name"), exceptionCause);
//exception in between parameters is considered as pure parameter and printed without trace
log.info("App is running at {}, zone = {}, java version = {}, java vm = {}", LocalDateTime.now(), ZonedDateTime.now()
.getZone(), System.getProperty("java.version"), exceptionCause, System.getProperty("java.vm.name"));
}
}
@@ -6,7 +6,7 @@
<appender name="out" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg %kvp%n</pattern>
</encoder>
</appender>
@@ -66,4 +66,7 @@
<appender-ref ref="mask" />
</root>
<logger name="com.baeldung.parameterized.logging" additivity="false" level="INFO">
<appender-ref ref="out"/>
</logger>
</configuration>