SpringBoot系列之集成logback实现日志打印(篇一)

 2020-08-01 13:18  阅读(1555)
文章分类:Spring boot

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


来源:https://www.cnblogs.com/mzq123

点赞(1)
版权归原创作者所有,任何形式转载请联系作者; Java 技术驿站 >> SpringBoot系列之集成logback实现日志打印(篇一)

相关推荐