• 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 配置

  • 相关阅读:
    从徐飞的文章《Web应用的组件化开发(一)中窥视web应用开发的历史
    【转载】开发者眼中的Spring与Java EE
    matplotlib.pyplot画图包的使用简介 (4) [柱状图]
    matplotlib.pyplot画图包的使用简介 (3) [折线图]
    matplotlib.pyplot画图包的使用简介 (2) [散点图]
    matplotlib.pyplot画图包的使用简介 (1)
    自定义代码实现简单的多元一次线性函数的随机梯度下降
    ajax请求模板
    django的{{}}与js的{{}}冲突解决
    django配置mysql
  • 原文地址:https://www.cnblogs.com/mzq123/p/10358528.html
Copyright © 2020-2023  润新知