SpringBoot中日志的使用

发布时间:2024年01月05日


友情提醒:

先看文章目录,大致了解文章知识点结构,点击文章目录可直接跳转到文章指定位置。有用记得关注

第一章、快速了解日志

1.1)相关概念介绍

Java中日志的含义
日志记录是指记录应用程序运行时状态、事件和信息的过程。日志可以包括各种级别的信息,例如普通信息、警告、错误。通过记录日志,开发人员和系统管理员可以了解应用程序的运行情况,追踪问题,以及监控系统的状态。
日志存放位置
日志通常被输出到文件、控制台或数据库等存储位置,方便后续分析和审查。

1.2)日志级别

开发中常用的日志级别:DEBUG,INFO,WARN,ERROR。

①TRACE: 用于输出非常详细的日志信息,通常用于跟踪代码的执行流程。

②DEBUG: 用于输出调试信息,通常用于在开发和调试阶段输出详细的调试日志。

③INFO: 用于输出一般信息,通常用于在应用程序正常运行时输出重要的状态信息。

④WARN: 用于输出警告信息,通常用于输出一些可能会导致问题的情况,但不会影响应用程序的正常运行。

⑤ERROR: 用于输出错误信息,通常用于输出一些严重的错误情况,可能会影响应用程序的正常运行。

⑥OFF: 用于关闭所有日志输出,通常用于禁用日志记录。

1.3)学习过程中的疑问

这里是我学习过程中产生的几个疑问:
①日志有哪些级别
②springboot中怎么使用日志
③怎么查看日志信息
④怎么通过日志信息排错
⑤怎么输出日志到具体文件

第二章、日志的具体使用

2.1)SpringBoot怎么使用日志

①Spring Boot默认集成了日志框架

只需要在项目的pom.xml文件中添加spring-boot-starter-web依赖(其实默认就有也不用我们添加),即可使用日志功能。Spring Boot默认使用SLF4J作为日志门面,并提供了对Logback等日志记录框架的集成支持。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
②配置Spring Boot应用程序以使用xml日志配置文件

在application.properties或application.yaml文件中配置,
这里在yaml文件中配置以下命令:在同级目录中查找logback.xml文件

loggong:
	config:classpath:logback.xml
③使用日志对象并输出日志

①创建日志对象
②使用日志对象的info()等方法输出日志

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

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

    public void doSomething() {
    //输出日志
        logger.debug("这是一个调试信息。");
        logger.info("这是一个信息性消息。");
        logger.warn("这是一个警告消息。");
        logger.error("这是一个错误消息。");
    }
}

2.2)使用Lombok的@Slf4j注解

①引入Lombok依赖
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<optional>true</optional>
</dependency>
②安装Lombok插件

setting–>plugins–>右侧marketplace 搜索Lombok–>
点击install–>安装完了点击restartIDE
在这里插入图片描述

③在类的顶部添加注解

就可以直接使用log对象进行日志记录,无需手动创建Logger实例。

@Slf4j 
public class Example { 
public void doSomething() { 
log.debug("Debug message"); 
log.info("Info message"); 
log.warn("Warning message"); 
log.error("Error message"); } }

第三章、配置文件详解

3.1)日志配置文件简单示例:输出到控制台

示例:

<!--   -->
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
        <!--输出日志的时间显示格式  -->
            <pattern>%d{yyyy-MM-dd-HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        <!-- 字符编码  -->
            <charset>UTF-8</charset>
        </encoder>
    </appender>
    
    <root level="debug">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>
①标签含义介绍:<appender>

<appender>标签,名称是STUDOUT,表示日志将被输出到控制台。它的类型是ch.qos.logback.core.ConsoleAppender。配置文件的最后<appender-ref>标签将STDOUT输出目的地引用到了根日志记录器。
Logback配置文件中的几种常见appender类型
ConsoleAppender:将日志输出到控制台。
FileAppender:将日志输出到文件。
RollingFileAppender:按照一定的规则将日志输出到滚动的文件中,例如按文件大小或日期进行滚动。
SocketAppender:将日志通过网络套接字发送到远程服务器。
SMTPAppender:通过电子邮件发送日志。
DBAppender:将日志输出到数据库。

②标签含义介绍:<encoder>

<encoder>标签定义了一个格式编码,其中:
%d表示时间戳,
%thread表示线程名,
%-5level表示日志级别(左对齐,宽度为5),
%logger{36}表示日志记录器名称(最大长度为36),
%msg表示日志消息。
这个格式编码将会应用于STDOUT的控制台输出中。

③标签含义介绍:</root>和<appender-ref>

使用<logger>元素为特定的包或类设置日志级别。例如,要将特定包下的日志级别设置为ERROR:

<logger name="com.example.package" level="ERROR" />

使用<root>元素设置根日志级别。根日志级别被设置为INFO,这意味着只有INFO级别及以上的日志会被输出。<appender-ref>标签将STDOUT输出目的地引用到了根日志记录器。例如:

<root level="INFO">
    <appender-ref ref="STDOUT" />
</root>

3.2)配置文件示例:不同的appender输出

