Logback日志框架使用&&日志文件的滚动策略__SpringBoot

Logback 是 Log4j 的作者的另一个开源日志组件,与 Log4j 相比,Logback 重新了内核,使它的性能提升了很多,大约是 Log4j 的 10 倍,同时占用更小的内存,并且完整的实现了 SLF4J API 是你可以很方便的切换日志框架。

SpringBoot 默认集成了 Logback,可以开箱即用,对于中小型项目,个人更倾向于推荐使用 Logback。

使用演示

pom.xml  无需引入额外依赖

logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <!-- 定义日志文件的输出路径和名称 -->
    <property name="LOG_PATH" value="logs" />
    <property name="LOG_FILE" value="for_log.log" />

    <!-- 定义滚动策略 -->
    <appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_PATH}/${LOG_FILE}</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/${LOG_FILE}-%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>7</maxHistory> <!-- 保留7天的历史日志文件数量 -->
            <totalSizeCap>1GB</totalSizeCap> <!-- 总日志文件大小限制 -->
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="info">
        <!-- 将日志输出到文件 -->
        <appender-ref ref="fileAppender" />
        <!-- 将日志输出到控制台 -->
        <appender-ref ref="consoleAppender" />
    </root>

</configuration>

consoleAppender标签是用以恢复控制台日志输出的(俺也不清楚为啥配置滚动策略后,控制台默认的日志输出没有了,需要手动配置恢复|||^_^  )

需要注意的是:这样配置时(文件日志+控制台日志),日志输出需要占据服务器更多的资源开销,需要节省资源开销时,可以注释关于控制台输出的配置,关闭控制台日志输出。

 

    private static ThreadLocal<SimpleDateFormat> dateFormatThreadLocal = ThreadLocal.withInitial(() -> new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));

    public Object log() {
        String str = "Log King " + dateFormatThreadLocal.get().format(System.currentTimeMillis());
        log.info("I'm coming~ ----> \n{}", str);
        return null;
    }

写个接口来输出日志,使用API调用工具触发

可以观察到在项目的根路径下,新建了一个logs目录,并生成了指定名的日志文件,并且在调用过程中,控制台输出的日志和日志文件的内容是一致的,over!

posted @ 2024-03-22 12:49  Ashe|||^_^  阅读(354)  评论(0编辑  收藏  举报