每天一日志


一、pom.xml依赖包

注意:springboot项目默认集成了logback,不需要添加任何依赖。

二、配置文件:logback-spring.xml

放在resources目录下,Spring框架会自动进行扫描。
新建一个logback-spring.xml格式的文件名, 复制下面内容粘贴即可。

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

    <!-- 日志文件路径 -->
    <property name="logPath" value="./logInfo/"></property>

    <!-- 日志文件名称 -->
    <property name="logName" value="logInfo"></property>

    <!--控制台打印日志-->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level -&#45;&#45; [%thread] %logger Line:%-3L - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!-- debug 日志文件 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 当日文件:路径、文档名、文档输出格式 -->
        <file>${logPath}${logName}.log</file>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level --- [%thread] %logger Line:%-3L - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>

        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志归档:路径名称 -->
            <fileNamePattern>${logPath}${logName}-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!--日志文件最大的大小:rollover daily and when the file reaches 10 MegaBytes -->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文档保留天数-->
            <maxHistory>15</maxHistory>
        </rollingPolicy>
    </appender>

    <!-- 开发、测试环境,指定不同包下不同的日志等级 -->
    <springProfile name="dev,test">
        <logger name="org.springframework.web" level="ERROR"/>
        <logger name="org.springboot.sample" level="ERROR"/>
        <logger name="com.ipage.work" level="INFO"/>
    </springProfile>

    <!-- 生产环境 -->
    <springProfile name="prod">
        <logger name="org.springframework.web" level="ERROR"/>
        <logger name="org.springboot.sample" level="ERROR"/>
        <logger name="com.ipage.work" level="INFO"/>
    </springProfile>

    <!-- 基础日志等级 -->
    <root level="INFO">
        <appender-ref ref="FILE"/> <!-- 输出到文件 -->
        <appender-ref ref="CONSOLE"/> <!-- 输出到控制台 -->
    </root>-->

</configuration>

2.1 日志分级别输出

logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml"/>
    <include resource="com/zyc/datamonitor/logback/monitor.xml" optional="true"/>

    <property name="FILE_PATH_ERROR" value="/logs/log/logback-error.log"/>
    <property name="FILE_PATH_WARN" value="/logs/log/logback-warn.log"/>
    <property name="FILE_PATH_INFO" value="/logs/log/logback-info.log"/>
    <property name="FILE_PATH_DEBUG" value="/logs/log/logback-debug.log"/>
    <!-- 控制台输出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%thread] %logger{50} - %msg%n
            </pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!-- 按照每天生成日志文件 -->
    <appender name="FILE-ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--日志文件输出的文件名 -->
        <File>${FILE_PATH_ERROR}</File>
        <!--滚动日志 基于时间和文件大小-->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- 滚动日志文件保存格式 -->
            <FileNamePattern>${FILE_PATH_ERROR}.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
            <MaxFileSize>60MB</MaxFileSize>
            <totalSizeCap>5GB</totalSizeCap>
            <MaxHistory>10</MaxHistory>
        </rollingPolicy>
        <!-- 按临界值过滤日志:低于ERROR以下级别被抛弃 -->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <encoder>
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%thread] %logger{50} - %msg%n
            </pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <appender name="FILE-INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--日志文件输出的文件名 -->
        <File>${FILE_PATH_INFO}</File>
        <!--滚动日志 基于时间和文件大小-->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- 滚动日志文件保存格式 -->
            <FileNamePattern>${FILE_PATH_INFO}.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
            <MaxFileSize>60MB</MaxFileSize>
            <totalSizeCap>5GB</totalSizeCap>
            <MaxHistory>10</MaxHistory>
        </rollingPolicy>

        <!-- 按临界值过滤日志:低于INFO以下级别被抛弃 -->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
        <encoder>
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%thread] %logger{50} - %msg%n
            </pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <appender name="FILE-WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--日志文件输出的文件名 -->
        <File>${FILE_PATH_WARN}</File>
        <!--滚动日志 基于时间和文件大小-->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- 滚动日志文件保存格式 -->
            <FileNamePattern>${FILE_PATH_WARN}.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
            <MaxFileSize>60MB</MaxFileSize>
            <totalSizeCap>5GB</totalSizeCap>
            <MaxHistory>10</MaxHistory>
        </rollingPolicy>
        <!-- 按临界值过滤日志:低于WARN以下级别被抛弃 -->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>WARN</level>
        </filter>
        <!-- 按指定规则过滤日志 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>DENY</onMatch><!-- ERROR级别被抛弃 -->
            <onMismatch>NEUTRAL</onMismatch><!-- 其它级别继续处理 -->
        </filter>
        <encoder>
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%thread] %logger{50} - %msg%n
            </pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <appender name="FILE-DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--日志文件输出的文件名 -->
        <File>${FILE_PATH_DEBUG}</File>
        <!--滚动日志 基于时间和文件大小-->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- 滚动日志文件保存格式 -->
            <FileNamePattern>${FILE_PATH_DEBUG}.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
            <MaxFileSize>60MB</MaxFileSize>
            <totalSizeCap>5GB</totalSizeCap>
            <MaxHistory>10</MaxHistory>
        </rollingPolicy>
        <!-- 按临界值过滤日志:低于INFO以下级别被抛弃 -->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>DEBUG</level>
        </filter>
        <!-- 不过滤日志 -->
        <encoder>
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%thread] %logger{50} - %msg%n
            </pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>
    <!-- 若是additivity设为true,则子Logger不止会在自己的appender里输出,还会在root的logger的appender里输出 -->
    <springProfile name="test,dev">
        <logger name="org.springframework" level="INFO" additivity="false">
            <appender-ref ref="STDOUT"/>
            <appender-ref ref="FILE-ERROR"/>
            <appender-ref ref="FILE-WARN"/>
            <appender-ref ref="FILE-INFO"/>
            <appender-ref ref="FILE-DEBUG"/>
        </logger>
        <logger name="org.springframework" level="INFO" additivity="false">
            <appender-ref ref="STDOUT"/>
            <appender-ref ref="FILE-ERROR"/>
            <appender-ref ref="FILE-WARN"/>
            <appender-ref ref="FILE-INFO"/>
            <appender-ref ref="FILE-DEBUG"/>
        </logger>
        <logger name="com.netflix" level="INFO" additivity="false">
            <appender-ref ref="STDOUT"/>
            <appender-ref ref="FILE-ERROR"/>
            <appender-ref ref="FILE-WARN"/>
            <appender-ref ref="FILE-INFO"/>
            <appender-ref ref="FILE-DEBUG"/>
        </logger>
        <logger name="com.demo" level="INFO" additivity="false">
            <appender-ref ref="STDOUT"/>
            <appender-ref ref="FILE-ERROR"/>
            <appender-ref ref="FILE-WARN"/>
            <appender-ref ref="FILE-INFO"/>
            <appender-ref ref="FILE-DEBUG"/>
        </logger>
        <logger name="java.sql" level="DEBUG" additivity="false">
            <appender-ref ref="STDOUT"/>
            <appender-ref ref="FILE-ERROR"/>
            <appender-ref ref="FILE-WARN"/>
            <appender-ref ref="FILE-INFO"/>
            <appender-ref ref="FILE-DEBUG"/>
        </logger>

        <!-- 日志输出级别 -->
        <root level="INFO">
            <appender-ref ref="STDOUT"/>
            <appender-ref ref="FILE-ERROR"/>
            <appender-ref ref="FILE-WARN"/>
            <appender-ref ref="FILE-INFO"/>
            <appender-ref ref="FILE-DEBUG"/>
        </root>
    </springProfile>

    <springProfile name="prod,default">
        <logger name="org.springframework" level="WARN" additivity="false">
            <appender-ref ref="FILE-ERROR"/>
            <appender-ref ref="FILE-WARN"/>
            <appender-ref ref="FILE-INFO"/>
        </logger>
        <logger name="com.netflix" level="WARN" additivity="false">
            <appender-ref ref="FILE-ERROR"/>
            <appender-ref ref="FILE-WARN"/>
            <appender-ref ref="FILE-INFO"/>
        </logger>
        <logger name="com.demo" level="INFO" additivity="false">
            <appender-ref ref="STDOUT"/>
            <appender-ref ref="FILE-ERROR"/>
            <appender-ref ref="FILE-WARN"/>
            <appender-ref ref="FILE-INFO"/>
        </logger>
        <logger name="java.sql" level="INFO" additivity="false">
            <appender-ref ref="STDOUT"/>
            <appender-ref ref="FILE-ERROR"/>
            <appender-ref ref="FILE-WARN"/>
            <appender-ref ref="FILE-INFO"/>
        </logger>

        <!-- 日志输出级别 -->
        <root level="WARN">
            <!-- 生产环境去掉屏幕打印提升性能 -->
            <appender-ref ref="FILE-ERROR"/>
            <appender-ref ref="FILE-WARN"/>
            <appender-ref ref="FILE-INFO"/>
            <appender-ref ref="FILE-INFO"/>
        </root>
    </springProfile>
</configuration>

三、配置文件:application.yml

spring:
  profiles:
    # 运行环境 dev|test|prod,根据active动态加载application-active.yml配置文件
    active: dev

logging:
#  config: ./config/logback-spring.xml  #部署的时候的配置
  config: classpath:logback-spring.xml  #开发调试运行时的配置
[原文链接](https://blog.csdn.net/UnicornRe/article/details/124124892)
[引用链接](https://blog.csdn.net/u011047968/article/details/122827910)
  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值