Logback

Logback基础

log配置文件

在springboot中,自定义logback日志的配置文件名字必须为logback.xml,放在resources根目录下,基本框架如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <!--添加一个日志规则-->
  <appender name="" class="ch.qos.logback.core.XxxxxAppender">
    <!--日志输出格式-->
    <encoder>
      <pattern>pattern</pattern>
    </encoder>
  </appender>
  <!--指定具体类的日志输出,通过name进行对应-->
  <logger name="" level="">
    <appender-ref ref=""/>
  </logger>
  <!--根级别的日志输出-->
  <root level="">
      <appender-ref ref=""/>
  </root>
</configuration>

log的优先级

在logback中常用的log级别优先级从高到低有四种:error => warn => info =>debug,这四个是项目中最常用的log级别,其中debug指出细粒度信息事件对调试应用程序是非常有帮助的;

logback日志输出格式

  • %-5level:日志级别从左显示5个字符宽度
  • %m:即%msg,日志的内容
  • %d{}:即%date{},在{}中指出日期格式,如HH:mm:ss:SSS
  • %n:表示换行
  • %thread :表示当前日志的进程
  • %logger{30}:表示该条日志所属类的全名
  • %color():设置()中内容的颜色,常用的有:
    • highlight:蓝色
    • magenta:红色
    • green:绿色
    • cyan:青色
    • boldMagenta:粗红
<property name="log.pattern_info" value="%d{HH:mm:ss:SSS} [%thread] %green(%-5level) %cyan(%-50logger{30}) : %msg%n"/>

logback的几种日志形式

在logback中有

控制台日志-ConsoleAppender

ConsoleAppender,这种形式的日志,就是在控制台打印出日志

<appender name="console_error" class="ch.qos.logback.core.ConsoleAppender">
文件日志-RollingFileAppender

RollingFileAppender,提供日志目标文件自动切换的功能。可以用日期作为日志分割的条件,RollingFileAppender有两个重要属性,RollingPolicy负责怎么切换日志,TriggeringPolicy负责何时切换;RollingPolicy中有几个不同的类来表示不同的roll策略,最常用的是TimeBasedRollingPolicy,基于时间进行滚动,如${log.path}/sys-user.%d{yyyy-MM-dd}.log,不仅指明了文件的路径和名称,同时还说明了rollingPolicy是以天数为基准进行滚动的(yyyy-MM-dd);

<!--基于时间创建日志文件-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <!-- 日志文件名格式 -->
    <fileNamePattern></fileNamePattern>
    <!-- 日志最大的历史天数 -->
    <maxHistory></maxHistory>
</rollingPolicy>

level过滤器

在logback中,可以使用filter标签对日志级别进行过滤,得到自己需要的日志级别;level表示指定的级别,并通过onMatch/onMismatch标签对其进行定义,onMatch表示与level匹配时,进行的操作,onMismatch表示与level不匹配时,进行的操作,ACCEPT(接收),DENY(拒绝);

<filter class="ch.qos.logback.classic.filter.LevelFilter">
    <!-- 过滤的级别 -->
    <level>INFO</level>
    <!-- 匹配时的操作:接收(记录) -->
    <onMatch>ACCEPT</onMatch>
    <!-- 不匹配时的操作:拒绝(不记录) -->
    <onMismatch>DENY</onMismatch>
</filter>

logger和root

logger:可以用于指定具体类的日志形式,它有三个常用的属性:name,level,additivity;additivity默认为true,即向上进行转移,自己先按照自己的配置输出,再交给root进行输出;name:指定日志的使用类,通过slf4的Logger logger = LoggerFactory.getLogger(“name”)进行绑定;level:日志的输出级别,一般为info;

root相当于最高级别的logger,用于全局日志的输出,通过属性level指定日志级别;

完整的logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 日志存放路径 -->
    <property name="log.path" value="/home/boot2/logs" />

    <!--info日志输出格式-->
    <property name="log.pattern_info" value="%d{HH:mm:ss:SSS} [%thread] %green(%-5level) %cyan(%-50logger{30}) : %msg%n"/>
    <!--error日志输出格式-->
    <property name="log.pattern_error" value="%red(%d{HH:mm:ss:SSS} [%thread] %-5level %-50logger{30} : %msg%n)"/>
    <!--warn日志输出格式-->
    <property name="log.pattern_warn" value="%d{HH:mm:ss:SSS} [%thread] %yellow(%-5level) %cyan(%-50logger{30}) : %msg%n"/>
    <!--文件日志输出格式-->
    <property name="log.pattern_file" value="%d{HH:mm:ss:SSS} [%thread] %-5level %logger{30} : %msg%n"/>

    <!--控制台info日志输出-->
    <appender name="console_info" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${log.pattern_info}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>INFO</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    <!--控制台error日志输出-->
    <appender name="console_error" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${log.pattern_error}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>ERROR</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    <!--控制台warn日志输出-->
    <appender name="console_warn" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${log.pattern_warn}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>WARN</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- 系统info日志输出 -->
    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/sys-info.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志最大的历史 60天 -->
            <maxHistory>60</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern_file}</pattern>
        </encoder>
        <!--        日志级别选择,收集指定级别的日志-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>INFO</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    <!--记录系统error级别日志-->
    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/sys-error.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志最大的历史 60天 -->
            <maxHistory>60</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern_file}</pattern>
        </encoder>
        <!--日志级别选择,收集指定级别的日志-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>ERROR</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    <!-- 用户访问日志输出  -->
    <appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/sys-user.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 按天回滚 daily -->
            <fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志最大的历史 60天 -->
            <maxHistory>60</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern_file}</pattern>
        </encoder>
    </appender>

<!--    logger:指定类的日志级别,通过name进行对应-->
    <!--
    additivity默认为true,即向上进行转移,自己先按照自己的配置输出,再交给root进行输出;
    name:指定日志的使用类,通过slf4的Logger logger = LoggerFactory.getLogger("name")进行绑定;
    level:日志的输出级别
    -->
    <logger name="testlog" level="info" additivity="false">
        <appender-ref ref="console_info"/>
        <appender-ref ref="console_error"/>
        <appender-ref ref="console_warn"/>
        <appender-ref ref="file_info"/>
        <appender-ref ref="file_error"/>
    </logger>

    <!--系统用户操作日志-->
    <logger name="sys-user" level="info">
        <appender-ref ref="sys-user"/>
    </logger>

    <root level="info">
        <appender-ref ref="console_info"/>
        <appender-ref ref="console_error"/>
        <appender-ref ref="console_warn"/>
        <appender-ref ref="file_info"/>
        <appender-ref ref="file_error"/>
    </root>
</configuration>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值