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