Logback
Logback
基于slf4j的日志规范实现的框架,性能要比之前使用的log4j好。
主要分为三个技术模块:
- logback-core: 为其他两个模块提供基础代码
- logback-classic: 完整实现了slf4j API的模块
- logback-access: 模块与Tomcat和Jetty等Servlet容器集成,以提供HTTP访问日志功能
快速入门
- 导入Logback的相关jar包
- 编写Logback配置文件
- 在代码中获取日志的对象
- 按照级别设置记录日志信息
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Scanner;
public class LogDemo {
// 获取日志对象
private static final Logger LOGGER = LoggerFactory.getLogger(LogDemo.class);
public static void main(String[] args) {
// 打日志----类似于写输出语句
Scanner sc = new Scanner(System.in);
System.out.println("请输入您的姓名:");
String name = sc.nextLine();
// System.out.println(name);
LOGGER.info("用户输出录入姓名为:" + name);
System.out.println("请输入您的年龄:");
String age = sc.nextLine();
try {
int ageInt = Integer.parseInt(age);
LOGGER.info("用户输入的年龄格式正确" + age);
} catch (NumberFormatException e) {
LOGGER.info("用户输入的年龄格式错误" + age);
}
}
}
如果系统上线后只想纪录一些错误的日志信息或者不想记录日志
- 可以通过设置日志的输出级别来控制哪些日志信息输出或者不输出
日志的6种级别
- 级别程度依次是:
TRACE<DEBUG<INFO<WARN<ERROR<FATAL
- 默认级别是debug(忽略大小)
- 作用:将开发中不同的日志信息进行分类,只输出大于等于该级别的日志信息
- ALL和OFF分别是打开全部日志信息及关闭全部日志信息
配置文件
<?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>C:/code/itheima-data.log</file>
<!--指定日志文件拆分和压缩规则-->
<rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--通过指定压缩文件名称,来确定分割文件方式-->
<fileNamePattern>C:/code/itheima-data2-%d{yyyy-MMdd}.log%i.gz</fileNamePattern>
<!--文件拆分大小-->
<maxFileSize>1MB</maxFileSize>
</rollingPolicy>
</appender>
<!--
level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF
, 默认debug
<root>可以包含零个或多个<appender-ref>元素,标识这个输出位置将会被本日志级别控制。
-->
<root level="DEBUG">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE" />
</root>
</configuration>