logback的简单使用

logback是一个非常好用的日志组件,并且logback已经集成到了springboot中,我们可以去查看spring-boot-starter,发现里面含有spring-boot-starter-logging,该日志就是默认集成的logback。

当我们启动springboot时,会发现控制台输出了日志,这是因为springboot有一个默认的logback配置base.xml,该配置设置了一些简单的日志输出,方便我们进行日志查看,当然,我们想要使用自定义的日志输出也十分简单,只需要在resource目录下创建logback-spring.xml文件,并进行简单的配置即可。

在进行配置之前,我们先来了解一下一些属性:

1.configuration

configuration为配置的根节点,其中有:scan,scanPeriod和debug三个属性。

scan:当此属性设置为true时,配置文档如果发生改变,将会被重新加载,默认值为true。

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

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

2.property

property为设置变量,其中有name和value两个属性,分别表示变量名和变量值。通过${name}来使用。我们可以通过这个标签来配置日志存放的目录或者输出日志的格式。

3.appender

appender是用来格式化日志输出的标签,其中有name和class两个属性,class用来指定是哪种输出策略,常见的有控制台输出和文件输出。

  • ConsoleAppender:控制台输出
  • *FileAppender:文档输出
  • *RollingFileAppender:当满足一定条件后,会创建一个新的文件,用于存放新的日志信息

appender中还有一些其他标签:encoder、file、rollingPolicy、filter等。

encoder:用于指定输出,配合pattern标签使用。

file:用于设置文档路径和文档名。

rollingPolicy:滚动策略,可以根据时间、文件大小来指定滚动策略。

filter:用于过滤日志信息,可以指定过滤一些级别的日志信息。

4.springProfile

springProfile用于指定多环境,例如开发中会有开发环境,测试环境以及生产环境,我们可以通过springProfile标签来制定不同的环境从而输出不同的日志。

springProfile标签通过name属性来指定环境,而后只需要在application配置文件中指定环境,logback即可自动匹配相应的环境进行日志输出。

5.root

root标签是用来指定最基础的日志输出级别,其中只有level一个属性,默认为debug,是必填项,可填入(不区分大小写)TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,不能设置为INHERITED或者同义词NULL。

appender-ref标签:可以包含零个或多个元素,标识这个appender将会添加到这个loger,即只有appender-ref标签中的ref属性指定的appender才会进行日志输出。

6.logger

logger标签中有多个属性,常用的有name和level。

name用来指定某个类,level用来指定日志输出的级别,通常用这个标签来指定某个类中只输出某等级以上的日志信息。

以上就是logback中比较基本的配置了,当然还有很多标签,详细的可以前往官网查看,这里就不多说了,以下为我写的一个简单的例子,可以通过该例子理解一些标签的作用,当然也可以直接使用我这个配置,使用时只需要改一下

<property name="home" value="/www/wwwroot/logs"/>

中的value即可,这个是日志文件输出的目录。

然后在application配置文件中配置:

spring:
  profiles:
    active: dev
logging:
  config:
    classpath:logback-spring.xml

可能有些人不懂我这个配置是什么意思,我就稍微讲一下,一般项目中会有application.yml、application-dev.yml、application-test.yml和application-prod.yml等配置文件,用来写入开发,测试和生产环境的配置,通过application.yml中的active指定环境。 

logging.config.classpath用来指定所使用的logback配置。

以下为我的logback配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
<!-- scan:当此属性设置为true时,配置文档如果发生改变,将会被重新加载,默认值为true -->
<!-- scanPeriod:设置监测配置文档是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration  scan="true" scanPeriod="10 seconds">

    <!-- name的值为变量的名称,value的值为变量的值。定义变量后,可以使“${}”来使用变量。 -->
    <property name="home" value="/www/wwwroot/logs"/>

    <!-- 彩色日志依赖的渲染类 -->
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />

    <!-- 彩色日志输出 -->
    <property name="CONSOLE_LOG_PATTERN"
              value="%clr(%d{yyyy-MM-dd HH:mm:ss}){faint} %clr(|%-5level|) %clr(${PID:- }){magenta} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>

    <!-- 输出到控制台 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <!-- 输出格式 -->
            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!-- 输出到文档 -->
    <!-- 这里的ALL_FILE我们设置为输出全部日志,当然也可以配置其他用来输出不同级别的日志 -->
    <appender name="ALL_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志文档的路径和文档名 -->
        <file>${home}/all.log</file>
        <!-- 输出格式 -->
        <encoder>
            <pattern>%date{yyyy-MM-dd HH:mm:ss} | %-5level | [${PID:- }] %-40.40logger{39} | %msg%n</pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 若天数改变或者大小达到设定值后,会将当前日志归档,以日期.下标命名 -->
            <fileNamePattern>${home}/all-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- 设置最大日志大小 -->
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!-- 日志保留天数 -->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
    </appender>

    <!-- 设置日志输出策略 -->
    <!-- 这里设置为开发环境,只进行控制台输出,输出级别为debug -->
    <springProfile name="dev">
        <root level="debug">
            <!-- 开发环境只输出到控制台 -->
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="ALL_FILE" />
        </root>
    </springProfile>

    <!-- 这里设置为生产环境,只进行日志文档输出,输出级别为info -->
    <springProfile name="prod">
        <root level="info">
            <!-- 生产环境只设置文档输出 -->
            <appender-ref ref="ALL_FILE" />
        </root>
    </springProfile>

    <!--  以下日志设置输出级别  -->
    <logger name="org.springframework" level="INFO"/>
    <logger name="com.ibatis" level="INFO" />
    <logger name="com.ibatis.common.jdbc.SimpleDataSource" level="INFO" />
    <logger name="com.ibatis.common.jdbc.ScriptRunner" level="INFO" />
    <logger name="com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate" level="INFO" />
    <logger name="java.sql.Connection" level="INFO" />
    <logger name="java.sql.Statement" level="INFO" />
    <logger name="java.sql.PreparedStatement" level="INFO" />
    <logger name="org.mybatis.spring" level="INFO" />
    <logger name="com.baomidou.mybatisplus" level="INFO" />
    <logger name="springfox" level="INFO" />
    <logger name="com.zaxxer.hikari" level="INFO" />
    <logger name="io.netty" level="INFO" />
    <logger name="io.lettuce" level="INFO" />

</configuration>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值