Java 日志技术、Logback日志框架、日志级别

一. 日志

  1. 日志:程序中的日志,通常就是一个文件,里面记录的是程序运行过程中的各种信息。

二. 日志技术

  1. 日志技术:可以将系统执行的信息,方便的记录到指定的位置(控制台、文件中、数据库中)

  2. 可以随时以开关的形式控制日志的启停,无需侵入到源代码中去修改。

三. 日志技术的体系

  1. 日志框架:

① JUL(Java.util.logging)

② Log4j

③ Logback

④ 其他实现

  1. 日志接口:设计日志框架的一套标准,日志框架需要实现这些接口

① Commons Logging(JCL) --->JUL(Java.util.logging)

② Simple Logging Facade for Java(SLF4J)---> Log4j、 Logback

四. Logback日志框架

1 . Logback官网:https://logback.qos.ch/index.html

  1. logback日志框架有以下几个模块

① logback-core :基础模块,是其他两个模块依赖的基础(必须有)

② logback-classic:完整实现了slf4jAPI的模块(必须有)

③ logback-access:与Servlet容器集成, 如Tomcat和Jetty,提供HTTP访问日志 功能(可选)

  1. 想要使用Logback日志框架,至少需要在项目中整合三个模块:slf4j-api:日志接口; logback-core :基础模块;logback-classic功能模块。

五. 使用Logback日志框架

1. 下载

slf4j-api:

logback-core:Central Repository: ch/qos/logback/logback-core/1.2.3

logback-classic:Central Repository: ch/qos/logback/logback-classic/1.2.3

2. 导入Logback框架到项目中

3. 将Logback框架的核心配置文件logback.xml直接拷贝到src目录下(必须是src下)

可以修改日志记录路径:<!--日志输出路径--> <file>D:\JavaCode\log\wyyzs.log\</file>

java 复制代码
<?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:/仓库/log/gst-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>

4. 创建Logger对象

创建 Logback框架提供的Logger对象,然后用Logger对象调用其提供的方法就可以记录系统的日志信息。

java 复制代码
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Test1_Logger {
    //创建Looger日志对象
    public static final Logger logger = LoggerFactory.getLogger(Test1_Logger.class);

    public static void main(String[] args) {

        try{
            logger.info("开始执行test方法");
            test(8, 2);
            test(3,0);
            logger.info("执行test方法结束");
        }catch (Exception e){
            logger.error("test方法执行失败" + e.getMessage());
        }

    }

    public static void test(int a, int b) {
        logger.debug("a=" + a + ", b=" + b);
        int c = a / b;
        System.out.println(c);
        logger.info("test方法结果是" + c);
    }
}

六. 核心配置文件logback.xml

  1. logback.xml对Logback日志框架进行控制的。

  2. 通常可以设置2个输出日志的位置:一个是控制台、一个是系统文件中

  1. 开启日志(ALL),取消日志(OFF)

七. 日志级别

  1. 日志级别指的是日志信息的类型,日志都会分级别,常见的日志级别如下(优先级依次升高)

|-------|--------------------------------|
| 日志级别 | 说明 |
| trace | 追踪,指明程序的运行轨迹 |
| debug | 调试,实际应用中一般将其作为最低级别,trace很少使用 |
| info | 输出重要的运行信息,数据连接、网络连接、IO操作等,使用较多 |
| warn | 警告信息,可能会发生问题,使用较多 |
| error | 错误信息,使用较多 |

  1. 只有日志的级别大于或等于核心配置文件配置的日志级别,才会被记录,否则不记录
相关推荐
RainbowSea1 分钟前
11. LangChain4j + Tools(Function Calling)的使用详细说明
java·langchain·ai编程
考虑考虑4 小时前
Jpa使用union all
java·spring boot·后端
用户3721574261354 小时前
Java 实现 Excel 与 TXT 文本高效互转
java
浮游本尊5 小时前
Java学习第22天 - 云原生与容器化
java
渣哥7 小时前
原来 Java 里线程安全集合有这么多种
java
间彧7 小时前
Spring Boot集成Spring Security完整指南
java
间彧8 小时前
Spring Secutiy基本原理及工作流程
java
Java水解9 小时前
JAVA经典面试题附答案(持续更新版)
java·后端·面试
洛小豆11 小时前
在Java中,Integer.parseInt和Integer.valueOf有什么区别
java·后端·面试
前端小张同学11 小时前
服务器上如何搭建jenkins 服务CI/CD😎😎
java·后端