前提: 采用Maven pom.xml构建依赖
一. pom.xml
<dependencies>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
</dependencies>
二. logback.xml
<configuration>
<!-- 负责控制台输出的appender -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- 临界过滤器,此处只接受INFO级别以上的日志输出 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<!-- 定义日志输出的格式 -->
<encoder>
<pattern>
<!-- %d{HH:mm:ss:SSS}: 输出时间, %thread: 输出线程, %-5level: 输出日志级别,
-5表示左对齐,如果level的长度不足5,在右边添加空格; %logger : 输出日志的logger, 可以设置logger的长度,
如%logger{n}; %msg : logger输出的信息; %n : 换行 -->
%d{HH:mm:ss:SSS} [%thread] %-5level %logger - %msg%n
</pattern>
</encoder>
</appender>
<!-- 负责输出错误信息到指定文件的appender -->
<appender name="ERROR_FILE" class="ch.qos.logback.core.FileAppender">
<file>test-error.log</file>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<encoder>
<pattern>
%d{HH:mm:ss:SSS} [%thread] %-5level %logger - %msg%n
</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- 滚动输出日志,根据日期生成对应的日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${catalina.base}/logs/mylog.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志的格式可以是.log, 压缩格式为.log.gz -->
<fileNamePattern>${catalina.base}/logs/mylog.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
<!-- 最大文件保存日期, 30天之前的文件会被清除 -->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>
%d{HH:mm:ss:SSS} [%thread] %-5level %logger - %msg%n
</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- 定义指定路径下的logger的最低日志级别 -->
<logger name="cn.ray.logback" level="INFO"/>
<root level="DEBUG">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE"/>
<appender-ref ref="ERROR_FILE"/>
</root>
</configuration>
三. java code
<pre name="code" class="java">package cn.ray.logback;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LogbackDemo1 {
private static final Logger logger = LoggerFactory
.getLogger(LogbackDemo1.class);
public static void main(String[] args) {
logger.trace("======trace");
logger.debug("======debug");
logger.info("======info");
logger.warn("======warn");
logger.error("======error");
}
}
运行结果:
16:28:18:277 [main] INFO cn.ray.logback.LogbackDemo1 - ======info
16:28:18:281 [main] WARN cn.ray.logback.LogbackDemo1 - ======warn
16:28:18:281 [main] ERROR cn.ray.logback.LogbackDemo1 - ======error