自定义配置log日志

目录

springboot自带的日志

配置新日志文件

1.新建日志配置文件

2.编写配置文件内容

3.编写自定义log日志——文件打印

修改官方提供的日志格式

1.这里需要使用到 @Slf4j

2.需要在xml日志配置文件中添加占位符——自定义参数 %X{键值}

3.修改格式

附赠:自定义Banner


背景:在做项目的时候想要自定义一些项目中想要输出的日志

springboot自带的日志

当项目中没有配置的时候springboot会默认输出自带的日志格式

配置新日志文件

1.新建日志配置文件

想要自定义log日志文件的话 需要自定义一个log文件——命名很重要

2.编写配置文件内容

编写默认格式的log日志

配置文件的内容---当文件创建出来以后如果里边什么都不写的话 那么当我们启动项目就会出现控制台什么都不打的情况 (Banner除外  Banner也可以设置成自己喜欢的样子——后面给大家介绍)

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<!--配置为空-->
</configuration>

编写默认的日志配置文件——使用默认的相当于没有配置

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<!--    控制台打印——使用springboot默认日志格式-->
<!--  这个文件会默认覆盖springboot的日志  如果里边什么也不写的话 那么启动程序的时候就会什么也不显示   -->
    <!--这个是引入了springboot的默认日志格式-->
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
<!--  引入预设默认样式  引入后打印的就像是最一开始springboot打印的日志了         这个里边的${CONSOLE_LOG_PATTERN} 是ExternalLibraries中springframework.boot:spring-boot:2.6.2中的defaults.xml中CONSOLE_LOG_PATTERN-->
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>${CONSOLE_LOG_CHARSET}</charset>
        </encoder>
    </appender>
<!--    指定日志输出级别  以及启用的APPender 这里使用的我们上边的ConsoleAppender-->
<!--    日志级别:从低到高 TRACE<DEBUG<INFO<WARN<ERROR<FATAL  springboot默认只会打印INFO以上的级别信息-->
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
    </root>
    <!--    控制台打印——使用springboot默认日志格式-->
</configuration>

控制台打印——和没有配置的时候输出的一样

3.编写自定义log日志——文件打印

我们只需要配置一个对应的Appender就可以了

引入用于文件日志记录的RollingFileAppender

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <!--    控制台打印——使用springboot默认日志格式-->
    <!--  这个文件会默认覆盖springboot的日志  如果里边什么也不写的话 那么启动程序的时候就会什么也不显示   -->
    <!--这个是引入了springboot的默认日志格式-->
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <!--  引入预设默认样式  引入后打印的就像是最一开始springboot打印的日志了   这个里边的${CONSOLE_LOG_PATTERN} 是ExternalLibraries中springframework.boot:spring-boot:2.6.2中的defaults.xml中CONSOLE_LOG_PATTERN-->
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>${CONSOLE_LOG_CHARSET}</charset>
            <!--  引入预设默认样式  引入后打印的就像是最一开始springboot打印的日志了   这个里边的${CONSOLE_LOG_PATTERN} 是ExternalLibraries中springframework.boot:spring-boot:2.6.2中的defaults.xml中CONSOLE_LOG_PATTERN-->
        </encoder>
    </appender>

<!--ch.qos.logback.core.rolling.RollingFileAppender用于文件日志记录,并且支持滚动  有滚动策略-->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
<!--                依然使用默认的日志格式-->
            <pattern>${FILE_LOG_PATTERN}</pattern>
            <charset>${FILE_LOG_CHARSET}</charset>
        </encoder>
<!--            自定义滚动策略,防止日志文件无限变大,也就是日志文件写到什么时候为止,重新创建一个新的日志文件-->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--                文件保存位置以及文件命名规则,这里用到了%d{yyyy-MM-dd}表示当前日期,%i表示这一天的第N个日志-->
            <FileNamePattern>log/%d{yyyy-MM-dd}-spring-%i.log</FileNamePattern>
<!--                到期自动清理日志文件-->
            <cleanHistoryOnStart>true</cleanHistoryOnStart>
<!--                最大日志保留时间-->
            <maxHistory>7</maxHistory>
<!--                最大单个日志文件大小-->
            <maxFileSize>10MB</maxFileSize>
        </rollingPolicy>
    </appender>
    <!--ch.qos.logback.core.rolling.RollingFileAppender用于文件日志记录,并且支持滚动  有滚动策略-->

    <!--    指定日志输出级别  以及启用的APPender 这里使用的我们上边的ConsoleAppender-->
    <!--    日志级别:从低到高 TRACE<DEBUG<INFO<WARN<ERROR<FATAL  springboot默认只会打印INFO以上的级别信息-->
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
         <!-- 一定要在这写上  不然不会生效 -->
        <appender-ref ref="FILE"/>
    </root>
    <!--    控制台打印——使用springboot默认日志格式-->
