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: 12306servlet: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),其他的請自行添加和配置。