一.Logback
SpringBoot默认使用Logback组件作为日志管理。 Logback是log4j创始人设计的一个开源日志组件。在SpringBoot中已经整合了Logback的依赖,所以我们不需要额外的添加其他依赖,这些日志格式在我们开发过程中是不需要开发人员自己写的,直接cv拿过来用即可。
<?xml version="1.0" encoding="UTF-8" ?>
<configuration><!--定义日志文件的存储地址--><property name="LOG_HOME" value="${catalina.base}/logs/"/><!-- 控制台输出 --><appender name="Stdout" class="ch.qos.logback.core.ConsoleAppender"><!-- 日志输出编码 --><layout class="ch.qos.logback.classic.PatternLayout"><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--><pattern>%d{MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern></layout></appender><!-- 按照每天生成日志文件 --><appender name="RollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--日志文件输出的文件名--><FileNamePattern>${LOG_HOME}/server.%d{yy99-MM-dd}.log</FileNamePattern><MaxHistory>30</MaxHistory></rollingPolicy><layout class="ch.qos.logback.classic.PatternLayout"><!--格式化输出:%d表示时间,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--><pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern></layout><!--日志文件最大的大小--><triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><MaxFileSize>10MB</MaxFileSize></triggeringPolicy></appender><!-- 日志输出级别 --><root level="info"><appender-ref ref="Stdout"/><appender-ref ref="RollingFile"/></root>
</configuration>
注:Logback配置文件名为logback-test.xml或logback.xml,如果classpath下没有这两个文件,LogBack会自动进行最小化配置。
我们在项目中即可看到日志文件
二.打印自定义日志
java">package spring.springlogback.Controller;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;@Controller
@SuppressWarnings("all")
public class ControllerLogback {private final static Logger logger = LoggerFactory.getLogger(ControllerLogback.class);@RequestMapping("/logback")@ResponseBodypublic String showInfologback() {logger.info("记录日志");return "logback";}
}
#屏蔽org包中的日志输出
logging.level.org=off
我们可以看到与org有关的日志就被屏蔽了!!!
三.Log4j2安全漏洞
这是我找的有关日志的相关知识供大家了解!
2021年12月,Log4j2被爆出了极其严重的安全漏洞,攻击者可以让记录的日志包含指定字符串,从而执行任意程序。很多大型网站,如百度等都是此次Log4j漏洞的受害者,很多互联网企业连夜做了应急措施。
Log4j2.0到2.14.1全部存在此漏洞,危害范围极其广泛,Log4j2.15.0-rc1中修复了这个 bug。
因Log4j2漏洞的反复无常,导致某些公司已经切换到Logback来记录日志,但在Log4j2漏洞爆出后,Logback也爆出漏洞:在Logback1.2.7及之前的版本中,具有编辑配置文件权限的攻击者可以制作恶意配置,允许从LDAP服务器加载、执行任意代码。
解决方案为将Logback升级到安全版本:Logback1.2.9+
SpringBoot2.6.2以上的Logback版本已经升到了1.2.9,Log4j2的版本也升到了2.17.0,所以我们使用SpringBoot2.6.2以上版本的SpringBoot时,无需担心Log4j2和Logback安全漏洞。