Logback是用来打印日志的,他可以同时打印在多个位置,不一定是控制台上。目前log back框架包括三个模块:logback-core,logback-classic和logback-access.
logback-core模块为其他两个模块奠定了基础,相当于入口。logback-classic模块进行日志处理的核心位置。logback-access模块与Tomcat和Jetty等Servlet容器集成,以提供HTTP访问日志功能。
使用log back框架步骤:
①建立lib目录 ,导入logback 的jar包,并添加到项目依赖库中。
注: 如果是maven管理项目,可以直接在pom.xml中配置,然后直接就成为依赖项。
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.11</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.11</version>
</dependency>
②将Logback的核心配置文件logback.xml直接拷贝到src目录中或者src对应resource资源包中,该配置文件是用于日志打印的位置等等。(注意:如果用maven管理项目,必须要放在resource资源包中否则无法识别)
核心配置文件:
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<!-- CONSOLE:表示当前的日志信息输出到控制台 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!-- 输出流对象 默认 System.out 可以改为 System.err(会在输出台输入红色信息) -->
<target>System.out</target>
<encoder>
<!-- 格式化输出:%d表示日期、%thread表示线程名、%-5level:级别从左到右显示5个字符宽度、%msg:日志消息、%n是换行符 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} {%-5level} %c [%thread] : %msg%n</pattern>
</encoder>
</appender>
<!-- File 让输出的方向为文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
<charset>utf-8</charset>
</encoder>
<!-- 日志输出路径 -->
<file>E:/code/javase.log</file>
<!-- 指定日志文件拆分和压缩规则 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 通过指定压缩文件名称,来确定分割文件方式 -->
<fileNamePattern>E:/code/javase-%d{yyyy-MMdd}.log%i.gz</fileNamePattern>
<!-- 文件拆分大小 -->
<maxFileSize>1MB</maxFileSize>
</rollingPolicy>
</appender>
<!--
level:设置打印级别,默认debug;大小写谁便(选择前面的还可以出现后面的,反之不行):
all < trace < debug < info < warn < error < off
<root>可以包含零个或多个<appender-ref>元素,标识这个输出位置将会被本日志级别控制
-->
<root level="All">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
</configuration>
③在代码中获取日志的对象。该程序是获得Test类的日志对象。
public class Test {
//创建Logback的日志对象,代表日志技术
public static final Logger LOGGER=LoggerFactory.getLogger("Test.class");
public static void main(String[] args) {
try{
LOGGER.debug("main方法开始执行......");
LOGGER.info("我开始记录第二行日志,我要开始做除法......");//都可打印日志,级别不同
int a=10;
int b=0;
LOGGER.debug("a="+a);
LOGGER.debug("b="+b);
System.out.println(a/b);
}catch (Exception e){
e.printStackTrace();
LOGGER.error("功能异常"+e);
}
}
}
打印在控制台上:
打印在对应文件中: