美文网首页日志管理
日志技术-SpringBoot使用日志

日志技术-SpringBoot使用日志

作者: 石头耳东 | 来源:发表于2022-04-07 10:34 被阅读0次

零、本文纲要

  • 一、SpringBoot日志基础
  • 二、SpringBoot自定义日志
    1、自定义logger对象日志级别
    2、指定控制台输出消息格式
    3、指定存放日志文件的具体路径
    4、指定配置
    5、使用SpringBoot解析日志配置(灵活切换环境配置)
    6、将日志切换为log4j2(经常使用)

tips:Ctrl + F快速定位所需内容阅读吧。

一、SpringBoot日志基础

注意:SpringBoot默认的日志门面是slf4j-api,日志实现是logback-core,是SLF4JLogback的组合。

1、快速入门

  • ① 导入依赖
<!--web-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--test-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>
  • ② 编写测试
//声明日志记录器对象
public static final Logger LOGGER = LoggerFactory.getLogger(LogTechSpringbootApplicationTests.class);

@Test
void contextLoads() {
    // 打印日志信息
    LOGGER.error("error");
    LOGGER.warn("warn");
    LOGGER.info("info"); // 默认日志级别
    LOGGER.debug("debug");
    LOGGER.trace("trace");
}
  • ③ 测试桥接器
springboot日志依赖关系图.png
// 使用 log4j2 使用桥接器切换为 slf4j 门面和 logback 日志实现
org.apache.logging.log4j.Logger logger = LogManager.getLogger(LogTechSpringbootApplicationTests.class);
logger.info("log4j2 info");
image.png

二、SpringBoot自定义日志

1、自定义logger对象日志级别

  • ① 编写application.properties
# 指定自定义 logger 对象日志级别
logging.level.com.stone=trace
  • ② 测试
自定义logger对象日志级别.png

2、指定控制台输出消息格式

  • ① 编写application.properties

[%-5level] %d{yyyy-MM-dd HH:mm:ss} %c [%thread]=== %m%n
[左对齐5:日志级别] 日期:年-月-日 时:分:秒 类信息 [线程信息]=== 日志信息 换行

# 指定控制台输出消息格式 :[左对齐5:日志级别] 日期:年-月-日 时:分:秒 类信息 [线程信息]=== 日志信息 换行
logging.pattern.console=[%-5level] %d{yyyy-MM-dd HH:mm:ss} %c [%thread]=== %m%n
  • ② 测试
指定控制台输出消息格式.png

3、指定存放日志文件的具体路径

  • ① 编写application.properties

Ⅰ 指定路径及文件名形式:logging.file.name=/logs/springboot.log;
Ⅱ 指定日志存放路径,使用默认文件名spring.log:logging.file.path=/logs/

# 指定存放日志文件的具体路径
# 指定路径及文件名形式
# logging.file.name=D:/logs/springboot.log
# 指定日志存放路径,使用默认文件名spring.log
logging.file.path=D:/logs/
# 指定日志文件的消息格式
logging.pattern.file=[%-5level] %d{yyyy-MM-dd HH:mm:ss} %c [%thread]=== %m%n
  • ② 测试
指定存放日志文件的具体路径.png

4、指定配置

给类路径下放上每个日志框架自己的配置文件,SpringBoot就不使用默认配置。

日志框架 配置文件
Logback logback-spring.xml , logback.xml
Log4j2 log4j2-spring.xml , log4j2.xml
JUL logging.properties

