LogBack日志
介绍
Logback 继承自 log4j。
Logback 的架构非常的通用,适用不同的使用场景。Logback 被分成三个不同的模块:logback-core,logback-classic,logback-access。
logback-core 是其它两个模块的基础。logback-classic 模块可以看作是 log4j 的一个优化版本,它天然的支持 SLF4J,所以你可以随意的从其它日志框架(例如:log4j 或者 java.util.logging)切回到 logack。
logback-access 可以与 Servlet 容器进行整合,例如:Tomcat、Jetty。它提供了 http 访问日志的功能。
模块
- logback-core:是其他两个模块的基础,包含了核心元件的接口和实现。
- logback-classic:实现了slf4j api,所以你可以在logback和slf4j其他的实现之间切换。
- logback-access:提供了在web容器中http-access日志功能的实现。
SpingBoot嵌入LogBack日志
其输出格式:
- 时间日期:日志时间,精确到毫秒
- 日志级别:FATAL、ERROR、WARN、INFO、DEBUG、TRACE
- 进程ID:当前应用的PID
- 分隔符:区分时间日志消息的开始
- 线程名称:中括号中的内容
- 记录器名称:一般使用类名
- 日志内容:输出的内容
输出到控制台
默认情况下为ERROR、WARN、INFO级别的内容,需要DEBUG的话需要再配置文件中输入debug=true
日志文件输出
在配置文件中配置其中一个的内容:
- logging.file:设置日志文件,在=后面加日志文件
- logging.path:设置日志目录,在=后加日志目录,则SpringBoot会自动在目录下创建spring.log
- logging.file.max-size:设置日志文件大小
日志级别
使用logging.level.包名/组名
=级别,才设置不同的日志级别输出
还可以设置日志组:
logging.group.组名=包1,包2...:设置多个包为同一日志组
SringBoot的其他配置
logging.exception-conversion-word:记录异常时使用的转换字
logging.file.max-size:最大日志文件大小
logging.config:日志配置
logging.file.max-history:最大归档文件数量
logging.pattern.console:控制台输出模式
logging.pattern.dateformat:日期格式
logging.pattern.file:日志模式级别
logging.pattern.level:日志
PID:当前进程
XML的配置
创建logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<contextName>logback</contextName>
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="log.path" value="E:\\idea\\Javacode\\spring-boot-exercise\\spring-boot-web\\src\\main\\resources\\log\\logback.log"/>
<!--输出到控制台-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<withJansi>true</withJansi>
<encoder>
<!--<pattern>%d %p (%file:%line\)- %m%n</pattern>-->
<!--格式化输出:%d:表示日期 %thread:表示线程名 %-5level:级别从左显示5个字符宽度 %msg:日志消息 %n:是换行符-->
<pattern>%black(控制台-) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level)
%boldMagenta(%logger) - %cyan(%msg%n)
</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!--输出到文件-->
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logback.%d{yyyy-MM-dd-HH-mm}.log</fileNamePattern>
<maxHistory>30</maxHistory>
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
<encoder>
<!--格式化输出:%d:表示日期 %thread:表示线程名 %-5level:级别从左显示5个字符宽度 %msg:日志消息 %n:是换行符-->
<pattern>文件记录-%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
<charset>GBK</charset>
</encoder>
</appender>
<!--定义输出级别和位置-->
<root level="info">
<appender-ref ref="console"/>
<appender-ref ref="file"/>
</root>
<logger name="com.sxd.controller"/>
<logger name="com.sxd.util.LogTestController" level="WARN" additivity="false">
<appender-ref ref="console"/>
</logger>
</configuration>
注意事项:
<pattern>%black(控制台-) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{10}) - %cyan(%msg%n)</pattern>
1.第一点,颜色%black %red等等 ,需要用括号将你要显示本颜色的子模块括起来2.第二点,%red颜色等,前面要与上一个模块 空格隔开
3.同样可以定义一个变量然后直接引用在<pattern>标签中