Summary
1) Logback is not an independent implementation of Logging.
It depends on SLF4J.
1. Logback configuration work flow
2. A simple example of using Logback
1) pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>edu.xmu.logging</groupId> <artifactId>Logging-JDKLogging</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>Logging-JDKLogging</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.2</version> <scope>test</scope> </dependency> <!-- Dependency for Logback --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.0.13</version> </dependency> </dependencies> </project>
This will import logback-classic.jar, logback-core.jar and slf4j-api.jar automatically.
2) logback.xml in classpath <Pay attention to filter tag as it's not the same with JUL/Log4j>
<?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>WARN</level> </filter> <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"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>ERROR</level> </filter> <file>myApp.log</file> <encoder> <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n </pattern> </encoder> <append>false</append> </appender> <root level="DEBUG"> <appender-ref ref="FILE" /> <appender-ref ref="STDOUT" /> </root> </configuration>
3) Test case
package edu.xmu.logging.Logging_JDKLogging; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class AppTest { private static Logger logger = LoggerFactory.getLogger(AppTest.class); @Test public void loggerTest() { logger.trace("[TRACE] Trace Logging"); logger.debug("[DEBUG] Debug Logging"); logger.info("[INFO]Info Logging"); logger.warn("[WARN]Warn Logging"); logger.error("[ERROR]Error Logging"); } }
3. We can config Logger & Appender & Encoder in config file or in program.
But it's recommonded we config in config file as config in program will cause the code to dependent on the relization(Logback/Log4j/JUL).
Reference Links:
1) http://logback.qos.ch/manual/ Logback user manual.