Logback的使用

简介

Logback是一个Java开源日志框架,以继承改善log4j为目的而生,是log4j创始人设计的另一个开源日志组件。
它声称有极佳的性能,占用空间更小,且提供其他日志系统缺失但很有用的特性。

Logback是一个日志实现框架,实现自SLF4j(Simple Logging Facade for Java),SLF4J 即:Java的简单日志门面,它不是具体的解决方案,它只服务于各种各样的日志系统。
SLF4J最常用的日志实现框架是:log4j、logback。一般有:slf4j + log4j、slf4j + log4j2、slf4j + logback三种日志组合。

SLF4J与其它日志组件调用关系图如下:
SLF4J与其它日志组件调用关系图

Logback使用

logback 分为以下三个模块:

  • logback-core:其它两个模块的基础模块
  • logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging
  • logback-access:访问模块与Servlet容器集成提供通过Http来访问日志的功能

如果是Spring Boot项目的话则默认情况下,Spring Boot会用Logback来记录日志,并用INFO级别输出到控制台

日志级别(Log level):用来控制日志信息的输出,从高到低分为共分为七个等级:

  • off 最高等级,用于关闭所有日志记录。
  • fatal 指出每个严重的错误事件将会导致应用程序的退出。
  • error 指出虽然发生错误事件,但仍然不影响系统的继续运行。
  • warm 表明会出现潜在的错误情形。
  • info 一般和在粗粒度级别上,强调应用程序的运行全程。
  • debug 一般用于细粒度级别上,对调试应用程序非常有帮助。
  • all 最低等级,用于打开所有日志记录。

Maven引入:

注意:spring-boot-starter-parent里已集成logback,可直接使用

<!--
  引入以下依赖,会自动引入以下jar
  logback-classic.x.x.x.jar
  logback-core.x.x.x.jar
  slf4j-api-x.x.x.jar
-->
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.3</version>
</dependency>

Jar包引入:

JavaSE项目/Plugin项目使用此方式引入

logback所需jar包

查找配置文件方式:

1.logback首先会试着查找logback.groovy文件
2.当没有找到时,继续试着查找logback-test.xml文件
3.当没有找到时,继续试着查找logback.xml文件
4.如果仍然没有找到,则使用默认配置(打印到控制台)

logback.xml配置:

Web项目:在工程resources目录下创建logback.xml
JavaSE项目/Plugin项目:在src目录下创建logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
    <property name="LOG_HOME" value="D:/Siemens/logs"/>

	<!-- Console -->
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度,%msg:日志消息,%n是换行符-->
			<pattern>%d[yyyy-MM-dd HH:mm:ss.SSS] [%thread] [%-5level] - Class: %logger{50} Method: %method Line: %line%n%msg%n</pattern>
		</encoder>
	</appender>
	
	<!-- File -->
	<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                        <!--日志文件输出的文件名-->
                        <FileNamePattern>${LOG_HOME}/customer_module_%d{yyyyMMdd}.log</FileNamePattern>
                        <!--日志文件保留天数-->
                        <MaxHistory>30</MaxHistory>
                </rollingPolicy>
        
		<encoder>
		 	<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
			<pattern>%d[yyyy-MM-dd HH:mm:ss.SSS] [%thread] [%-5level] - Class: %logger{50} Method: %method Line: %line%n%msg%n</pattern>
		</encoder>
		
	        <!--日志文件最大的大小-->
                <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
                        <MaxFileSize>10MB</MaxFileSize>
                </triggeringPolicy>
	</appender> 

	<!-- 日志输出级别 -->
	<root level="INFO">
		<appender-ref ref="STDOUT"/>
		<appender-ref ref="FILE"/>
	</root>
	
</configuration>

初始化Logger:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

private static final Logger log = LoggerFactory.getLogger(YourClass.class);

常用log打印:

// 信息
log.info("XXXXXX:{}", Object);

// 警告
log.warn("XXXXXX:{}", Object);

// 错误
log.error("XXXXXX:{}", Object);

// 异常信息
log.error("error_message:", e);
posted @ 2022-11-16 18:23  End_Unripe  阅读(141)  评论(0编辑  收藏  举报