Skip to content

Commit 8c20c66

Browse files
marcos-lgpivovarit
authored andcommitted
BAEL-1767 - Java 9 Platform Logging API (eugenp#5071)
* java 9 logger * slf4j + logback modules added * new module for slf4j * logback config * cleanup * format
1 parent d5e6a8d commit 8c20c66

10 files changed

Lines changed: 200 additions & 0 deletions

File tree

core-java-9/logging.sh

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# compile logging module
2+
# javac --module-path mods -d mods/com.baeldung.logging src/modules/com.baeldung.logging/module-info.java src/modules/com.baeldung.logging/com/baeldung/logging/*.java
3+
4+
# compile logging slf4j module
5+
javac --module-path mods -d mods/com.baeldung.logging.slf4j src/modules/com.baeldung.logging.slf4j/module-info.java src/modules/com.baeldung.logging.slf4j/com/baeldung/logging/slf4j/*.java
6+
7+
8+
# compile logging main app module
9+
javac --module-path mods -d mods/com.baeldung.logging.app src/modules/com.baeldung.logging.app/module-info.java src/modules/com.baeldung.logging.app/com/baeldung/logging/app/*.java
10+
11+
# run logging main app
12+
# java --module-path mods -m com.baeldung.logging.app/com.baeldung.logging.app.MainApp
13+
14+
# run looging main app using logback
15+
java --module-path mods -Dlogback.configurationFile=mods/logback.xml -m com.baeldung.logging.app/com.baeldung.logging.app.MainApp

core-java-9/mods/logback.xml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<configuration>
3+
4+
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
5+
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
6+
<pattern>
7+
%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} -- %msg%n
8+
</pattern>
9+
</encoder>
10+
</appender>
11+
12+
<root>
13+
<appender-ref ref="STDOUT"/>
14+
</root>
15+
16+
</configuration>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.baeldung.logging.app;
2+
3+
import static java.lang.System.Logger.*;
4+
5+
public class MainApp {
6+
7+
private static System.Logger LOGGER = System.getLogger("MainApp");
8+
9+
public static void main(String[] args) {
10+
LOGGER.log(Level.ERROR, "error test");
11+
LOGGER.log(Level.INFO, "info test");
12+
}
13+
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
module com.baeldung.logging.app {
2+
}
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
package com.baeldung.logging.slf4j;
2+
3+
import org.slf4j.Logger;
4+
import org.slf4j.LoggerFactory;
5+
6+
import java.util.ResourceBundle;
7+
8+
public class Slf4jLogger implements System.Logger {
9+
10+
private final String name;
11+
private final Logger logger;
12+
13+
public Slf4jLogger(String name) {
14+
this.name = name;
15+
logger = LoggerFactory.getLogger(name);
16+
}
17+
18+
@Override
19+
public String getName() {
20+
return name;
21+
}
22+
23+
@Override
24+
public boolean isLoggable(Level level) {
25+
switch (level) {
26+
case OFF:
27+
return false;
28+
case TRACE:
29+
return logger.isTraceEnabled();
30+
case DEBUG:
31+
return logger.isDebugEnabled();
32+
case INFO:
33+
return logger.isInfoEnabled();
34+
case WARNING:
35+
return logger.isWarnEnabled();
36+
case ERROR:
37+
return logger.isErrorEnabled();
38+
case ALL:
39+
default:
40+
return true;
41+
}
42+
}
43+
44+
@Override
45+
public void log(Level level, ResourceBundle bundle, String msg, Throwable thrown) {
46+
if (!isLoggable(level)) {
47+
return;
48+
}
49+
50+
switch (level) {
51+
case TRACE:
52+
logger.trace(msg, thrown);
53+
break;
54+
case DEBUG:
55+
logger.debug(msg, thrown);
56+
break;
57+
case INFO:
58+
logger.info(msg, thrown);
59+
break;
60+
case WARNING:
61+
logger.warn(msg, thrown);
62+
break;
63+
case ERROR:
64+
logger.error(msg, thrown);
65+
break;
66+
case ALL:
67+
default:
68+
logger.info(msg, thrown);
69+
}
70+
}
71+
72+
@Override
73+
public void log(Level level, ResourceBundle bundle, String format, Object... params) {
74+
if (!isLoggable(level)) {
75+
return;
76+
}
77+
78+
switch (level) {
79+
case TRACE:
80+
logger.trace(format, params);
81+
break;
82+
case DEBUG:
83+
logger.debug(format, params);
84+
break;
85+
case INFO:
86+
logger.info(format, params);
87+
break;
88+
case WARNING:
89+
logger.warn(format, params);
90+
break;
91+
case ERROR:
92+
logger.error(format, params);
93+
break;
94+
case ALL:
95+
default:
96+
logger.info(format, params);
97+
}
98+
}
99+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.baeldung.logging.slf4j;
2+
3+
public class Slf4jLoggerFinder extends System.LoggerFinder {
4+
@Override
5+
public System.Logger getLogger(String name, Module module) {
6+
return new Slf4jLogger(name);
7+
}
8+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
module com.baeldung.logging.slf4j {
2+
requires org.slf4j;
3+
provides java.lang.System.LoggerFinder
4+
with com.baeldung.logging.slf4j.Slf4jLoggerFinder;
5+
exports com.baeldung.logging.slf4j;
6+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.baeldung.logging;
2+
3+
import java.text.MessageFormat;
4+
import java.util.ResourceBundle;
5+
6+
public class ConsoleLogger implements System.Logger {
7+
8+
@Override
9+
public String getName() {
10+
return "ConsoleLogger";
11+
}
12+
13+
@Override
14+
public boolean isLoggable(Level level) {
15+
return true;
16+
}
17+
18+
@Override
19+
public void log(Level level, ResourceBundle bundle, String msg, Throwable thrown) {
20+
System.out.printf("ConsoleLogger [%s]: %s - %s%n", level, msg, thrown);
21+
}
22+
23+
@Override
24+
public void log(Level level, ResourceBundle bundle, String format, Object... params) {
25+
System.out.printf("ConsoleLogger [%s]: %s%n", level, MessageFormat.format(format, params));
26+
}
27+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.baeldung.logging;
2+
3+
public class CustomLoggerFinder extends System.LoggerFinder {
4+
5+
@Override
6+
public System.Logger getLogger(String name, Module module) {
7+
return new ConsoleLogger();
8+
}
9+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module com.baeldung.logging {
2+
provides java.lang.System.LoggerFinder
3+
with com.baeldung.logging.CustomLoggerFinder;
4+
exports com.baeldung.logging;
5+
}

0 commit comments

Comments
 (0)