Logback日志框架的使用与配置

2018-04-05  本文已影响113人  5946a9de5796

什么是日志框架

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

使用日志框架的好处

常见日志框架

简单日志门面

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

日志实现

为什么选择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>
上一篇下一篇

猜你喜欢

热点阅读