SpringBoot日志管理

一.Logback

SpringBoot默认使用Logback组件作为日志管理。 Logbacklog4j创始人设计的一个开源日志组件。在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会自动进行最小化配置。 

我们在项目中即可看到日志文件 

二.打印自定义日志

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")
    @ResponseBody
    public 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安全漏洞。

相关推荐

  1. SpringBoot总结-配置管理日志管理

    2024-05-02 08:08:01       39 阅读
  2. 基于SpringBoot 实现指标监控及日志管理

    2024-05-02 08:08:01       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-02 08:08:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-02 08:08:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-02 08:08:01       82 阅读
  4. Python语言-面向对象

    2024-05-02 08:08:01       91 阅读

热门阅读

  1. string类

    string类

    2024-05-02 08:08:01      31 阅读
  2. MySQL中的锁

    2024-05-02 08:08:01       29 阅读
  3. MATLAB初学者入门(30)—— 数据库开发

    2024-05-02 08:08:01       30 阅读
  4. lxml 在 Windows 7上安装无法安装怎么办?

    2024-05-02 08:08:01       31 阅读
  5. Git知识点汇总表格总结

    2024-05-02 08:08:01       27 阅读
  6. Kylin Linux V10 SP1 aarch64部署k8s集群严重bug

    2024-05-02 08:08:01       30 阅读
  7. 探索密码学的奥秘:保护信息安全的基石与挑战

    2024-05-02 08:08:01       35 阅读
  8. iOS Airpods Pro耳机模式下视频无法播放

    2024-05-02 08:08:01       29 阅读
  9. STM32 CAN开发步骤

    2024-05-02 08:08:01       34 阅读