BAEL-1710 - A Guide to Logback (#4178)
This commit is contained in:
parent
05b7e933bd
commit
fd76b01251
|
@ -5,3 +5,4 @@
|
||||||
|
|
||||||
- [Creating a Custom Logback Appender](http://www.baeldung.com/custom-logback-appender)
|
- [Creating a Custom Logback Appender](http://www.baeldung.com/custom-logback-appender)
|
||||||
- [Get Log Output in JSON Format](http://www.baeldung.com/java-log-json-output)
|
- [Get Log Output in JSON Format](http://www.baeldung.com/java-log-json-output)
|
||||||
|
- [A Guide To Logback](http://www.baeldung.com/a-guide-to-logback)
|
||||||
|
|
|
@ -0,0 +1,89 @@
|
||||||
|
package com.baeldung.logback;
|
||||||
|
|
||||||
|
import ch.qos.logback.classic.Level;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import ch.qos.logback.classic.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
public class LogbackTests {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenLogHierarchy_MessagesFiltered() {
|
||||||
|
|
||||||
|
ch.qos.logback.classic.Logger parentLogger =
|
||||||
|
(ch.qos.logback.classic.Logger) LoggerFactory.getLogger("com.baeldung.logback");
|
||||||
|
|
||||||
|
parentLogger.setLevel(Level.INFO);
|
||||||
|
|
||||||
|
Logger childlogger = (ch.qos.logback.classic.Logger)LoggerFactory.getLogger("com.baeldung.logback.tests");
|
||||||
|
|
||||||
|
parentLogger.warn("This message is logged because WARN > INFO.");
|
||||||
|
|
||||||
|
// This request is disabled, because DEBUG < INFO.
|
||||||
|
parentLogger.debug("This message is not logged because DEBUG < INFO.");
|
||||||
|
|
||||||
|
childlogger.info("INFO == INFO");
|
||||||
|
|
||||||
|
childlogger.debug("DEBUG < INFO");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenRootLevel_MessagesFiltered() {
|
||||||
|
|
||||||
|
ch.qos.logback.classic.Logger logger =
|
||||||
|
(ch.qos.logback.classic.Logger) LoggerFactory.getLogger("com.baeldung.logback");
|
||||||
|
|
||||||
|
logger.debug("Hi there!");
|
||||||
|
|
||||||
|
Logger rootLogger = (ch.qos.logback.classic.Logger)LoggerFactory.getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME);
|
||||||
|
|
||||||
|
logger.debug("This message is logged because DEBUG == DEBUG.");
|
||||||
|
|
||||||
|
rootLogger.setLevel(Level.ERROR);
|
||||||
|
logger.warn("This message is not logged because WARN < ERROR.");
|
||||||
|
|
||||||
|
logger.error("This is logged.");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenParameters_ValuesLogged() {
|
||||||
|
|
||||||
|
Logger logger = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(LogbackTests.class);
|
||||||
|
|
||||||
|
String message = "This is a String";
|
||||||
|
Integer zero = 0;
|
||||||
|
|
||||||
|
try {
|
||||||
|
logger.debug("Logging message: {}", message);
|
||||||
|
logger.debug("Going to divide {} by {}", 42, zero);
|
||||||
|
int result = 42 / zero;
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error("Error dividing {} by {} ", 42, zero, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenConfig_MessageFiltered() {
|
||||||
|
|
||||||
|
Logger foobar = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger("com.baeldung.foobar");
|
||||||
|
Logger logger = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger("com.baeldung.logback");
|
||||||
|
Logger testslogger = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger("com.baeldung.logback.tests");
|
||||||
|
|
||||||
|
foobar.debug("This is logged from foobar");
|
||||||
|
logger.debug("This is not logged from logger");
|
||||||
|
logger.info("This is logged from logger");
|
||||||
|
testslogger.info("This is not logged from tests");
|
||||||
|
testslogger.warn("This is logged from tests");
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
<configuration debug="true">
|
||||||
|
|
||||||
|
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
|
<!-- encoders are assigned the type
|
||||||
|
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
|
||||||
|
<encoder>
|
||||||
|
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
|
||||||
|
<file>tests.log</file>
|
||||||
|
<append>true</append>
|
||||||
|
<!-- set immediateFlush to false for much higher logging throughput -->
|
||||||
|
<immediateFlush>true</immediateFlush>
|
||||||
|
<!-- encoders are assigned the type
|
||||||
|
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
|
||||||
|
<encoder>
|
||||||
|
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
|
||||||
|
<root level="debug">
|
||||||
|
<appender-ref ref="STDOUT" />
|
||||||
|
</root>
|
||||||
|
<logger name="com.baeldung.logback" level="INFO" />
|
||||||
|
<logger name="com.baeldung.logback.tests" level="WARN">
|
||||||
|
<appender-ref ref="FILE" />
|
||||||
|
</logger>
|
||||||
|
|
||||||
|
</configuration>
|
Loading…
Reference in New Issue