
本篇主要讲述了Java日志的基础知识。
概述
程序中的日志可以用来记录程序在运行的时候点点滴滴,并可以进行永久存储。
日志与输出语句的区别
| 输出语句 | 日志技术 | |
|---|---|---|
| 取消日志 | 需要修改代码,灵活性比较差 | 不需要修改代码,灵活性比较好 |
| 输出位置 | 只能是控制台 | 可以将日志信息写入到文件或者数据库中 |
| 多线程 | 和业务代码处于一个线程中 | 多线程方式记录日志,不影响业务代码的性能 |
日志体系结构

logback
通过使用logback,我们可以控制日志信息输送的目的地是控制台、文件等位置。
我们也可以控制每一条日志的输出格式。
通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。
最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
// 测试类
public class Test {
// 获取日志的对象
private static final Logger LOGGER = LoggerFactory.getLogger(Test01.class);
public static void main(String[] args) {
// 1.导入jar包
//2.编写配置文件
//3.在代码中获取日志的对象
//4.按照日志级别设置日志信息
LOGGER.debug("debug级别的日志");
LOGGER.info("info级别的日志");
LOGGER.warn("warn级别的日志");
LOGGER.error("error级别的日志");
}
}
logback.xml
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<target>System.outtarget>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %c [%thread] : %msg%npattern>
encoder>
appender>
<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%npattern>
<charset>utf-8charset>
encoder>
<file>C:/code/itheima-data.logfile>
<rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>C:/code/itheima-data2-%d{yyyy-MMdd}.log%i.gzfileNamePattern>
<maxFileSize>1MBmaxFileSize>
rollingPolicy>
appender>
<root level="DEBUG">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE" />
root>
configuration>
LogDemo.java
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Scanner;
public class {
//获取日志对象
private static final Logger LOGGER = LoggerFactory.getLogger(LogDemo.class);
public static void main(String[] args) {
//打日志 --- 类似于写输出语句
Scanner sc = new Scanner(System.in);
System.out.println("请输入您的姓名");
LOGGER.debug("用户开始输入信息了");
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);
}
}
}