Skip to content

Commit fd76b01

Browse files
egoebelbeckermaibin
authored andcommitted
BAEL-1710 - A Guide to Logback (eugenp#4178)
1 parent 05b7e93 commit fd76b01

File tree

3 files changed

+122
-0
lines changed

3 files changed

+122
-0
lines changed

logging-modules/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@
55

66
- [Creating a Custom Logback Appender](http://www.baeldung.com/custom-logback-appender)
77
- [Get Log Output in JSON Format](http://www.baeldung.com/java-log-json-output)
8+
- [A Guide To Logback](http://www.baeldung.com/a-guide-to-logback)
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
package com.baeldung.logback;
2+
3+
import ch.qos.logback.classic.Level;
4+
import org.junit.Test;
5+
6+
import ch.qos.logback.classic.Logger;
7+
import org.slf4j.LoggerFactory;
8+
9+
public class LogbackTests {
10+
11+
@Test
12+
public void givenLogHierarchy_MessagesFiltered() {
13+
14+
ch.qos.logback.classic.Logger parentLogger =
15+
(ch.qos.logback.classic.Logger) LoggerFactory.getLogger("com.baeldung.logback");
16+
17+
parentLogger.setLevel(Level.INFO);
18+
19+
Logger childlogger = (ch.qos.logback.classic.Logger)LoggerFactory.getLogger("com.baeldung.logback.tests");
20+
21+
parentLogger.warn("This message is logged because WARN > INFO.");
22+
23+
// This request is disabled, because DEBUG < INFO.
24+
parentLogger.debug("This message is not logged because DEBUG < INFO.");
25+
26+
childlogger.info("INFO == INFO");
27+
28+
childlogger.debug("DEBUG < INFO");
29+
30+
}
31+
32+
@Test
33+
public void givenRootLevel_MessagesFiltered() {
34+
35+
ch.qos.logback.classic.Logger logger =
36+
(ch.qos.logback.classic.Logger) LoggerFactory.getLogger("com.baeldung.logback");
37+
38+
logger.debug("Hi there!");
39+
40+
Logger rootLogger = (ch.qos.logback.classic.Logger)LoggerFactory.getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME);
41+
42+
logger.debug("This message is logged because DEBUG == DEBUG.");
43+
44+
rootLogger.setLevel(Level.ERROR);
45+
logger.warn("This message is not logged because WARN < ERROR.");
46+
47+
logger.error("This is logged.");
48+
49+
}
50+
51+
@Test
52+
public void givenParameters_ValuesLogged() {
53+
54+
Logger logger = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(LogbackTests.class);
55+
56+
String message = "This is a String";
57+
Integer zero = 0;
58+
59+
try {
60+
logger.debug("Logging message: {}", message);
61+
logger.debug("Going to divide {} by {}", 42, zero);
62+
int result = 42 / zero;
63+
} catch (Exception e) {
64+
logger.error("Error dividing {} by {} ", 42, zero, e);
65+
}
66+
}
67+
68+
@Test
69+
public void givenConfig_MessageFiltered() {
70+
71+
Logger foobar = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger("com.baeldung.foobar");
72+
Logger logger = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger("com.baeldung.logback");
73+
Logger testslogger = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger("com.baeldung.logback.tests");
74+
75+
foobar.debug("This is logged from foobar");
76+
logger.debug("This is not logged from logger");
77+
logger.info("This is logged from logger");
78+
testslogger.info("This is not logged from tests");
79+
testslogger.warn("This is logged from tests");
80+
81+
82+
}
83+
84+
85+
86+
87+
88+
89+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<configuration debug="true">
2+
3+
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
4+
<!-- encoders are assigned the type
5+
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
6+
<encoder>
7+
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
8+
</encoder>
9+
</appender>
10+
11+
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
12+
<file>tests.log</file>
13+
<append>true</append>
14+
<!-- set immediateFlush to false for much higher logging throughput -->
15+
<immediateFlush>true</immediateFlush>
16+
<!-- encoders are assigned the type
17+
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
18+
<encoder>
19+
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
20+
</encoder>
21+
</appender>
22+
23+
24+
<root level="debug">
25+
<appender-ref ref="STDOUT" />
26+
</root>
27+
<logger name="com.baeldung.logback" level="INFO" />
28+
<logger name="com.baeldung.logback.tests" level="WARN">
29+
<appender-ref ref="FILE" />
30+
</logger>
31+
32+
</configuration>

0 commit comments

Comments
 (0)