首页 > 其他分享 >Logback的使用

Logback的使用

时间:2022-11-16 18:35:07浏览次数:52  
标签:log Logback slf4j 使用 日志 logback log4j

鉴于之前使用Log4j遇到了严重的漏洞问题:Apche log4j远程代码执行漏洞,漏洞编码:RCE(CVE-2021-44228),所以更换为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>

查找配置文件方式:

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);

标签:log,Logback,slf4j,使用,日志,logback,log4j
From: https://www.cnblogs.com/rollcat/p/16896604.html

相关文章

  • mysql学习(9):联合索引和多个单列索引的使用区别详解
    前言为了提高数据库的查询效率,建索引是最常用的手段。那么问题来了,如果查询条件为2个及以上,我们是创建多个单列索引好呢,还是建一个联合索引比较好?正文我们首先来建一张表,......
  • 使用 Web 钩子将 Gitea 消息推送到飞书机器人
    Web钩子(Webhook)是一种基于HTTP的回调函数,可实现轻量级的事件驱动通信。在Gitea当中有一个很常见的Webhook应用场景便是持续集成:当你从本地推送代码到Gitea仓库后......
  • 拦截器的使用
    1:拦截器(Interceptor) 拦截器是Struts2最强大的特性之一,它是一种可以让用户在Action执行之前和Result执行之后进行一些功能处理的机制。 图中示意了三个拦截器,Interceptor......
  • TestCenter使用
    【安全测试】使用SPIRENTTESTCENTER导入.PCAP文件创建流模块2017-12-19谢丽pcap导入数据库, pcap文件解析, SpirentTestCenter导入.pcap文件, 读取pcap文件  阅......
  • spring boot 使用webflux全局拦截,类似404错误
    背景要拦截类似404这种返回,添加日志返回码。所以要全局拦截404或者500返回实现1.定义拦截类packagecom.cmb.zhaohu.WebLogCollect.advice;importjava.util.LinkedH......
  • Java: Seata实战部署使用
    目录背景基础概念TC(TransactionCoordinator)-事务协调者TM(TransactionManager)-事务管理器RM(ResourceManager)-资源管理器tx-service-group-事务分组vgro......
  • vue使用qrcodejs2进行二维码显示以及下载
    1、安装qrcodejs2npminstallqrcodejs2/yarnaddqrcodejs22、引入qrcodejs2importQRCodejsfrom'qrcodejs2';3、使用html:<divref="locatorQRCodeRef"></......
  • OSI七层协议之传输层,应用层,socket模块简介,socket模块基本使用,黏包问题
    目录OSI七层协议之传输层,应用层,socket模块简介,socket模块基本使用,黏包问题今日内容概要今日内容详细传输层之TCP与UDP协议应用层socket模块socket代码简介代码优化半连接池......
  • flowable使用
    1.先导入依赖<dependency><groupId>org.flowable</groupId><artifactId>flowable-spring-boot-starter</artifactId><version>......
  • 解决Vue中使用history路由模式出现404的问题
    背景vue中默认的路由模式是hash,会出现烦人的符号#,如http://127.0.0.1/#/。改为history模式可以解决这个问题,但是有一个坑是:强刷新、回退等操作会出现404。Vue改用History......