</configuration>

配置完成后当我们启动项目的时候就会发现我们的Appender自动给我们生成了一个存储日志的包和一个日志文件

修改官方提供的日志格式

 官方文档:LOGBack官网

logback内置的日志字段还是比较少的,如果我们需要打印有关业务的更多内容,包括自定义的一些数据,需要借助logback MDC机制 MDC为“Mapped Diagnostic Context”(映射诊断上下文) 即将一些运行时的上下文数据通过logback打印出来,此时我们需要借助rog.sl4j.MDC类

日志的基本字段

例如:我么现在需要记录是哪个用户访问我们网站的日志,只要是此用户访问我网站,都会在日志中携带该用户的id,我们希望每条日志中都携带这样一段信息文本,而官方提供的字段无法实现此功能,这时就需要使用MDC机制:

1.这里需要使用到 @Slf4j

@Slf4j
@Controller
public class MainController{

	@RequestMapping("/login")
	public String login(){
		//这里使用Session代替id  实际使用可以替换成想要记录的字段
		MDC.put("reqId",request.getSession().getId());
		log.info("用户访问了一次登录界面")
  	return "login";

		}
} 

2.需要在xml日志配置文件中添加占位符——自定义参数 %X{键值}

当我们向MDC中添加信息后,只要是当前线程(本质是ThreadLocal实现)下输出的日志,都会自动替换占位符

<!--  %clr是springboot定义的()中的是要显示的字段和值  {faint}也是springboot定义的  -->

%clr([%X{reqId}]){faint}

3.修改格式

1.先将默认的日志格式复制进我们的日志配置文件

复制到logback-spring.xml

2.替换自定义字段

去掉CONSOLE_LOG_PATTERN

!!!注意最后边还有半个 “ } ” 也要去掉

添加新定义的字段

 测试:

@Controller
@RequestMapping("/demo")
public class DemoController {
    @RequestMapping("/login")
    public String login(HttpServletRequest request){
        //这里用Session代替ID
        MDC.put("reqId",request.getSession().getId());
        return "login";
    }

4.启动项目

我们可以看到这里多了一个括号 (在 --- 后边)

发送请求--我们可以看到我们终端的Session就被记录下来了

还可以在这个类后边添加 描述 ------使用需要添加@Slf4j 注解

log.info("手动添加日志信息")

到此  我们的日志的自定义和格式替换就修改完毕了  大家可以根据实际需求 去按需打印项目日志了。

附赠:自定义Banner

通过最一开始我们使用空白logback-spring.xml文件覆盖springboot默认日志的时候可以看到 Banner部分与日志部分是独立的,springboot启动后会先打印Banner部分,那么我们自然可以自定义配置Banner 的样式

步骤:

1.在resources下新建Banner.txt文件

2.在banner中设置想要展示的图案——在这个链接中自己挑选

我们还可以Banner中添加一些版本信息  例如springboot的版本等等

Banner图案大全https://www.bootschool.net/ascii-art

                                   ___
                                 ./  _)                                               O
                          _.---._|____\__________________,-------.------------==-.____|]
 ____                    /  ##-|=======--------===-----==-|-----=|=-------------._______)
(####L-.________________/  /___|__________________________ ______|               )-------.
 \###|  ________________) `--- |---------------------===== ,_____|         _____/========"
  |##F-'              | /\ --- |         __mmmmm__________(======|...---''/
  |###/               (_\ \    |_______ ' "-L  nn [mf]    |      |
  |##|                     """"        \__________________|      |
 /##/                                   )       //((  // ||   _,-/
/##/                                   /       /\\_V_//   |,-"  (
\#/                                  ./       /  `---"     \     \
 v                                  /_       /              \     `.
                                   /_ `-.___/                \      `.
                                     `-.___/                  ".      `. -- GO 消灭 bug
                                                                ".      `.
                                                                  ".    _,"
                                                                    ".-"
                        当前springboot版本: ${spring-boot.version}

实现效果:

 如果想要更简单的设置Banner,可以参考这个步骤,仅需一步就可以实现自定义Banner

根据图片自定义Banner

Banner的设置就非常简单了  喜欢的小伙伴抓紧设置起来吧!!!

猜你喜欢

转载自blog.csdn.net/weixin_44693109/article/details/122987309