SpringBoot3+Lombok如何配置logback输出日志到文件

发布于:2025-03-14 ⋅ 阅读:(19) ⋅ 点赞:(0)

Background/Requirement

SpringBoot3+Lombok如何配置logback输出日志到文件,因为我需要对这些日志进行输出,控制台输出和文件输出,文件输出是为了更好的作为AuditLog且支持滚动式备份,每天一个文件。

Technical Solution

1.确保你使用了Lombok且使用 Lombok 的 @Slf4j 注解

在你的 Java 类中,使用 Lombok 提供的 @Slf4j 注解来简化日志操作。例如:

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class MyService {
    public void doSomething() {
        log.info("This is an info message");
        log.debug("This is a debug message");
    }
}

2.在项目的 src/main/resources 目录下创建或修改 logback-{env}.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
    <!-- Powered by https://zhengkai.blog.csdn.net/ -->
    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
    <property name="LOG_HOME" value="D:\Workspace\Project\ServerRemoteExecution\logs"/>
    <property name="APP_ENV" value="dev"/>
    <property name="LOG_NAME" value="SRE-AUDIT"/>
    <!-- 控制台输出 -->
    <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] %boldMagenta(%-5level %logger{50}) : %msg%n</pattern>-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss:SS} %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{50}) -
                %n%cyan(%msg%n)
            </pattern>
        </encoder>
    </appender>
    <!-- 按照每天生成日志文件 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_HOME}/${LOG_NAME}-${APP_ENV}.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
            <FileNamePattern>${LOG_HOME}/${LOG_NAME}-${APP_ENV}_%d{yyyy-MM-dd}.log</FileNamePattern>
            <!--日志文件保留天数-->
            <MaxHistory>90</MaxHistory>
        </rollingPolicy>
        <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 %logger{50} - %msg%n</pattern>
        </encoder>
        <!--日志文件最大的大小-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>50MB</MaxFileSize>
        </triggeringPolicy>
    </appender>

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

3.确保你的application-{env}文件中正确引用这个logging config

server:
  port: 12306
  servlet:
      context-path: /sre
aes:
    secret-key: SRE12306
logging:
  config: classpath:logback-dev.xml

4.启动并检查是否生效

如果你的项目配置不正确,或者日志路径无效(或没权限),则无法启动,请注意!!!

 5.开源项目参考

如果你还不知道怎么配置,可以参考我的开源项目 Server Remote Execution(SRE)

https://github.com/moshowgame/ServerRemoteExecution/https://github.com/moshowgame/ServerRemoteExecution/

ServerRemoteExecution: Server Remote Execution(SRE),基于SpringBoot3的服务器远程维护工具,支持远程目录查看,专业日志目录查看器模式,文本浏览器查看文件,下载文件等操作,也支持远程执行白名单的powershell命令,web容器为Undertow(非默认tomcat),其他的请自行添加和配置。