简单介绍
Logback是完全实现SLF4J接口API(也叫日志门面)的日志框架。
Logback 的架构非常通用,可以应用于不同的环境。目前logback分为三个模块,logback-core、logback-classic和logback-access。
logback-core 模块为其他两个模块奠定了基础。logback-classic模块原生实现了SLF4J API,因此您可以轻松地在 logback 和其他日志记录框架(例如 log4j 1.x 或 java.util.logging (JUL))之间来回切换。
logback-access 模块与 Tomcat 和 Jetty 等 Servlet 容器集成,以提供 HTTP 访问日志功能。
关系图
LogBack日志框架Jar包
logBack介绍
logback 基于三个主要组件: Logger、Appender 和 Layout。这三种类的组件协同工作,使开发人员能够通过日志类型和级别来记录日志,并在运行时控制这些日志的格式和报告位置。
Logger:日志记录器,定义日志内容和日志级别
Appender :附加器,定义日志输出位置,比如控制台,外部文件,数据库等
Layout:定义日志输出内容的格式
Logger有三个属性: name属性:记录器的名称 level属性(可选):记录器的级别,允许的级别从低到高,TRACE < DEBUG < INFO < WARN < ERROR additivity属性(可选):是否允许叠加打印日志, true或false
日志记录器(Logger)配置:
logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 定义附加器 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%date %msg%n</pattern>
</encoder>
</appender>
<!-- 文件附加器 -->
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>D:/ssm/myLog.log</file>
<encoder>
<pattern>%date %level %class %line %msg%n</pattern>
</encoder>
<append>true</append>
</appender>
<appender name="EXFILE" class="ch.qos.logback.core.FileAppender">
<file>D:/ssm/myLog.log</file>
<encoder>
<pattern>%date %level %class %line %msg%n</pattern>
</encoder>
<append>true</append>
</appender>
<!-- 滚动文件附加器 -->
<appender name="ROLLINGFILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>D:/ssm/log_current.log</file>
<encoder>
<pattern>%date %level %class %line %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>D:/ssm/log_%d{yyyy-MM-dd-HH-mm}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>
<!-- 滚动文件附加器 -->
<appender name="ROLLINGFILE2"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>D:/ssm/current.log</file>
<encoder>
<pattern>%date %level %class %line %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>D:/ssm/log_%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxHistory>30</maxHistory>
<totalSizeCap>5GB</totalSizeCap>
<maxFileSize>1KB</maxFileSize>
</rollingPolicy>
</appender>
<!-- 根记录器 -->
<root level="debug">
<appender-ref ref="ROLLINGFILE2" />
</root>
<!-- controller记录器 -->
<logger name="controller" level="info" additivity="false">
<appender-ref ref="ROLLINGFILE2" />
</logger>
<!-- controller.TestController记录器 -->
<logger name="controller.TestController" level="error" additivity="false">
<appender-ref ref="ROLLINGFILE2" />
</logger>
<!-- controller.TestController记录器 -->
<logger name="requestTrace" level="info" additivity="false">
<appender-ref ref="FILE" />
</logger>
<logger name="ex" level="error" additivity="false">
<appender-ref ref="EXFILE" />
</logger>
</configuration>
解释说明
在Logback中,日志记录器(Logger)是有层级结构的
注意:子记录器会继承父记录器中的属性
Java代码获取日志记录器(Logger)
注意:日志记录器会记录指定Level及以上级别的日志信息
附加器(Appender): 不同的附加器会将日志输出到不同的地方,比如控制台附加器、文件附加器、网络附加器等等。 常用的附加器
控制台附加器: ch.qos.logback.core.ConsoleAppender
文件附加器: ch.qos.logback.core.FileAppender
滚动文件附加器: ch.qos.logback.core.rolling.RollingFileAppender
滚动策略有两种:
1. 基于时间的滚动策略 ch.qos.logback.core.rolling.TimeBasedRollingPolicy
2. 基于大小和时间的滚动策略 ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy