环境:
开发工具:IntelliJ IDEA 2022.3.3
JAVA:jdk1.8
SpringBoot:2.6.13
步骤:
创建一个springboot项目或者随便找一个现成的springboot项目也行,日志写入文件只需要2个步骤。
第一:新建一个配置文件:LogDirConfig.java
package com.sky.demo1.config;
import ch.qos.logback.core.PropertyDefinerBase;
import org.springframework.boot.system.ApplicationHome;
import org.springframework.stereotype.Component;
import java.io.File;
/**
* 日志配置
*/
@Component
public class LogDirConfig extends PropertyDefinerBase {
/**
* 日志存放位置
*/
private String LOG_HOME;
/**
* 获取jar包的位置
* 更新logback.xml文件LOG_HOME的包路径
*
* @return 1
*/
@Override
public String getPropertyValue() {
ApplicationHome h = new ApplicationHome(getClass());
File jarF = h.getSource();
this.LOG_HOME = jarF.getParentFile().toString();
System.out.println(LOG_HOME);
return this.LOG_HOME;
}
}
第二:新建一个logback.xml,必须放在resources下面。其中一定要注意修改LogDirConfig.java的路径:com.sky.demo1.config.LogDirConfig。
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="false" scanPeriod="60 seconds">
<!-- 日志文件主目录,也就是日志配置文件的路径 这里记得替换 -->
<define name="LOG_HOME" class="com.sky.demo1.config.LogDirConfig"/>
<!-- 默认配置 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!-- 配置控制台(Console) -->
<include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
<!-- 配置日志文件(File) -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 设置策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 日志文件路径:这里%d{yyyyMMdd}表示按天分类日志 -->
<FileNamePattern>${LOG_HOME}/log/%d{yyyy-MM-dd}/%d{yyyy-MM-dd}_%i.log</FileNamePattern>
<!-- 启用日志清理 -->
<cleanHistoryOnStart>true</cleanHistoryOnStart>
<!-- 日志保留天数 -->
<maxHistory>30</maxHistory>
<!-- 日志文件最大的大小 -->
<maxFileSize>30720KB</maxFileSize>
</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>
<!-- 或者使用默认配置 -->
<!-- <pattern>${FILE_LOG_PATTERN}</pattern> -->
<charset>utf8</charset>
</encoder>
</appender>
<appender name="ERRROLLLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 设置策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 日志文件路径:这里%d{yyyyMMdd}表示按天分类日志 -->
<FileNamePattern>${LOG_HOME}/log/%d{yyyy-MM-dd}/%d{yyyy-MM-dd}_error_%i.log</FileNamePattern>
<!-- 启用日志清理 -->
<cleanHistoryOnStart>true</cleanHistoryOnStart>
<!-- 日志保留天数 -->
<maxHistory>30</maxHistory>
<!-- 日志文件最大的大小 -->
<maxFileSize>30720KB</maxFileSize>
</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>
<!-- 或者使用默认配置 -->
<!-- <pattern>${FILE_LOG_PATTERN}</pattern> -->
<charset>utf8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="WARNROLLLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 设置策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 日志文件路径:这里%d{yyyyMMdd}表示按天分类日志 -->
<FileNamePattern>${LOG_HOME}/log/%d{yyyy-MM-dd}/%d{yyyy-MM-dd}_warn_%i.log</FileNamePattern>
<!-- 启用日志清理 -->
<cleanHistoryOnStart>true</cleanHistoryOnStart>
<!-- 日志保留天数 -->
<maxHistory>30</maxHistory>
<!-- 日志文件最大的大小 -->
<maxFileSize>30720KB</maxFileSize>
</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>
<!-- 或者使用默认配置 -->
<!-- <pattern>${FILE_LOG_PATTERN}</pattern> -->
<charset>utf8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- root节点 全局日志级别,用来指定最基础的日志输出级别 -->
<root level="INFO">
<appender-ref ref="FILE"/>
<appender-ref ref="CONSOLE"/>
<appender-ref ref="WARNROLLLOG"/>
<appender-ref ref="ERRROLLLOG"/>
</root>
</configuration>
最后运行springboot项目即可生成对应的日志文件。这里是生成才和jar包同等目录下。这里是用idea运行的,也就是target目录下,附图:
如果有什么问题,欢迎大佬指正。
最后如果对你有一点点帮助,麻烦支持一下。
全国寄快递5元起,电影票8.8折。更多优惠微信关注公众号:【折价寄件】
感谢阅读!!!!