简介
Logback旨在作为流行的log4j项目的后继者,从log4j离开的地方接手。
Logback的体系结构足够通用,可以应用在不同的情况下。目前,logback分为三个模块:logback-core,logback-classic和logback-access。
logback-core模块为其他两个模块奠定了基础。logback-classic模块可以与log4j的显着改进版本同化。此外,经典的logback原生实现了SLF4J API,因此您可以轻松地在logback和其他日志框架(例如log4j或java.util.logging(JUL))之间来回切换。
logback-access模块与Servlet容器(例如Tomcat和Jetty)集成,以提供HTTP访问日志功能。请注意,您可以轻松地在logback-core之上构建自己的模块。
pom文件配置
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.zzh.log</groupId>
<artifactId>log</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-complier</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.21</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
</dependencies>
</project>
logback配置解读
先了解几个概念logger
、appender
、encoder
logger:作为日志的记录器,把它关联到应用的对应的context后,主要用于存放日志对象,也可以定义日志类型、级别。
appender:主要用于指定日志输出的目的地,目的地可以是控制台、文件等。
encoder:负责把事件转换成字符串,格式化日志信息的输出。
配置实例
<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan = "true" scanPerod = "10 seconds" debug = "false">
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- 日志输出编码 -->
<Encoding>UTF-8</Encoding>
<encoder>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
</pattern>
</encoder>
</appender>
<!-- 按照每天生成日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<Encoding>UTF-8</Encoding>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>myApp.log.%d{yyyy-MM-dd}.log</FileNamePattern>
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
</pattern>
</encoder>
<!--日志文件最大的大小-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>10MB</MaxFileSize>
</triggeringPolicy>
</appender>
<logger name = "com.zzh.LogBackLogger" level="error" additivity="false">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</logger>
<!-- 日志输出级别 -->
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
</configuration>
-
根节点<configuration>,其下包含以下三个属性
scan:此属性为true时,配置文件如果发生改变,将会重新加载,默认值为true。
scanPeriod:设置监测配置文件是否有修改的时间间隔,当scan为true时,该属性生效。
debug:当此属性为true时,将打印出logback内部日志信息,实时查看logback运行状态。
-
子节点<appender>用于配置写日志的组件,有两个必要属性:name用于指定appender的名称,每一个appender的名称唯一,class指定appender的全限定名。appender有三种类型,分别是:ConsoleAppender、FileAppender、RollingFileAppender,ConsoleAppender是把日志输出到控制台,FileAppender是把日志添加到文件,而RollingFileAppender是把日志输出到文件并且定期进行清理。
-
子节点<logger>用于设置某一个包或具体的某一个类的日志打印级别、以及指定<appender>。<logger>有三个属性:name用来指定受此logger约束的某一个包或某一个具体的类;level用来设置打印级别,大小写无关;addtivity用于设置是否向上一级logger传递打印信息。也可以用<appender-ref>指定相应的appender。
-
子节点<root>是所有logger的上级,只有一个level属性,level属性用来设置打印级别,除了普通的打印级别外,还支持ALL和OFF,不能设置为INHERITED或者同义词NULL。默认是DEBUG。
<root>和<logger>的关系,<root>本质上也是一个logger,是所有的logger的父级,可以通过addtivity属性设为false。
参考链接:https://blog.csdn.net/ryelqy/article/details/81532481
网友评论