此处我们已Logback为例,如下:

  • ① 配置logback.xml
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
    <!--
        配置集中管理属性
        可以直接修改属性的value值
        格式:${name}
    -->
    <property name="pattern" value="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n"/>
    <!--
        日志输出格式:
        %-5level
        %d{yyyy-MM-dd HH:mm:ss.SSS}日期
        %c类的完整名称
        %M为method
        %L为行号
        %thread线程名称
        %m或者%msg为信息
        %n换行
    -->

    <!--控制台日志输出的 appender-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <!--控制台输出流对象 默认System.out(黑色) 改为System.err(红色)-->
        <target>System.err</target>
        <!--日志消息格式设置-->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${pattern}</pattern>
        </encoder>
    </appender>

    <!--
        自定义logger对象
        addtivity="false" 自定义logger对象是否继承 rootLogger
    -->
    <logger name="com.stone" level="info" addtivity="false">
        <appender-ref ref="console"/>
    </logger>

</configuration>
  • ② 测试

可以看到,此时控制台输出的日志为红色,日期格式也多了毫秒,符合logback.xml配置,如下:

已Logback为例.png

5、使用SpringBoot解析日志配置(灵活切换环境配置)

非常关键的一点,需要使用logback-spring.xmllog4j2-spring.xml命名的配置文件才能生效。

以下案例我们以logback-spring.xml为例,如下:

  • ① 配置logback-spring.xml

在appender内的encoder属性中我们配置了springProfile相关的内容。

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
    <!--
        配置集中管理属性
        可以直接修改属性的value值
        格式:${name}
    -->
    <property name="pattern" value="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread]---> %m%n"/>
    <!--
        日志输出格式:
        %-5level
        %d{yyyy-MM-dd HH:mm:ss.SSS}日期
        %c类的完整名称
        %M为method
        %L为行号
        %thread线程名称
        %m或者%msg为信息
        %n换行
    -->

    <!--控制台日志输出的 appender-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <!--控制台输出流对象 默认System.out(黑色) 改为System.err(红色)-->
        <target>System.err</target>
        <!--日志消息格式设置-->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <springProfile name="dev">
                <pattern>${pattern}</pattern>
            </springProfile>
            <springProfile name="pro">
                <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread]===> %m%n</pattern>
            </springProfile>
        </encoder>
    </appender>

    <!--
        自定义logger对象
        addtivity="false" 自定义logger对象是否继承 rootLogger
    -->
    <logger name="com.stone" level="info" addtivity="false">
        <appender-ref ref="console"/>
    </logger>

</configuration>
  • ② 配置application.properties
# 指定项目使用的具体环境
spring.profiles.active=dev
  • ③ 测试

如何我们dev的配置[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread]---> %m%n",如下:

使用SpringBoot解析日志配置.png

6、将日志切换为log4j2(经常使用)

  • ① 修改依赖配置pom.xml

Ⅰ 排除 Logback 的日志实现:spring-boot-starter-logging
Ⅱ 使用 log4j2 的日志启动器:spring-boot-starter-log4j2

<!--web-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <!--排除 Logback 的日志实现-->
        <exclusion>
            <artifactId>spring-boot-starter-logging</artifactId>
            <groupId>org.springframework.boot</groupId>
        </exclusion>
    </exclusions>
</dependency>
<!--使用 log4j2 的日志启动器-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<!--test-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>
  • ② 添加log4j2.xml配置文件
<!--
    status="debug" 日志框架本身的输出日志级别
    monitorInterval="5" 自动加载配置文件的间隔时间,不低于 5 秒
 -->
<Configuration status="debug" monitorInterval="5">

    <!-- 日志处理 -->
    <Appenders>
        <!-- 控制台输出 appender -->
        <Console name="Console" target="SYSTEM_ERR">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] [%-5level] %c{36}:%L --- %m%n"/>
        </Console>
    </Appenders>

    <!-- logger 定义 -->
    <Loggers>
        <!-- 使用 rootLogger 配置 日志级别 level="trace" -->
        <Root level="trace">
            <!-- 指定日志使用的处理器 -->
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>
  • ③ 测试
将日志切换为log4j2.png

三、结尾

以上即为SpringBoot使用日志的全部内容,感谢阅读。

相关文章

网友评论

    本文标题:日志技术-SpringBoot使用日志

    本文链接:https://www.haomeiwen.com/subject/zgxjsrtx.html