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

原文地址:https://www.cnblogs.com/mzq123/p/10358528.html

时间: 2024-08-27 08:59:35

SpringBoot+logback实现日志打印的相关文章

SpringBoot 整合 slf4j 日志打印

划水时间,记录一下用到的相关slf4j 日志打印,如何实现配置输出.本地保存log日志文件... 我使用的是SpringBoot框架,slf4j 类库已经包含到了 SpringBoot 框架中,所有,所有前提是“你的SpringBoot项目能够启动起来” /手动滑稽... 第一步:在 application.properties 文件中先定义好logger文件的一些配置信息,这样方便以后修改配置: ###################### log 配置 ###################

java lombok logback 配置日志打印

meven <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.22</version> </dependency> resources/logback.xml 文件配置 <?xml version="1.0" encoding="UTF

springboot aop + logback + 统一异常处理 打印日志

1.src/resources路径下新建logback.xml 控制台彩色日志打印 info日志和异常日志分不同文件存储 每天自动生成日志 结合myibatis方便日志打印(debug模式) <?xml version="1.0" encoding="UTF-8"?> <configuration debug="false"> <!--定义日志文件的存储地址 可以在LogBack 的配置中使用相对路径--> &

spring-boot logback日志常用配置解释

1)引入 spring-boot默认日志系统就是logback日志框架 spring-boot引入logback的maven依赖关系树如下: 2)配置 在application.properties文件中 #backlog setting logging.config=logback-spring.xml 或者在 application-dev.yml文件中 logging: config: classpath:logback-spring.xml logback-spring.xml配置详解

SpringBoot+logback实现按业务输出日志到不同的文件

公司有个项目,需要和几个第三方系统对接.这种项目,日志一定要记录详细,不然出了问题就是各种甩锅.虽然项目里面和第三方系统对接相关的业务记录的日志很详细,但是由于整个项目的日志都在一个文件中,排查问题时比较麻烦.因此希望可以把这些和第三方对接的日志生成在另外一个单独的文件.这也就是标题中的实现按业务输出日志到不同的文件,下面开始讲解具体的实现方案. 一.方案 由于需要按业务生成不同的日志文件,看到按业务来区分,我的第一感觉就是业务其实是可以按包名来区分的.所以其实我们只要实现不同的包下面的日志输出

springboot配置aop切面日志打印

一.SpringBoot Aop说明 1. Aop AOP(Aspect-Oriented Programming,面向切面编程),它利用一种”横切”的技术,将那些多个类的共同行为封装到一个可重用的模块.便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性. 2. AOP相关概念: Aspect(切面):声明类似于Java中的类声明,在Aspect中会包含一些Pointcut及相应的Advice. Joint point(连接点):表示在程序中明确定义的点.包括方法的调

第十章 springboot + logback

logback是boot默认的日志首选,个人觉得是最好的日志实现(比log4j好) 下边,在之前的代码基础上增加一个功能,该功能要实现mybatis的and or联查功能,并通过logback日志在控制台去查看输出的sql情况. 即实现如下sql的功能: SELECT * FROM tb_user WHERE id = ? AND (username=? OR `password`= ?); 该语句需要用到xml格式. 注意:由本节开始,springboot采用了1.3.0. 1.com.xxx

Log4j,Log4j2,logback,slf4j日志学习

日志学习笔记 Log4j Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.数据库等:我们也可以控制每一条日志的输出格式:通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程. Log4j有7种不同的log级别,按照等级从低到高依次为:TRACE.DEBUG.INFO.WARN.ERROR.FATAL.OFF.如果配置为OFF级别,表示关闭log. Log4j支持两种格式的配置文件:properties和xml.包含三

Springboot中的日志管理

本案例中可以了解,怎么配置日志的输出路径,输出格式(比如说zip格式),按日期进行划分(今天的日志输出为一个文件,明天的日志输出到另一个文件),在按日期划分的同时又按文件大小划分(比如说每天的日志记录很多,希望一个日志文件为5GB...),上面的功能,看完这篇都能实现.(参考链接超有用,建议直接下拉打开链接) Slf4j 日志管理的抽象接口 Log4j,log4j2,logback,日志管理框架,日志管理实现 Springboot中pom.xml,若引入了web的起步依赖,不需要再引入日志管理相