日志logback

spring boot 默认会加载classpath:logback-spring.xml 
如需要自定义文件名称,在application.properties 中配置logging.config 选项即可。 
在src/main/resources 下创建 logback-spring.xml 文件,内容如下 

根节点<configuration 

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

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

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

 例如: 

<?xml version="1.0" encoding="UTF-8"?> 
        <configuration scan="true" scanPeriod="60 seconds" debug="false"> 

                //一些其他配置 

        </configuration> 

一、logback.xml的配置,输出到控制台的方式

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <property name="LOG_PATH" value="./logs"/>

    <!--Appender主要用于指定日志输出的目的地,目的地可以是控制台、文件等-->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!--格式化输出:%d表示日期,%thread表示线程名-->
        <!--%-5level:级别从左显示5个字符宽度-->
        <!--%logger{35} 表示logger名字最长35个字符,否则按照句点分割-->
        <!-- %msg:日志消息-->
        <!-- %n是换行符-->
        <!--layout负责把事件转换成字符串,格式化的日志信息的输出-->
        <layout>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} -
                %msg %n</pattern>
        </layout>
    </appender>
    <!--根节点设置日志级别,设置使用哪些节点-->
    <root level="info">
        <appender-ref ref="STDOUT"/>
    </root>
</configuration>

然后使用的时候在类上加上注解@Slf4j


@Data
@Slf4j
public class Task2 implements Runnable {
    private String id;
    @Override
    public void run() {
        log.info("我是info级别的日志,我的id是:{},可以加多个的{}",this.getId(),"是的");
        log.error("哈哈哈,我是错误的日志");
    }
}

二、logback,滚动日志输出到文件里的配置方式,滚动记录文件,先将日志记录到指定文件, 
 当符合某个条件时(日期、日志大小、存储天数),将日志记录到其他文件。 
 例如: 

<appender name="MAXDATEFILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
      <!-- 日志文件输出的文件名--> 
      <fileNamePattern>${LOG_PATH}/logFile.%d{yyyy-MM-dd}.log</fileNamePattern> 
      <!-- 日志文件保留天数--> 
      <maxHistory>30</maxHistory> 
  </rollingPolicy> 
  <encoder> 
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} - 
  %msg%n</pattern> 
  </encoder> 
  <!--当文件大于10MB时,生成新的日志文件--> 
  <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> 
      <MaxFileSize>10MB</MaxFileSize> 
  </triggeringPolicy> 
  </appender> 

三、输出错误日志,过滤,日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志。 
  有以下子节点: 
  <level>:设置过滤级别 
  <onMatch>:用于配置符合过滤条件的操作 
  <onMismatch>:用于配置不符合过滤条件的操作 按照过滤级别分离出不同级别的日志文件 

<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
     <FileNamePattern>${LOG_PATH}/error.%d{yyyy-MM-dd}.log</FileNamePattern> 
 </rollingPolicy> 
 <layout> 
     <pattern>[%date{yyyy-MM-dd HH:mm:ss}] [%-5level] [%logger:%line] --%mdc{client} 
 %msg%n</pattern> 
 </layout> 
 <filter class="ch.qos.logback.classic.filter.LevelFilter"> 
     <level>ERROR</level> 
     <onMatch>ACCEPT</onMatch> 
     <onMismatch>DENY</onMismatch> 
 </filter> 
 </appender> 

总结,一般使用的配置的就用这三种类型,控制台输出、滚动日志定期清除多少时间以后的日志、错误日志,配置如下

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <property name="LOG_PATH" value="./logs"/>

    <!--Appender主要用于指定日志输出的目的地,目的地可以是控制台、文件等-->
    <!--输出到控制台配置-->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!--格式化输出:%d表示日期,%thread表示线程名-->
        <!--%-5level:级别从左显示5个字符宽度-->
        <!--%logger{35} 表示logger名字最长35个字符,否则按照句点分割-->
        <!-- %msg:日志消息-->
        <!-- %n是换行符-->
        <!--layout负责把事件转换成字符串,格式化的日志信息的输出-->
        <layout>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} -
                %msg %n</pattern>
        </layout>
    </appender>

    <!--滚动输出,存放多少天,多大文件重新输出,输出到文件配置-->
    <appender name="MAXDATEFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件输出的文件名-->
            <fileNamePattern>${LOG_PATH}/logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志文件保留天数-->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} -
                %msg%n</pattern>
        </encoder>
        <!--当文件大于10MB时,生成新的日志文件-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>

    <!--输出错误日志,存到文件中配置-->
    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${LOG_PATH}/error.%d{yyyy-MM-dd}.log</FileNamePattern>
        </rollingPolicy>
        <layout>
            <pattern>[%date{yyyy-MM-dd HH:mm:ss}] [%-5level] [%logger:%line] --%mdc{client}
                %msg%n</pattern>
        </layout>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!--根节点设置日志级别,设置使用哪些节点-->
    <root level="info">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="MAXDATEFILE"/>
        <appender-ref ref="ERROR_FILE"/>
    </root>
</configuration>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

NeilNiu

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

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

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

打赏作者

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

抵扣说明:

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

余额充值