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