日志框架

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

 

 

 

posted @ 2019-06-04 16:24  Latiny  阅读(631)  评论(0编辑  收藏  举报