一. 日志是什么:
- 输出语句的弊端:它只能在控制台展示,它不能记录在本地文件当中。
- 日志可以将程序运行过程中的信息直接记录在文件里面,做永久存储。
- 性能较好,简单来说就是运行的速度会比较快。
二. 日志技术体系、Logback概述
-
To:2 For:4
三. Logback快速入门
package com.logback.logger;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Date;
import java.util.Scanner;
public class LoggerDemo {
/**
获取日志对象
*/
public static final Logger LOGGER = (Logger) LoggerFactory.getLogger("LoggerDemo.class");
public static void main(String[] args) {
// 就可以记录用户的操作日志
// 登录操作
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名:");
String username = sc.nextLine();
System.out.println("请输入密码:");
String password = sc.nextLine();
if("zhangsan".equals(username) && "admin".equals(password)){
System.out.println("登录成功");
LOGGER.info("用户于" + new Date().toLocaleString() + "登录成功! 用户名为:" + username + " 密码:" + password);
}else{
System.out.println("登录失败");
LOGGER.info("用户于" + new Date().toLocaleString() + "登录失败! 用户名为:" + username + " 密码:" + username );
}
}
}
四. Logback配置详解-输出位置、格式位置
<?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="ALL">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE" />
</root>
</configuration>
- ALL表示所有的级别我们都打印
- OFF表示所有的级别全都不打印
为什么要有日志级别?
五. Logback配置详解-日志级别设置
-
作用:用于控制系统中哪些日志级别是可以输出的,只输出级别不低于设定级别 的日志信息