Skip to content

Commit 27644df

Browse files
authored
BAEL-6754 Parameterized Logging with Slf4j (eugenp#14447)
- updated logback-classic version - updated logback.xml to have only one appender for new classes - added sample parameterized logging and fluent logging
1 parent 3e58e24 commit 27644df

File tree

5 files changed

+89
-7
lines changed

5 files changed

+89
-7
lines changed

logging-modules/logback/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@
66
- [Mask Sensitive Data in Logs With Logback](https://www.baeldung.com/logback-mask-sensitive-data)
77
- [Creating a Custom Logback Appender](https://www.baeldung.com/custom-logback-appender)
88
- [A Guide To Logback](https://www.baeldung.com/logback)
9+
- [Parameterized Logging with SLF4J](TODO)

logging-modules/logback/pom.xml

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,6 @@
2424
<artifactId>logback-classic</artifactId>
2525
<version>${logback.version}</version>
2626
</dependency>
27-
<dependency>
28-
<groupId>ch.qos.logback</groupId>
29-
<artifactId>logback-core</artifactId>
30-
<version>${logback.version}</version>
31-
</dependency>
3227
<dependency>
3328
<groupId>ch.qos.logback.contrib</groupId>
3429
<artifactId>logback-json-classic</artifactId>
@@ -75,6 +70,12 @@
7570
<version>${angus.activation.version}</version>
7671
<scope>runtime</scope>
7772
</dependency>
73+
<dependency>
74+
<groupId>org.projectlombok</groupId>
75+
<artifactId>lombok</artifactId>
76+
<scope>provided</scope>
77+
<version>${lombok.version}</version>
78+
</dependency>
7879
</dependencies>
7980

8081
<profiles>
@@ -118,8 +119,9 @@
118119
<docx4j.version>3.3.5</docx4j.version>
119120
<angus.mail.version>2.0.1</angus.mail.version>
120121
<angus.activation.version>2.0.0</angus.activation.version>
121-
<logback.version>1.3.5</logback.version>
122+
<logback.version>1.4.8</logback.version>
122123
<slf4j.version>2.0.4</slf4j.version>
124+
<lombok.version>1.18.22</lombok.version>
123125
</properties>
124126

125127
</project>
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.baeldung.parameterized.logging;
2+
3+
import java.time.LocalDateTime;
4+
import java.time.ZonedDateTime;
5+
6+
import lombok.extern.slf4j.Slf4j;
7+
8+
@Slf4j
9+
public class FluentLoggingPlayground {
10+
11+
public static void main(String[] args) {
12+
13+
Exception exceptionCause = new Exception(new IllegalArgumentException("Something unprocessable"));
14+
15+
log.atInfo()
16+
.setMessage("App is running at {}, zone = {}")
17+
.addArgument(LocalDateTime.now())
18+
.addArgument(ZonedDateTime.now().getZone())
19+
.log();
20+
21+
log.atInfo()
22+
.setMessage("App is running at {}, zone = {}")
23+
.addArgument(LocalDateTime.now())
24+
.addArgument(ZonedDateTime.now().getZone())
25+
.setCause(exceptionCause)
26+
.log();
27+
28+
log.atInfo()
29+
.setMessage("App is running at")
30+
.addKeyValue("time", LocalDateTime.now())
31+
.addKeyValue("zone", ZonedDateTime.now().getZone())
32+
.setCause(exceptionCause)
33+
.log();
34+
35+
}
36+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.baeldung.parameterized.logging;
2+
3+
import java.time.LocalDateTime;
4+
import java.time.ZonedDateTime;
5+
6+
import org.slf4j.Logger;
7+
import org.slf4j.LoggerFactory;
8+
9+
public class LoggingPlayground {
10+
11+
public static final Logger log = LoggerFactory.getLogger(LoggingPlayground.class);
12+
13+
public static void main(String[] args) {
14+
log.info("App is running at {}", LocalDateTime.now());
15+
16+
log.info("App is running at {}, zone = {}", LocalDateTime.now(), ZonedDateTime.now()
17+
.getZone());
18+
19+
log.info("App is running at {}, zone = {}, java version = {}", LocalDateTime.now(), ZonedDateTime.now()
20+
.getZone(), System.getProperty("java.version"));
21+
22+
log.info("App is running at {}, zone = {}, java version = {}, java vm = {}", LocalDateTime.now(), ZonedDateTime.now()
23+
.getZone(), System.getProperty("java.version"), System.getProperty("java.vm.name"));
24+
25+
//old approach to print multiple parameters
26+
log.info("App is running at {}, zone = {}, java version = {}, java vm = {}",
27+
new Object[] { ZonedDateTime.now(), ZonedDateTime.now().getZone(), System.getProperty("java.version"), System.getProperty("java.vm.name") });
28+
29+
Exception exceptionCause = new Exception(new IllegalArgumentException("Something unprocessable"));
30+
31+
//exception as last parameters is considered as exception and printed with trace
32+
log.info("App is running at {}, zone = {}, java version = {}, java vm = {}", LocalDateTime.now(), ZonedDateTime.now()
33+
.getZone(), System.getProperty("java.version"), System.getProperty("java.vm.name"), exceptionCause);
34+
35+
//exception in between parameters is considered as pure parameter and printed without trace
36+
log.info("App is running at {}, zone = {}, java version = {}, java vm = {}", LocalDateTime.now(), ZonedDateTime.now()
37+
.getZone(), System.getProperty("java.version"), exceptionCause, System.getProperty("java.vm.name"));
38+
39+
}
40+
}

logging-modules/logback/src/main/resources/logback.xml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<appender name="out" class="ch.qos.logback.core.ConsoleAppender">
88
<encoder>
9-
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
9+
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg %kvp%n</pattern>
1010
</encoder>
1111
</appender>
1212

@@ -66,4 +66,7 @@
6666
<appender-ref ref="mask" />
6767
</root>
6868

69+
<logger name="com.baeldung.parameterized.logging" additivity="false" level="INFO">
70+
<appender-ref ref="out"/>
71+
</logger>
6972
</configuration>

0 commit comments

Comments
 (0)