springboot 集成logback 日志

上期文章:springboot 集成Kaptcha验证码

本文内容:springboot 对logback 日志集成的代码实现及部分代码详细讲解。

1

代码实现

<?xml version="1.0" encoding="UTF-8"?>

<!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
<!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false -->
<configuration  scan="true" scanPeriod="60 seconds" debug="false">
    <contextName>spring-boot-logging</contextName>
    <property name="log.path" value="src/main/resources/log" />
    <!--输出到控制台-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <!-- 级别过滤 -->
		<!-- filter是一个过滤器,表示对输出到控制台的日记进行过滤。有两种过滤器,分别为LevelFilter 和ThresholdFilter -->
		<!--LevelFilter 为级别过滤器,根据日志级别进行过滤。其下有三个子节点,level表示过滤的级别,用于配置符合过滤条件的操作,ACCEPT符合级别的输出到控制台,用于配置不符合过滤条件的操作,DENY不符合的拒绝输出到控制台。 -->
		<!--ThresholdFilter为临界值过滤器,过滤掉低于指定临界值的日志。当日志级别等于或高于临界值时,过滤器返回NEUTRAL;当日志级别低于临界值时,日志会被拒绝 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <encoder>
			<!--对日志进行格式化 -->
			<!-- %d{HH:mm:ss.SSS} :日志的输出时间 -->
			<!-- %contextName : 上下文名称 -->
			<!-- %thread : 输出日志的进程名字,这在Web应用以及异步任务处理中很有用 -->
			<!-- %-5level : 日志级别,并且使用5个字符靠左对齐 -->
			<!-- %logger{36} : 日志输出者的名字(一般为类名),名字最长36个字符,否则按照句点分割 -->
			<!-- %msg : 具体的日志消息 -->
			<!-- %n :换行符 -->
            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!--输出到文件-->
	<!-- RollingFileAppender用于切分文件日志 -->
    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<!--<file>:被写入的文件名,可以是相对目录,也可以是绝对目录,如果上级目录不存在会自动创建,没有默认值。 -->
		<!--file子节点可有可无,通过设置file,可以为活动文件和归档文件指定不同位置,当前日志总是记录到file指定的文件(活动文件) -->
		<!--活动文件的名字不会改变;如果没设置file,活动文件的名字会根据fileNamePattern 的值,每隔一段时间改变一次。“/”或者“\”会被当做目录分隔符。 -->
		<!--<file>${log.path}/spring-boot-logging.log</file> -->
		<!--<append>:如果是 true,日志被追加到文件结尾,如果是 false,清空现存文件,默认是true -->
		<append>true</append> 
		<!-- class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"是最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责触发滚动 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
			<!--定义了日志的切分方式——把每一天的日志归档到一个文件中 -->
            <fileNamePattern>${log.path}/springboot-logging.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志保存周期:只保留最近30天的日志 -->
            <maxHistory>7</maxHistory>
            <!-- 总大小 -->
            <totalSizeCap>30MB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
	<!-- root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性,默认是DEBUG -->
    <root level="info">
        <appender-ref ref="console" />
    </root>

	<!-- mybatis的sql查询日志希望特殊处理,只输出到一个专门的文件 -->
	<!--<logger>用来设置某一个包或者具体的某一个类的日志打印级别、以及指定<appender>。 -->
	<!-- 1)name:用来指定受此logger约束的某一个包或者具体的某一个类 -->
	<!-- 2)level:用来设置打印级别,大小写无关(最常用的几种):DEBUG, INFO, WARN, ERROR.如果未设置此属性,那么当前loger将会继承上级的级别-->
	<!-- 3)addtivity:是否向上级loger传递打印信息。默认是true -->
    <logger name="com.example.demo.mapper" level="DEBUG" addtivity="false">
    	<appender-ref ref="file" />
	</logger>
    
    <!-- 生产环境配置,需要激活profile-->
<!--     <springProfile name="dev"> -->
<!--     	<logger name="com.baiding" level="info"/> -->
<!-- 	</springProfile> -->
<!-- 	<springProfile name="prod"> -->
<!--     	<logger name="com.baiding" level="warn"/> -->
<!-- 	</springProfile> -->

</configuration>

2

代码讲解

根节点

<configuration scan="true" scanPeriod="60 seconds" debug="false"></configuration>
  • scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。

  • scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。

  • <debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。

filter 过滤器

<filter class="ch.qos.logback.classic.filter.LevelFilter"></filter>

filter是一个过滤器,表示对输出到控制台的日记进行过滤。有两种过滤器,分别为LevelFilter 和ThresholdFilter。
1、LevelFilter为级别过滤器,根据日志级别进行过滤。其下有三个子节点,level表示过滤的级别,用于配置符合过滤条件的操作,ACCEPT符合级别的输出到控制台,用于配置不符合过滤条件的操作,DENY不符合的拒绝输出到控制台。
2、ThresholdFilter为临界值过滤器,过滤掉低于指定临界值的日志。当日志级别等于或高于临界值时,过滤器返回NEUTRAL;当日志级别低于临界值时,日志会被拒绝。

日志格式化

<encoder>  <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern></encoder>
  • %d{HH:mm:ss.SSS} :日志的输出时间

  • %contextName :上下文名称

  • %thread : 输出日志的进程名字,这在Web应用以及异步任务处理中很有用

  • %-5level : 日志级别,并且使用5个字符靠左对齐

  • %logger{36} : 日志输出者的名字(一般为类名),名字最长36个字符,否则按照句点分割

  • %msg :具体的日志消息

  • %n :换行符

<file>节点

<file>${log.path}/spring-boot-logging.log</file>

<file>:被写入的文件名,可以是相对目录,也可以是绝对目录,如果上级目录不存在会自动创建,没有默认值。
1、file子节点可有可无,通过设置file,可以为活动文件和归档文件指定不同位置,当前日志总是记录到file指定的文件(活动文件)。
2、活动文件的名字不会改变;如果没设置file,活动文件的名字会根据fileNamePattern 的值,每隔一段时间改变一次。“/”或者“\”会被当做目录分隔符。

子节点logger

<logger name="com.example.demo.mapper" level="DEBUG" addtivity="false"></logger>

<logger>用来设置某一个包或者具体的某一个类的日志打印级别、以及指定<appender>。

  • name:用来指定受此logger约束的某一个包或者具体的某一个类。

  • level:用来设置打印级别,大小写无关(最常用的几种):DEBUG, INFO, WARN, ERROR.如果未设置此属性,那么当前loger将会继承上级的级别。

  • addtivity:是否向上级loger传递打印信息。默认是true 。

3

测试

在地址栏输入http://localhost:8080/hospital/login ,登陆成功后查看src/main/resources/log/springboot-logging.2019-10-09.log 文件,得到以下信息:d

至此,本文结束。欢迎各位关注我的公众号:暗星涌动。

往期文章:

1、Springboot 整合 Shiro

2、Shiro 实现 RememberMe 功能

3、springboot 集成Kaptcha验证码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暗星涌动

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值