《从零开始的java从入门到入土的学习生活——JavaWeb后端篇》Chapter14——JavaWeb后端篇学习记录——日志技术

一、日志技术

1、日志

程序中的日志,是用来记录应用程序的运行信息、状态信息、错误信息的。

2、日志框架

|-------------|-----------------------------------------------------------------------------|
| JUL | 这是JavaSE平台提供的官方日志框架,也被称为JUL。配置相对简单,但不够灵活,性能较差。 |
| Log4j | 一个流行的日志框架,提供了灵活的配置选项,支持多种输出目标。 |
| Logback | 基于Log4j升级而来,提供了更多的功能和配置选项,性能由于Log4j。 |
| Slf4j | (Simple Logging Facade for Java)简单日志门面,提供了一套日志操作的标准接口及抽象类,允许应用程序使用不同的底层日志框架 |

3、Logback的使用

①引入依赖

XML 复制代码
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.4.11</version>
</dependency>

②引入配置文件

可以通过ai生成:

XML 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 控制台输出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度  %logger{50}: 最长50个字符(超出.切割)  %msg:日志消息,%n是换行符 -->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>
    
    <!-- 日志输出级别 -->
    <root level="info">
        <appender-ref ref="STDOUT" />
    </root>

</configuration>

③记录日志

java 复制代码
    //定义日志记录对象
    private static final Logger log = LoggerFactory.getLogger(LogTest.class);

    @Test
    public void testLog() {
        log.debug("开始计算");
        int sum=0;
        int[] nums={1,5,3,2,1,4,5,4,6,7,4,34,2,23};
        for (int i = 0; i < nums.length; i++) {
            sum+=nums[i];
        }
        log.info("计算结果为:"+sum);
        log.debug("计算结束");
    }

lombok中提供的@Slf4j注解,可以简化定义日志记录器这步操作。添加了该注解,就相当于在类中定义了日志记录器,就下面这句代码:

private static Logger log = LoggerFactory. getLogger(Xxx. class);

启动测试,结果为:

④增加配置文件

常用的两种输出日志的位置:控制台、系统文件。

若需要输出日志到控制台,添加如下配置:

XML 复制代码
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d 表示日期,%thread 表示线程名,%-5level表示级别从左显示5个字符宽度,%msg表示日志消息,%n表示换行符 -->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}-%msg%n</pattern>
    </encoder>
</appender>

若需要输出到文件,添加下面的配置:

XML 复制代码
<!-- 按照每天生成日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
        <!-- 日志文件输出的文件名, %i表示序号 -->
        <FileNamePattern>D:/tlias-%d{yyyy-MM-dd}-%i.log</FileNamePattern>
        <!-- 最多保留的历史日志文件数量 -->
        <MaxHistory>30</MaxHistory>
        <!-- 最大文件大小,超过这个大小会触发滚动到新文件,默认为 10MB -->
        <maxFileSize>10MB</maxFileSize>
    </rollingPolicy>

    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <!--格式化输出:%d 表示日期,%thread 表示线程名,%-5level表示级别从左显示5个字符宽度,%msg表示日志消息,%n表示换行符 -->
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}-%msg%n</pattern>
    </encoder>
</appender>

日志开关------(开启日志(ALL),取消日志(OFF))

XML 复制代码
<!-- 日志输出级别 -->
<root level="ALL">
    <!--输出到控制台-->
    <appender-ref ref="STDOUT" />
    <!--输出到文件-->
    <appender-ref ref="FILE" />
</root>

4、日志级别

日志级别指的是日志信息的类型,日志都会分级别,使用方法:log.日志级别(".......")

|-----------|-----------------------------------------|
| 日志级别 | 说明 |
| trace | 迫踪,记录程序运行轨迹【使用很少】 |
| debug | 调试,记录程序调试过程中的信息,实际应用中一般将其视为最低级别]【使用较多】 |
| info | 记录一般信息,描述程序运行的关键事件,如:网络连接、操作【使用较多】 |
| warn | 记录潜在有害的情况【使用较多】 |
| error | 错误信息【使用较多】 |

相关推荐
盐焗西兰花1 天前
鸿蒙学习实战之路-Share Kit系列(7/17)-自定义分享面板操作区
linux·学习·harmonyos
香水5只用六神1 天前
【RTOS快速入门】07_同步互斥与通信概述
单片机·嵌入式硬件·学习·操作系统·freertos·rtos·嵌入式软件
庭前云落1 天前
从零开始的Hardhat学习 1| Hardhat 的基本使用、部署智能合约
学习·智能合约
飞Link1 天前
深度捕捉时序本质:TSTD 异常检测之表示学习(Representation-based)全解析
学习·算法·数据挖掘·回归
沐墨专攻技术1 天前
一、项目初始化
笔记·学习
闫记康1 天前
scp工具
linux·运维·服务器·学习·ssh·github
我命由我123451 天前
Git 问题:Author identity unknown*** Please tell me who you are.
java·服务器·git·后端·学习·java-ee·学习方法
G果1 天前
LIO-SAM 学习总结
学习·slam·点云·ros2·导航·nav2·liosam
HalvmånEver1 天前
Linux:初始网络(上)
linux·网络·学习·通信
王夏奇1 天前
python-pytest学习
python·学习·pytest