vue+spring boot从零开发BBS项目---后端篇(二)

后端技术栈之日志框架logback

  • 框架介绍
  • 框架引入
  • 框架配置
  • 框架使用

框架介绍

Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch。它当前分为下面下个模块:

  • logback-core:其它两个模块的基础模块
  • logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging
  • logback-access:访问模块与Servlet容器集成提供通过Http来访问日志的功能

框架引入

spring boot本身已经集成了logback框架,直接引入即可。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-logging</artifactId>
</dependency>

框架配置

在src/main/resources目录下添加logback.xml文件,即可自定义日志配置。

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">
    <!--定义日志文件的存储地址,后面通过${LOG_HOME}获取,勿在 LogBack 的配置中使用相对路径,存在疑问? 我这里使用相对地址就是当前目录下 -->
    <property name="LOG_HOME" value="logs" />
    <!-- 可选:定义文件名称 -->
    <property name="PROJECT_NAME" value="logproject" />
    <!-- appender 必选节点。作用:日志输出目的地, 配置后由 root 标签进行选择控制是否输出到目的地 -->
    <!-- 控制台输出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- encoder 日志格式化 -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- appender 必选节点。作用:日志输出目的地, 配置后由 root 标签进行选择控制是否输出到目的地 -->
    <appender name="FILE"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- rollingPolicy 日志生成策略,不同的策略不同的类。 特别注意:尺寸切割和时间切割的日志类SizeAndTimeBasedRollingPolicy -->
        <rollingPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--日志文件输出的文件名 -->  <!-- 按照每天生成日志文件 -->
            <FileNamePattern>${LOG_HOME}/${PROJECT_NAME}.%d{yyyy-MM-dd}.%i.log
            </FileNamePattern>
            <!--日志文件保留天数 -->
            <MaxHistory>15</MaxHistory>
            <!-- 每个日志文件大小,单位 kb、MB 等,这个功能控制不稳定,因为打印日志速度太快,每个文件会变大。 -->
            <maxFileSize>100kb</maxFileSize>
            <!-- 日志总体积大小,超过了就会删除前面的旧日志文件腾出空间,可以边打印边看结果 -->
            <totalSizeCap>10MB</totalSizeCap>
        </rollingPolicy>
        <!-- encoder 日志格式化 -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
        <!-- 日志文件最大的大小, 超过了就不打印日志了,超级坑爹,千万别用。 -->
        <!-- <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize> </triggeringPolicy> -->
    </appender>

    <!-- root必选节点:1.基础的日志输出级别配置,2.控制那些appender输出 -->
    <root level="INFO">
        <!-- 注意:全部注释了,那么不输出日志了。 但是不影响 logger 标签的配置输出。 -->
         <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root>
    <!-- logger可选节点:单独配置某个"包"或者"某个类"下面的日志等级。 不受 root 影响-->
    <logger name="com.frxs.logproject.service">
        <level value="debug" />
        <!-- appender-ref 可选节点。作用:指定日志输出某个appender,如果没有指定,则不输出。 -->
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </logger>
</configuration>

日志使用

package com.suromo.springdemo;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringdemoApplication {
    private static final Logger logger = LoggerFactory.getLogger(SpringdemoApplication.class);
    public static void main(String[] args) {
        SpringApplication.run(SpringdemoApplication.class, args);
        logger.error("Hello, this is a line of log message logged by Logback hahahah");
    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容