示例为:把DEBUG级别的日志输出到控制台,把ERROR级别的输出到文件。

<configuration>
<!-- 属性标签,其他地方可以引用,当然这里没有引用只是作为示例-->
<property name="log.path" value="/var/log/app" />
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd-HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>${log.path}/app.log</file>
        <encoder>
            <pattern>%d{yyyy-MM-dd-HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="com.example" level="DEBUG">
        <appender-ref ref="STDOUT" />
    </logger>

    <logger name="com.example" level="ERROR">
        <appender-ref ref="FILE" />
    </logger>

    <root level="INFO">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>
①标签含义介绍:<property>

标签定义了一个名为log.path的属性,它的值是/var/log/app。然后在标签中使用${log.path}来引用这个属性,从而动态地设置日志文件的路径。

<property name="log.path" value="/var/log/myapp" />
②标签含义介绍:<file>

file标签用于指定日志输出的文件路径。通过标签,你可以设置日志输出的文件路径,然后这里还引用了前面的property属性。

③标签含义介绍:<logger>

使用<logger>元素为特定的包或类设置日志级别。例如,要将特定包下的日志级别设置为ERROR:

<logger name="com.example.package" level="ERROR" />

3.3)配置文件示例:日志信息存入数据库

①创建数据库表

Logback需要以下三个表来存储日志信息:logging_event、logging_event_property和logging_event_exception。这些表需要在使用DBAppender之前创建。表字段信息如下

BEGIN;
DROP TABLE IF EXISTS logging_event_property;
DROP TABLE IF EXISTS logging_event_exception;
DROP TABLE IF EXISTS logging_event;
COMMIT;

BEGIN;
CREATE TABLE logging_event 
  (
    timestmp         BIGINT NOT NULL,
    formatted_message  TEXT NOT NULL,
    logger_name       VARCHAR(254) NOT NULL,
    level_string      VARCHAR(254) NOT NULL,
    thread_name       VARCHAR(254),
    reference_flag    SMALLINT,
    arg0              VARCHAR(254),
    arg1              VARCHAR(254),
    arg2              VARCHAR(254),
    arg3              VARCHAR(254),
    caller_filename   VARCHAR(254) NOT NULL,
    caller_class      VARCHAR(254) NOT NULL,
    caller_method     VARCHAR(254) NOT NULL,
    caller_line       CHAR(4) NOT NULL,
    event_id          BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY
  );
COMMIT;

BEGIN;
CREATE TABLE logging_event_property
  (
    event_id          BIGINT NOT NULL,
    mapped_key        VARCHAR(254) NOT NULL,
    mapped_value      TEXT,
    PRIMARY KEY(event_id, mapped_key),
    FOREIGN KEY (event_id) REFERENCES logging_event(event_id)
  );
COMMIT;

BEGIN;
CREATE TABLE logging_event_exception
  (
    event_id         BIGINT NOT NULL,
    i                SMALLINT NOT NULL,
    trace_line       VARCHAR(254) NOT NULL,
    PRIMARY KEY(event_id, i),
    FOREIGN KEY (event_id) REFERENCES logging_event(event_id)
  );
COMMIT;
②配置logback.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="db" class="ch.qos.logback.classic.db.DBAppender">
        <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
            <driverClass>org.postgresql.Driver</driverClass>
            <url>jdbc:postgresql://localhost:5432/simple</url>
            <user>postgres</user>
            <password>root</password>
        </connectionSource>
    </appender>

    <root level="INFO">
        <appender-ref ref="db" />
    </root>
</configuration>

3.4)查看日志文件并排错

查看日志文件
①日志服务器:
专门的日志服务器有ui界面,直接搜索。
②直接打开文件查看
③日志在数据库里,查询数据库

通过查找日志排错
具体的查找方式可以:在日志文件中搜索关键字,如异常信息、错误代码或特定操作的日志记录。
①通过用户账号检索,
②通过发生错误的时间检索,
③通过错误信息检索

文章来源:https://blog.csdn.net/baomingshu/article/details/135216473
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。