logback日志框架篇~

基础概念:slf4j定义了日志规范:里面全是接口,没有实现类,而log4j\log4j2\logback 这些框架是对它的具体实现。

pom.xml

        <!--logback-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.26</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>

大方向快速入门:

  1. property标签:可以理解为一个变量,用于定义“日志存放位置”与“日志内容格式化规则”。调用方式:通过${name}即获取value配置值。
  2. appender标签:叫日志媒介,通常用于在控制台打印,或持久化到硬盘中。如何控制:通过class=“指定要使用的输出对象”。
  3. encoder标签:叫layout,是appender的子标签,负责日志格式化与输出。

logback.xml

  1. 本次配置
  2. 按照error、info两种日志级别,持久化到硬盘中。
  3. 单级别细化,按照每天、满10MB就进行切割文件,并排序。
  4. 日志保留天数,366天
<?xml version="1.0" encoding="UTF-8" ?>
<!--
    *                                       logback的根标签
    *     debug="ture"会输出logback本身实时的运行信息,这里我们不需要,因为logback自身是非常稳定的。
    *                                           基础概念
    *     slf4j 定义了日志规范:里面全是接口,没有实现类,而log4j\log4j2\logback 这些框架是对它的具体实现。-
-->
<configuration debug="false">
    <!--日志文件输出位置-->
    <property name="info_path" value="/nas/adapter/info"/>
    <property name="error_path" value="/nas/adapter/error"/>
    <property name="request_path" value="/nas/adapter/request"/>

    <!--
    统一日志输出格式:
    %d{yyyy-MM-dd HH:mm:ss.SSS} 表示记录日志记录的时间格式,
    [%thread] 表示执行日志的线程名称,
    %-5level 表示从左空出5个字符宽度,然后显示日志级别,
    %logger{100} 表示在哪个类(全限定类名最大长度是100),
    %msg或%m 表示日志信息,
    %n 表示换行符
    -->
    <property name="layout" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{100} %m %n"/>

    <!--日志媒介:class指定我们使用输出的类:ConsoleAppender表示输出到控制台 -->
    <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
        <!--appender负责统一调度、encoder负责日志格式化与输出-->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--日志输出格式-->
            <pattern>${layout}</pattern>
        </encoder>
    </appender>

    <!--logback日志级别由高到低:error(错误) > warn(警告) > info(记录) >debug(调试) > trace(追踪)-->
    <!--日志媒介:class指定我们使用输出的类:RollingFileAppender表示输出到日志文件,可以按天按月生成不同的文件日志 -->
    <!--定义info级别日志-->
    <appender name="infoAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--拆分规则:SizeAndTimeBasedRollingPolicy-->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--按天与,%i排序号声明拆分文件名,.gz自动压缩日志-->
            <FileNamePattern>${info_path}/info.%d{yyyy-MM-dd}-%i.log</FileNamePattern>
            <!--按大小切割文件-->
            <maxFileSize>10MB</maxFileSize>
            <!--日志文件保留天数-->
            <MaxHistory>366</MaxHistory>
        </rollingPolicy>
        <!--日志输出格式-->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${layout}</pattern>
        </encoder>
        <!--过滤器-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level><!--只记录INFO级别日志-->
            <onMatch>ACCEPT</onMatch><!--同意INFO级记录-->
            <onMismatch>DENY</onMismatch><!--不是INFO级直接忽略-->
        </filter>
    </appender>

    <!--定义error级别日志-->
    <appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <FileNamePattern>${error_path}/error.%d{yyyy-MM-dd}-%i.log</FileNamePattern>
            <maxFileSize>10MB</maxFileSize>
            <MaxHistory>366</MaxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${layout}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>


    <appender name="requestAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <FileNamePattern>${request_path}/request.%d{yyyy-MM-dd}-%i.log</FileNamePattern>
            <maxFileSize>10MB</maxFileSize>
            <MaxHistory>366</MaxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${layout}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!--自定义记录器:定义info级别日志存储范围-->
    <logger name="com.baijun.utils" level="info">
        <appender-ref ref="infoAppender"/>
        <appender-ref ref="errorAppender"/>
        <appender-ref ref="requestAppender"/>
    </logger>

    <!--根日志记录器:只记录info级别日志在控制台输出-->
    <root level="info">
        <appender-ref ref="consoleAppender"/>
    </root>

</configuration>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

qwuedh

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

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

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

打赏作者

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

抵扣说明:

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

余额充值