• 日志配置logback-spring.xml


    参考官方网址: https://logging.apache.org/log4j/2.x

    一、log4j日志级别配置说明

    log4j提供了4种日志级别和2个日志开关。
    
    DEBUG:输出调试信息;指出细粒度信息事件对调试应用程序是非常有帮助的。 
    INFO: 输出提示信息;消息在粗粒度级别上突出强调应用程序的运行过程。 
    WARN: 输出警告信息;表明会出现潜在错误的情形。 
    ERROR:输出错误信息;指出虽然发生错误事件,但仍然不影响系统的继续运行。 
    FATAL: 输出致命错误;指出每个严重的错误事件将会导致应用程序的退出。 
    ALL level:打开所有日志记录开关;是最低等级的,用于打开所有日志记录。 
    OFF level:关闭所有日志记录开关;是最高等级的,用于关闭所有日志记录。
    
    按照范围从小到大排序:OFF level > FATAL > ERROR > WARN > INFO > DEBUG > ALL level;范围大的会包含范围小的,例如日志设置为INFO级别的话则FATAL、ERROR、WARN、INFO的日志开关都是打开的,而DEBUG的日志开关将是关闭的。
    
    Log4j建议只使用四个级别,优先级从高到低分别是 ERROR、WARN、INFO、DEBUG。

    二、logback-spring.xml配置文件

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- 说明:
        1、日志级别及文件 日志记录采用分级记录,级别与日志文件名相对应,不同级别的日志信息记录到不同的日志文件中。
        2、日志级别可以根据开发环境进行配置,为方便统一管理查看日志,日志文件路径统一由LOG_PATH:-.配置在/home/项目名称/logs
    -->
    <configuration>
        <!-- 引入默认设置 -->
        <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    
        <!-- 编码格式设置 -->
        <property name="ENCODING" value="UTF-8" />
        <!-- 日志文件的存储地址,由application.yml中的logging.path配置,根路径默认同项目路径 -->
        <property name="LOG_HOME" value="${LOG_PATH:-.}" />
        <!-- 常规输出格式:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
        <property name="NORMAL_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}.%method@%line - %msg%n"/>
        <!-- 彩色输出格式:magenta:洋红,boldMagenta:粗红,cyan:青色 -->
        <property name="CONSOLE_LOG_PATTERN" value="%boldMagenta([%d{yyyy-MM-dd HH:mm:ss.SSS}]) %red([%thread]) %boldMagenta(%-5level) %blue(%logger{66}.%method()@%line) %magenta(·═>) %cyan(%msg%n)"/>
    
        <!-- ==========================控制台输出设置========================== -->
        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>${CONSOLE_LOG_PATTERN}</pattern>
                <charset>${ENCODING}</charset>
            </encoder>
        </appender>
    
        <!-- ==========================按天输出日志设置========================== -->
        <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${LOG_HOME}/system-info.log</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- 按天回滚 daily -->
                <FileNamePattern>${LOG_HOME}/system-info.%d{yyyy-MM-dd}.log</FileNamePattern>
                <!-- 日志文件保留天数 -->
                <MaxHistory>30</MaxHistory>
            </rollingPolicy>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>INFO</level>             <!-- 设置拦截的对象为INFO级别日志 -->
                <onMatch>ACCEPT</onMatch>       <!-- 当遇到了INFO级别时,启用该段配置 -->
                <onMismatch>DENY</onMismatch>   <!-- 没有遇到INFO级别日志时,屏蔽该段配置 -->
            </filter>
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <pattern>${NORMAL_LOG_PATTERN}</pattern>
                <charset>${ENCODING}</charset>
            </encoder>
            <!-- 日志文件最大的大小 -->
            <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
                <MaxFileSize>10MB</MaxFileSize>
            </triggeringPolicy>
        </appender>
    
        <!-- ==========================按天输出ERROR级别日志设置========================== -->
        <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${LOG_HOME}/system-error.log</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- 按天回滚 daily -->
                <FileNamePattern>${LOG_HOME}/system-error.%d{yyyy-MM-dd}.log</FileNamePattern>
                <!-- 日志文件保留天数 -->
                <MaxHistory>30</MaxHistory>
            </rollingPolicy>
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>ERROR</level>            <!-- 设置拦截的对象为ERROR级别日志 -->
                <onMatch>ACCEPT</onMatch>       <!-- 当遇到了ERROR级别时,启用该段配置 -->
                <onMismatch>DENY</onMismatch>   <!-- 没有遇到ERROR级别日志时,屏蔽该段配置 -->
            </filter>
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <pattern>${NORMAL_LOG_PATTERN}</pattern>
                <charset>${ENCODING}</charset>
            </encoder>
            <!-- 日志文件最大的大小 -->
            <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
                <MaxFileSize>10MB</MaxFileSize>
            </triggeringPolicy>
        </appender>
    
        <!-- ==========================用户登录日志设置========================== -->
        <appender name="USER_LOGIN" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${LOG_HOME}/user-login.log</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- 按天回滚 daily -->
                <fileNamePattern>${LOG_HOME}/auth-user.%d{yyyy-MM-dd}.log</fileNamePattern>
                <!-- 日志最大的历史 30天 -->
                <maxHistory>30</maxHistory>
            </rollingPolicy>
            <encoder>
                <pattern>${NORMAL_LOG_PATTERN}</pattern>
                <charset>${ENCODING}</charset>
            </encoder>
        </appender>
    
        <!-- ===日志输出级别,OFF level > FATAL > ERROR > WARN > INFO > DEBUG > ALL level=== -->
        <logger name="com.sand" level="INFO"/>
        <logger name="com.apache.ibatis" level="INFO"/>
        <logger name="java.sql.Statement" level="INFO"/>
        <logger name="java.sql.Connection" level="INFO"/>
        <logger name="java.sql.PreparedStatement" level="INFO"/>
        <logger name="org.springframework" level="WARN"/>
        <logger name="com.baomidou.mybatisplus" level="WARN"/>
        <!-- 用户登录日志 -->
        <logger name="user-login" level="INFO">
            <appender-ref ref="USER_LOGIN"/>
        </logger>
    
        <!-- ======开发环境:打印控制台和输出到文件====== -->
        <springProfile name="dev"><!-- 由application.yml中的spring.profiles.active配置 -->
            <root level="INFO">
                <appender-ref ref="CONSOLE"/>
                <appender-ref ref="INFO_FILE"/>
                <appender-ref ref="ERROR_FILE"/>
            </root>
        </springProfile>
    
        <!-- ======测试环境:打印控制台和输出到文件====== -->
        <springProfile name="test"><!-- 由application.yml中的spring.profiles.active配置 -->
            <root level="INFO">
                <appender-ref ref="CONSOLE"/>
                <appender-ref ref="INFO_FILE"/>
                <appender-ref ref="ERROR_FILE"/>
            </root>
        </springProfile>
    
        <!-- ======生产环境:打印控制台和输出到文件====== -->
        <springProfile name="prod"><!-- 由application.yml中的spring.profiles.active配置 -->
            <root level="INFO">
                <appender-ref ref="CONSOLE"/>
                <appender-ref ref="INFO_FILE"/>
                <appender-ref ref="ERROR_FILE"/>
            </root>
        </springProfile>
    </configuration>

    注意:登录日志的记录还需进行以下配置,用lombok的话直接使用注解即可 @Slf4j(topic = "user-login")

    配置效果如下:

        千万不要试图去研究 研究了很久都整不明白的东西,或许是层次不到,境界未到,也或许是从未在实际的应用场景接触过,这种情况下去研究,只会事倍功半,徒劳一番罢了。能做的就是不断的沉淀知识,保持一颗积极向上的学习心态,相信终有一天所有的困难都会迎刃而解。
  • 相关阅读:
    Leetcode 421.数组中两数的最大异或值
    Leetcode 419.甲板上的战舰
    Leetcode 417.太平洋大西洋水流问题
    Leetcode 416.分割等和子集
    Leetcode 413.等差数列划分
    Leetcode 410.分割数组的最大值
    由股票价格形成因素看如何选股(发布于06-02 13:09)
    巴菲特的资产配置艺术(发布于06-01 13:28)
    ROE能否包打天下?(发布于05-31 11:27)
    价值迟迟不回归怎么办?(发布于05-30 10:02)
  • 原文地址:https://www.cnblogs.com/54hsh/p/12684241.html
Copyright © 2020-2023  润新知