美文网首页
Logback日志框架的使用与配置

Logback日志框架的使用与配置

作者: 5946a9de5796 | 来源:发表于2018-04-05 11:56 被阅读113次

    什么是日志框架

    日志框架是一套能够实现日志输出的工具包

    使用日志框架的好处

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

    常见日志框架

    简单日志门面

    简单日志门面(Simple Logging Facade),是存取日志的标准接口。
    常见的有:

    • JCL
    • SLF4j
    • jboss-logging

    日志实现

    • Log4j
    • Log4j2
    • Logback
    • JUL

    为什么选择SLF4j+Logback

    日志实现方面去掉功能简陋的JUL,和被Logback取代的Log4j,还剩下Log4j2和Logback。
    Log4j2标榜的最大优势是超高性能,日常开发学习过程中几乎碰不到这种场景,Logback的性能其实已经足够优秀了。再加上Log4j2与一些开源框架兼容方面存在问题,所以日志实现部分还是选择使用Logback。
    Logback和SLF4j的作者是同一人,更适合搭配使用,不需顾虑兼容方面的问题。
    SpringBoot使用的就是SLF4j+Logback组合。

    Logback的配置

    在application.yml中配置

    相对简单,只能配置日志文件的路径和日志的输出格式等一些简单配置。

    logging:
      pattern:
        # 控制台的日志格式,设置为"日期 - 消息内容 换行"
        console: "%d - %msg%n"
      # 日志的路径
      path: D:\tmp\log\tomcat\
      # 日志的名字(定义file的话,path就不需要了)
      file: D:\tmp\log\tomcat\sell.log
      # 日志级别,默认为info
      level: debug
      # 级别也可以指定类
      level:
        包名.类名: debug
    

    在logback-spring.xml中配置

    可以进行复杂配置,如每天生成一个日志文件、区分error和info日志等,便于更好的定位问题和查找日志。

    配置方法

    以SpringBoot为例,在项目的resources文件夹中新建logback-spring.xml文件
    贴一下我配置好的xml文件:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    
        <!-- 配置console输出 -->
        <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
            <layout class="ch.qos.logback.classic.PatternLayout">
                <!-- 输出的格式 "日期 - 信息内容" -->
                <pattern>
                    %d - %msg%n
                </pattern>
            </layout>
        </appender>
    
        <!-- 配置文件输出 -->
        <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!-- 为了把info和error分开保存,这里需要配置filter标签,过滤器类选择 级别过滤 -->
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <!-- 对于error级别,如果匹配到就拒绝接受,如果不是error就收下 -->
                <level>ERROR</level>
                <onMatch>DENY</onMatch>
                <onMismatch>ACCEPT</onMismatch>
            </filter>
            <encoder>
                <pattern>
                    %msg%n
                </pattern>
            </encoder>
            <!-- 设置滚动策略为 按日期滚动 -->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- 文件路径,文件名中加入%d,将日期添加进文件名中 -->
                <fileNamePattern>
                    D:\tmp\log\tomcat\sell\info.%d.log
                </fileNamePattern>
            </rollingPolicy>
        </appender>
    
        <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!-- 过滤器级别选择 临界值过滤器,过滤掉低于error级别的日志 -->
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>
                    ERROR
                </level>
            </filter>
            <encoder>
                <pattern>
                    %msg%n
                </pattern>
            </encoder>
            <!-- 滚动策略也是设置成按日期滚动 -->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- 文件路径 -->
                <fileNamePattern>
                    D:\tmp\log\tomcat\sell\error.%d.log
                </fileNamePattern>
            </rollingPolicy>
        </appender>
    
        <!-- root即为对整个项目都适用, 输出级别设置为info -->
        <root level="info">
            <appender-ref ref="consoleLog" />
            <appender-ref ref="fileInfoLog" />
            <appender-ref ref="fileErrorLog" />
        </root>
    
    </configuration>
    

    相关文章

      网友评论

          本文标题:Logback日志框架的使用与配置

          本文链接:https://www.haomeiwen.com/subject/pxwrhftx.html