索鸟网

  1. 首页
  2. SpringBoot使用logback实现日志按天滚动

SpringBoot使用logback实现日志按天滚动


需求
  1. 日志按天滚动分割
  2. info和error日志输出到不同文件
为什么使用Logback

在这里,我不去深究的讨论各个日志框架的优劣,网上的对比文章实在太多了。我只说以下几点理由。

  1. Logback是Log4j的升级版,作者为同一个人,作者不想再去改Log4j,所以写了Logbak
  2. 使用日志框架的最佳实践是选择一款日志门面+一款日志实现,这里选择Slf4j+Logback, Slf4j作者也是Logbak的作者
  3. SpringBoot从1.4版本开始,内置的日志框架就是Logback
Logback在SpringBoot中配置方式一

可以直接在applicatin.properties或者application.yml中配置
以在application.yml中配置为例

logging:
  pattern:
    console: "%d - %msg%n"
  file: /var/log/tomcat/sell.log
  level:
    com.imooc.LoggerTest: debug

可以发现,这种配置方式简单,但能实现的功能也很局限,只能

  • 定制输出格式
  • 输出文件的路径
  • 指定某个包下的日志级别

如果需要完成我们的需求,这就得用第二种配置了

Logback在SpringBoot中配置方式二

在resource目录下新建logback-spring.xml, 内容如下

<?xml version="1.0" encoding="UTF-8" ?>

<configuration>

    <appender name="consoleLog" >
        <layout >
            <pattern>
                %d - %msg%n
            </pattern>
        </layout>
    </appender>

    <appender name="fileInfoLog" >
        <filter >
            <level>ERROR</level>
            <onMatch>DENY</onMatch>
            <onMismatch>ACCEPT</onMismatch>
        </filter>
        <encoder>
            <pattern>
                %msg%n
            </pattern>
        </encoder>
        <!--滚动策略-->
        <rollingPolicy >
            <!--路径-->
            <fileNamePattern>/var/log/tomcat/sell/info.%d.log</fileNamePattern>
        </rollingPolicy>
    </appender>

    <appender name="fileErrorLog" >
        <filter >
            <level>ERROR</level>
        </filter>
        <encoder>
            <pattern>
                %msg%n
            </pattern>
        </encoder>
        <!--滚动策略-->
        <rollingPolicy >
            <!--路径-->
            <fileNamePattern>/var/log/tomcat/sell/error.%d.log</fileNamePattern>
        </rollingPolicy>
    </appender>

    <root level="info">
        <appender-ref ref="consoleLog" />
        <appender-ref ref="fileInfoLog" />
        <appender-ref ref="fileErrorLog" />
    </root>

</configuration>

每一个appender你可以理解为一个日志处理策略。
第一个appender的name="consoleLog", 名字是自己随意取的,取这个名字,表示这个策略用于控制台的日志。
我们重点看第二个和第三个appender

  1. 因为要把info和error日志输入到不同文件, 所以我们分别建了两个appender。
  2. rollingPolicy是滚动策略,这里我们设置按时间滚动
  3. filter是日志的过滤方式,我们在fileInfoLog里做了如下过滤

    <level>ERROR</level>
    <onMatch>DENY</onMatch>
    <onMismatch>ACCEPT</onMismatch>

上述代码翻译之后:拦截ERROR级别的日志。如果匹配到了,则禁用处理。如果不匹配,则接受,开始处理日志。

那有的同学要问了,不能这样写吗

<level>INFO</level>

这样不是只拦截INFO日志了吗?
不对!
这就得说一下日志级别了
DEBUG ->INFO -> WARN ->ERROR

如果你设置的日志级别是INFO,那么是会拦截ERROR日志的哦。

相关标签: JAVA

来源地址:http://www.imooc.com/article/19005 版权归作者所有!

相关教程

  • spring boot 使用 logback 配置日志

    spring boot 默认是 使用 logback 的。。 听说 log4j 性能 不行了,,, spring boot 推荐 使用 logback 或者 log4j2 来使用了。。。 废话不多少,,,我觉得还是 使用 默认的 logback 把 省得麻烦的事 。。 其实 logback 已经 默认 有了 配置了的,我们自己 在 application 配置文件里面
  • logback日志增加行号

    默认的格式 %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr
  • logback输出日志到sentry

    maven <dependency> <groupId>com.getsentry.raven</groupId> <artifactId>raven-logback</artifactId> <ver
  • 使用cronolog-1.6.2按日期截取Tomcat日志

    一、首先安装cronolog-1.6.21、下载    wget http://cronolog.org/download/cronolog-1.6.2.tar.gz 2、安装    # tar zxvf cronolog-1.6.2.tar.gz    # c
  • logback实现每个用户一个独立的日志文件

    本文介绍如何使用logback的Mapped Diagnostic Context (MDC) 和SiftingAppender实现每个线程一个独立的日志文件。 MDC 参考手册http://logback.qos.ch/manual/mdc.html 1、logback.xml配置文件示例 <configuration> <property n
  • logback

    http://www.importnew.com/22290.html http://www.cnblogs.com/warking/p/5710303.html logback使用 一、logback的介绍 Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch。 它当前分为下面下个模块: ​   logbac
  • Spring Boot - 静态资源处理、启动加载、日志处理

    Spring Boot - 静态资源处理、启动加载、日志处理 回顾 Spring Boot-初识 Hello World Spring Boot - Servlet、过滤器、监听器、拦截器 我们通过启动日志,可以发现,spring boot 默认提供了静态资源处理。接下来,我们了解下,该如何应用默认配置,如何自定义静态资源处理。 INFO o.s.
  • spring boot - 收藏集 - 掘金

    Spring Boot 揭秘与实战(九) 应用监控篇 - HTTP 健康监控 - 掘金Health 信息是从 ApplicationContext 中所有的 HealthIndicator 的 Bean 中收集的, Spring Boot 内置了一些 HealthIndicator。 博客地址:http://blog.720ui.com/ 内... Sp