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

打印 上一主题 下一主题

主题 998|帖子 998|积分 2994

Background/Requirement

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

Technical Solution


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

在你的 Java 类中,使用 Lombok 提供的 @Slf4j 注解来简化日志操作。例如:
  1. import lombok.extern.slf4j.Slf4j;
  2. @Slf4j
  3. public class MyService {
  4.     public void doSomething() {
  5.         log.info("This is an info message");
  6.         log.debug("This is a debug message");
  7.     }
  8. }
复制代码
2.在项目的 src/main/resources 目次下创建或修改 logback-{env}.xml 文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration debug="false">
  3.     <!-- Powered by https://zhengkai.blog.csdn.net/ -->
  4.     <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
  5.     <property name="LOG_HOME" value="D:\Workspace\Project\ServerRemoteExecution\logs"/>
  6.     <property name="APP_ENV" value="dev"/>
  7.     <property name="LOG_NAME" value="SRE-AUDIT"/>
  8.     <!-- 控制台输出 -->
  9.     <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  10.         <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  11.             <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
  12.             <!--            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %boldMagenta(%-5level %logger{50}) : %msg%n</pattern>-->
  13.             <pattern>%d{yyyy-MM-dd HH:mm:ss:SS} %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{50}) -
  14.                 %n%cyan(%msg%n)
  15.             </pattern>
  16.         </encoder>
  17.     </appender>
  18.     <!-- 按照每天生成日志文件 -->
  19.     <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
  20.         <file>${LOG_HOME}/${LOG_NAME}-${APP_ENV}.log</file>
  21.         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  22.             <!--日志文件输出的文件名-->
  23.             <FileNamePattern>${LOG_HOME}/${LOG_NAME}-${APP_ENV}_%d{yyyy-MM-dd}.log</FileNamePattern>
  24.             <!--日志文件保留天数-->
  25.             <MaxHistory>90</MaxHistory>
  26.         </rollingPolicy>
  27.         <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  28.             <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
  29.             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
  30.         </encoder>
  31.         <!--日志文件最大的大小-->
  32.         <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
  33.             <MaxFileSize>50MB</MaxFileSize>
  34.         </triggeringPolicy>
  35.     </appender>
  36.     <!-- 日志输出级别 -->
  37.     <root level="INFO">
  38.         <appender-ref ref="STDOUT"/>
  39.         <appender-ref ref="FILE"/>
  40.     </root>
  41. </configuration>
复制代码
3.确保你的application-{env}文件中正确引用这个logging config

  1. server:
  2.   port: 12306
  3.   servlet:
  4.       context-path: /sre
  5. aes:
  6.     secret-key: SRE12306
  7. logging:
  8.   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),其他的请自行添加和设置。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用户云卷云舒

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表