springboot集成日志打印

<!-- 设置日志文件的基础目录 -->
<property name="LOG_DIR" value="/opt/logs/mqtt-app"/>

<property name="log.maxHistory" value="15"/>
<property name="log.maxFileSize" value="30MB"/>

<!-- 定义控制台日志输出的 Appender -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <encoder charset="UTF-8">
        <!-- 使用 PatternLayout 定义控制台输出格式 -->
        <pattern>
            %cyan(%d{yyyy-MM-dd HH:mm:ss.SSS}) [%thread] %highlight(%-5level) %yellow(%logger{36}) - %msg%n
        </pattern>
    </encoder>
</appender>

<!-- 定义 DEBUG 等级日志的滚动文件 Appender -->
<appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOG_DIR}/debug/debug.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${LOG_DIR}/debug/debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>${log.maxFileSize}</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
        <maxHistory>${log.maxHistory}</maxHistory>
    </rollingPolicy>
    <encoder charset="UTF-8">
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
        <level>DEBUG</level>
        <onMatch>ACCEPT</onMatch>
        <onMismatch>DENY</onMismatch>
    </filter>
</appender>

<!-- 定义 ERROR 等级日志的滚动文件 Appender -->
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOG_DIR}/error/error.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${LOG_DIR}/error/error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>${log.maxFileSize}</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
        <maxHistory>${log.maxHistory}</maxHistory>
    </rollingPolicy>
    <encoder charset="UTF-8">
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
        <level>ERROR</level>
        <onMatch>ACCEPT</onMatch>
        <onMismatch>DENY</onMismatch>
    </filter>
</appender>

<!-- 定义 WARN 等级日志的滚动文件 Appender -->
<appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOG_DIR}/warn/warn.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${LOG_DIR}/warn/warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>${log.maxFileSize}</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
        <maxHistory>${log.maxHistory}</maxHistory>
    </rollingPolicy>
    <encoder charset="UTF-8">
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
        <level>WARN</level>
        <onMatch>ACCEPT</onMatch>
        <onMismatch>DENY</onMismatch>
    </filter>
</appender>

<!-- 定义 INFO 等级日志的滚动文件 Appender -->
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOG_DIR}/info/info.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${LOG_DIR}/info/info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>${log.maxFileSize}</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
        <maxHistory>${log.maxHistory}</maxHistory>
    </rollingPolicy>
    <encoder charset="UTF-8">
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
        <level>INFO</level>
        <onMatch>ACCEPT</onMatch>
        <onMismatch>DENY</onMismatch>
    </filter>
</appender>

<!-- 配置 DEBUG 等级日志的 Logger -->
<logger name="com.example" level="DEBUG" additivity="false">
    <appender-ref ref="DEBUG_FILE"/>
</logger>

<!-- 配置 ERROR 等级日志的 Logger -->
<logger name="com.example" level="ERROR" additivity="false">
    <appender-ref ref="ERROR_FILE"/>
</logger>

<!-- 配置 WARN 等级日志的 Logger -->
<logger name="com.example" level="WARN" additivity="false">
    <appender-ref ref="WARN_FILE"/>
</logger>

<!-- 配置 INFO 等级日志的 Logger -->
<logger name="com.example" level="INFO" additivity="false">
    <appender-ref ref="INFO_FILE"/>
</logger>

<!-- 配置根 Logger,默认的日志输出级别和 Appender -->
<root level="INFO">
    <appender-ref ref="CONSOLE"/>
    <appender-ref ref="INFO_FILE"/>
    <appender-ref ref="WARN_FILE"/>
    <appender-ref ref="ERROR_FILE"/>
    <appender-ref ref="DEBUG_FILE"/>
</root>

这是一个使用 Logback 作为日志框架的配置文件,用于定义不同级别的日志输出和日志文件滚动策略。以下是对这个配置文件的分析:

  1. 日志文件基础目录:

    • <property name="LOG_DIR" value="/opt/logs/mqtt-app"/>
    • 定义了日志文件的基础目录,所有的日志文件都将保存在这个目录下。
  2. 日志文件滚动策略配置:

    • <property name="log.maxHistory" value="15"/>
    • <property name="log.maxFileSize" value="30MB"/>
    • 设置了日志文件的最大历史备份数量和单个日志文件的最大大小。
  3. 控制台日志输出:

    • 定义了一个名为 CONSOLE 的日志 Appender,用于将日志输出到控制台。
    • 使用了 ch.qos.logback.core.ConsoleAppender 类。
    • 使用了 UTF-8 编码。
    • 定义了控制台输出的格式,包括日期时间、线程名、日志级别、Logger 名称和日志消息。
  4. 不同级别的滚动文件 Appender:

    • 分别定义了 DEBUG_FILEERROR_FILEWARN_FILEINFO_FILE 四个滚动文件的 Appender,用于将不同级别的日志输出到文件中。
    • 每个 Appender 配置了文件路径、滚动策略、编码、格式和级别过滤器。
  5. Logger 配置:

    • 配置了四个 Logger,分别为 com.example,并分别设置了不同的日志级别和 Appender 引用。
    • additivity="false" 表示不传播日志消息到父 Logger。
  6. 根 Logger 配置:

    • 配置了根 Logger,设置了默认的日志输出级别为 INFO,以及引用了不同级别的 Appender。

通过这个配置文件,你可以实现将不同级别的日志输出到不同的日志文件中,并使用日志文件滚动策略来管理日志文件的数量和大小。如果需要对不同的包或类设置不同的日志级别,可以通过添加类似的 Logger 配置来实现。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值