zoukankan      html  css  js  c++  java
  • 日志框架

    1、什么是日志框架

    • 一套能实现日志输出的工具包;
    • 能够描述系统运行状态的所有时间都可以算作日志。

    用户登录退出、接口超时,数据库崩溃,Hello world。

     

    2、日志框架的能力

    • 定制输出目标
    • 定制输出格式
    • 携带上下文信息
    • 运行时选择性输出
    • 灵活配置
    • 优异性能

     

    3、常见的日志框架

    JCL、JUL、Log4j、Log4j2、jboss-logging、Logback、SLF4j。

     

    4、日志框架分类

    spring boot中最常用的组合框架SLF4j、Logback

     

    5、如何使用SLF4j

    5.1、日志的级别

    ERROR(40, "ERROR"),
    WARN(30, "WARN"),
    INFO(20, "INFO"),
    DEBUG(10, "DEBUG"),
    TRACE(0, "TRACE");

    默认的级别为:INFO

     

    5.2、Logback配置

    • application.yml,只能满足简单的日志配置需求;
    • logback-spring.xml,能够满足定制化的复杂日志配置需求;

    配置需求:

    • 区分info 和 error日志;
    • 每天产生一个日志文件;

     

    application.properties的配置

    #logging.pattern.console=%d - %msg%n
    #logging.path=F:/project/log/sell
    #logging.file=F:/project/log/sell/sell.log
    #logging.level.root=debug

     

    logback-spring.xml配置

    <?xml version="1.0" encoding="UTF-8" ?>
    <configuration scan="true" scanPeriod="60 seconds" debug="false">
    
        <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径,必须用绝对路径-->
        <property name="LOG_HOME" value="F:/project/log/sell/"></property>
    
        <!--控制台的输出-->
        <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
            <layout class="ch.qos.logback.classic.PatternLayout">
                <!--格式化输出:%d表示日期,%thread表示线程名,%-5level表示级别从左显示5个字符宽度,, %logger{50}表示类的全名
                50表示最多显示字符长度,%msg:日志消息,%n是换行符-->
                <pattern>
                    %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
                </pattern>
            </layout>
        </appender>
    
        <!--info 日志输出格式配置-->
        <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!--配置筛选策略,只打印INFO日志-->
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>INFO</level>
                <onMatch>ACCEPT</onMatch> <!-- 如果命中就允许这条日志 -->
                <onMismatch>DENY</onMismatch> <!-- 如果没有命中就禁止这条 -->
            </filter>
    
            <encoder charset="UTF-8">
                <pattern>
                    %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
                </pattern>
            </encoder>
    
            <!--滚动策略-->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!--路径-->
                <fileNamePattern>${LOG_HOME}/info.%d.log</fileNamePattern>
                <!--日志文件保留天数-->
                <MaxHistory>30</MaxHistory>
            </rollingPolicy>
    
            <!--日志文件最大的大小-->
            <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
                <MaxFileSize>10MB</MaxFileSize>
            </triggeringPolicy>
        </appender>
    
        <!--error 日志输出格式配置-->
        <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!--配置筛选策略-->
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>ERROR</level>
            </filter>
    
            <encoder charset="UTF-8">
                <pattern>
                    %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
                </pattern>
            </encoder>
    
            <!--滚动策略-->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!--路径-->
                <fileNamePattern>${LOG_HOME}/error.%d.log</fileNamePattern>
                <!--日志文件保留天数-->
                <MaxHistory>30</MaxHistory>
            </rollingPolicy>
    
            <!--日志文件最大的大小-->
            <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
                <MaxFileSize>10MB</MaxFileSize>
            </triggeringPolicy>
        </appender>
    
    
        <root level="info">
            <appender-ref ref="consoleLog"/>
            <appender-ref ref="fileInfoLog"/>
            <appender-ref ref="fileErrorLog"/>
        </root>
    
    </configuration>
    View Code

     

     

  • 相关阅读:
    密码学复习
    Kafka Stream 高级应用
    Kafka Stream 流和状态
    Kafka Stream 处理器API
    SSM工作流程与原理详解
    Seata AT和XA模式
    分布式锁结合SpringCache
    使用RabbitMQ最终一致性库存解锁
    使用Springboot+SpringCloud+Seata1.3.0+Nacos1.2.1进行全局事务管理
    在微服务环境下,远程调用feign和异步线程存在请求数据丢失问题
  • 原文地址:https://www.cnblogs.com/Latiny/p/10974300.html
Copyright © 2011-2022 走看看