Logback is intended as a successor to the popular log4j project, picking up where log4j leaves off. Logback's architecture is sufficiently generic so as to apply under different circumstances. At present time, logback is divided into three modules, logback-core, logback-classic and logback-access.
The logback-core module lays the groundwork for the other two modules. The logback-classic module can be assimilated to a significantly improved version of log4j. Moreover, logback-classic natively implements the SLF4J API so that you can readily switch back and forth between logback and other logging frameworks such as log4j or java.util.logging (JUL). -- 摘自官网html
翻译: Logback旨在做为流行的log4j项目的继任者. Logback 的体系结构足够通用,适用于不一样的环境。目前,logback分为三个模块,logback-core,logback-classic和logback-access。logback-core模块为其余两个模块奠基了基础。logback-classic模块能够被认为log4j的改进版本。此外,logback-classic自己实现了所以您能够随时在logback和其余日志框架之间来回切换。java
Spring Boot在全部内部日志中使用 Commons Logging,可是默认配置也提供了对经常使用日志的支持,如: Util Logging,Log4J, Log4J2和Logback。每种Logger均可以经过配置使用控制台或者文件输出日志内容。spring
SLF4J——Simple Logging Facade For Java,它是一个针对于各种Java日志框架的统一Facade抽象。Java日志框架众多——经常使用的有java.util.logging, log4j, logback,commons-logging, Spring框架使用的是Jakarta Commons Logging API (JCL)。而SLF4J定义了统一的日志抽象接口,而真正的日志实现则是在运行时决定的——它提供了各种日志框架的binding。tomcat
Logback是log4j框架的做者开发的新一代日志框架,它效率更高、可以适应诸多的运行环境,同时自然支持SLF4J。app
默认状况下,Spring Boot会用Logback来记录日志,并用INFO级别输出到控制台。在运行应用程序和其余例子时,你应该已经看到不少INFO级别的日志了。框架
由于 SpringBoot 默认使用Logback做为日志框架, 因此不须要添加额外的依赖包.
直接配置便可.
个人经常使用配置以下:
logback-boot.xmlide
<configuration> <!-- %m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,%i索引【从数字0开始递增】,,, --> <!-- appender是configuration的子节点,是负责写日志的组件。 --> <!-- ConsoleAppender:把日志输出到控制台 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d %p (%file:%line\)- %m%n</pattern> <!-- 控制台也要使用UTF-8,不要使用GBK,不然会中文乱码 --> <charset>UTF-8</charset> </encoder> </appender> <!-- RollingFileAppender:滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其余文件 --> <!-- 如下的大概意思是:1.先按日期存日志,日期变了,将前一天的日志文件名重命名为XXX%日期%索引,新的日志仍然是sys.log --> <!-- 2.若是日期没有发生变化,可是当前日志的文件大小超过1KB时,对当前日志进行分割 重命名--> <appender name="syslog" class="ch.qos.logback.core.rolling.RollingFileAppender"> <File>log/manager_sys.log</File> <!-- rollingPolicy:当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名。 --> <!-- TimeBasedRollingPolicy: 最经常使用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 活动文件的名字会根据fileNamePattern的值,每隔一段时间改变一次 --> <!-- 文件名:log/sys.2017-12-05.0.log --> <fileNamePattern>log/manager_sys.%d.%i.log</fileNamePattern> <!-- 每产生一个日志文件,该日志文件的保存期限为30天 --> <maxHistory>30</maxHistory> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>10MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder> <!-- pattern节点,用来设置日志的输入格式 --> <pattern> %d %p (%file:%line\)- %m%n </pattern> <!-- 记录日志的编码 --> <charset>UTF-8</charset> <!-- 此处设置字符集 --> </encoder> </appender> <!-- 控制台输出日志级别 --> <root level="info"> <appender-ref ref="STDOUT"/> </root> <!-- 指定项目中某个包,当有日志操做行为时的日志记录级别 --> <!-- 级别依次为【从高到低】:FATAL > ERROR > WARN > INFO > DEBUG > TRACE --> <logger name="com.pinyougou.mapper" level="DEBUG"> <appender-ref ref="syslog"/> </logger> </configuration>
在application.yml指定logback的路径编码
server: port: 8088 tomcat: uri-encoding: UTF-8 spring: http: encoding: force: true charset: UTF-8 enabled: true logging: config: classpath:logback-boot.xml
最终效果是按天天/文件大小切割日志, 入下图所示:
spa