zoukankan      html  css  js  c++  java
  • SpringBoot系列之集成logback实现日志打印(篇一)

    logback介绍

    logback是一款开源的日志框架,内核重写了,是基于log4j基础进行改良的。其官网为logback.qos.ch。logback在性能上有很大提升,拥有更多特性。

    logback-core:是其它两个模块的基础模块

    logback-classic:log4j的改良版本,实现了Slf4j API

    logback-access:集成Servle环境时就需要logback了,可以提供Http访问的接口

    日志级别

    日志级别:ERROR, WARN, INFO, DEBUG or TRACE
    有时候我们要获取更多的日志信息,就可以降低日志级别,然后或是更多的日志信息,eg:目前级别是info级别的,我们可以降低日志级别为debug,然后获取更多日志信息。

    项目集成

    maven加上对应的jar:

     <!-- logback -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </dependency>
    

    在application.yml加上配置

    server:
      port: 8081
    logging:
      config: classpath:logback.xml
      level:
        com.muses.taoshop: debug
      path: /data/logs
    
    

    在资源文件夹下添加logback.xml:

    <?xml version="1.0" encoding="UTF-8" ?>
    <configuration debug="false" scan="true">
        <!-- 日志级别 -->
        <springProperty scope="context" name="LOG_ROOT_LEVEL" source="logging.level.root" defaultValue="DEBUG"/>
        <!--  标识这个"STDOUT" 将会添加到这个logger -->
        <springProperty scope="context" name="STDOUT" source="log.stdout" defaultValue="STDOUT"/>
        <!-- 日志格式,%d:日期;%thread:线程名;%-5level:日志级别从左显示5个字符长度,列如:DEBUG;
            %logger{36}:java类名,例如:com.muses.taoshop.MyTest,36表示字符长度;%msg:日志内容;%d:换行 -->
        <property name="LOG_PATTERN"
                  value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" />
        <!-- root日志级别-->
        <property name="${LOG_ROOT_LEVEL}" value="DEBUG" />
        <!-- 日志跟目录 -->
        <property name="LOG_HOME" value="data/logs" />
        <!-- 日志文件路径-->
        <property name="LOG_DIR" value="${LOG_HOME}/%d{yyyyMMdd}" />
        <!-- 日志文件名称 -->
        <property name="LOG_PREFIX" value="portal" />
        <!-- 日志文件编码 -->
        <property name="LOG_CHARSET" value="utf-8" />
        <!-- 配置日志的滚动时间,保存时间为15天-->
        <property name="MAX_HISTORY" value="15" />
        <!-- 文件大小,默认为10MB-->
        <property name="MAX_FILE_SIZE" value="10" />
    
    
        <!-- 打印到控制台 -->
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            <!-- 格式化日志内容-->
            <encoder>
                <pattern>${LOG_PATTERN}</pattern>
            </encoder>
        </appender>
        <!-- 打印所有日志,保存到文件-->
        <appender name="FILE_ALL"
                  class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${LOG_HOME}/all_${LOG_PREFIX}.log</file>
            <!-- 设置滚动策略,当日志文件大小超过${MAX_FILE_SIZE}时,新的日志内容写到新的日志文件-->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- 新的日志文件路径名称,%d:日期 %i:i是变量 -->
                <fileNamePattern>${LOG_DIR}/all_${LOG_PREFIX}%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <!-- 保存日志15天 -->
                <maxHistory>${MAX_HISTORY}</maxHistory>
                <timeBasedFileNamingAndTriggeringPolicy
                        class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <!-- 日志文件的最大大小 -->
                    <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>
            <!-- 格式日志文件内容-->
            <layout class="ch.qos.logback.classic.PatternLayout">
                <pattern>${LOG_PATTERN}</pattern>
            </layout>
        </appender>
    
        <!-- 打印错误日志,保存到文件-->
        <appender name="FILE_ERR"
                  class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${LOG_HOME}/err_${LOG_PREFIX}.log</file>
            <!-- 设置滚动策略,当日志文件大小超过${MAX_FILE_SIZE}时,新的日志内容写到新的日志文件-->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- 新的日志文件路径名称,%d:日期 %i:i是变量 -->
                <fileNamePattern>${LOG_DIR}/err_${LOG_PREFIX}%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <!-- 保存日志15天 -->
                <maxHistory>${MAX_HISTORY}</maxHistory>
                <timeBasedFileNamingAndTriggeringPolicy
                        class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <!-- 日志文件的最大大小 -->
                    <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>
            <!-- 格式日志文件内容-->
            <layout class="ch.qos.logback.classic.PatternLayout">
                <pattern>${LOG_PATTERN}</pattern>
            </layout>
        </appender>
    
        <!-- rest template logger-->
        <!--<logger name="org.springframework.web.client.RestTemplate" level="DEBUG" />-->
        <!--<logger name="org.springframework" level="DEBUG" />-->
    
        <!-- jdbc-->
        <!--<logger name="jdbc.sqltiming" level="DEBUG" />-->
        <logger name="org.mybatis" level="DEBUG" />
    
        <!-- zookeeper-->
        <logger name="org.apache.zookeeper"    level="ERROR"  />
    
        <!-- dubbo -->
        <logger name="com.alibaba.dubbo.monitor" level="ERROR"/>
        <logger name="com.alibaba.dubbo.remoting" level="ERROR" />
    
        <!-- 日志输出级别 -->
        <root leve="${LOG_ROOT_LEVEL}">
            <appender-ref ref="STDOUT" />
            <appender-ref ref="FILE_ALL" />
            <appender-ref ref="FILE_ERR" />
        </root>
    
    </configuration>
    

    附录

    参考资料

    logback的使用和logback.xml详解

    Spring Boot 中使用 LogBack 配置

  • 相关阅读:
    洛谷 P1194 飞扬的小鸟 题解
    洛谷 P1197 星球大战 题解
    洛谷 P1879 玉米田Corn Fields 题解
    洛谷 P2796 Facer的程序 题解
    洛谷 P2398 GCD SUM 题解
    洛谷 P2051 中国象棋 题解
    洛谷 P1472 奶牛家谱 Cow Pedigrees 题解
    洛谷 P1004 方格取数 题解
    洛谷 P2331 最大子矩阵 题解
    洛谷 P1073 最优贸易 题解
  • 原文地址:https://www.cnblogs.com/mzq123/p/10358528.html
Copyright © 2011-2022 走看看