Log 之Appenders

本文介绍了Logback的Appender,包括ConsoleAppender、FileAppender及其子类RollingFileAppender。重点讲解了RollingFileAppender的滚动策略TimeBasedRollingPolicy和SizeBasedTriggeringPolicy,以及FileAppender的重要属性,如append、prudent等。
摘要由CSDN通过智能技术生成

1.appender的简介

Logback的Appender官方文档

Logback delegates the task of writing a logging event to components called appenders. Appenders must implement the ch.qos.logback.core.Appender interface. The salient methods of this interface are summarized below:

通过官方文档中的一段简介,可以看出 logback 将日志写入事件委托给名叫 appender的接口。

Appenders are ultimately responsible for outputting logging events. However, they may delegate the actual formatting of the event to a Layout or to an Encoder object. Each layout/encoder is associated with one and only one appender, referred to as the owning appender. Some appenders have a built-in or fixed event format. Consequently, they do not require nor have a layout/encoder. For example, the SocketAppender simply serializes logging events before transmitting them over the wire.

这个段引用又指出,appender里面可以有 Layout或者Encoder两个对象中的一个对象来指定日志输出格式,并且这两个对象只一对一的关联appender。 但是如果appender内置格式输出或者采用混合日志格式输出的话是可以不指定layout/encoer。所以某个appender没有layout/encoder也是可以的。
appender的继承关系树如下图:
这里写图片描述

从关系树中,我们可以看出appender 的下层抽象类一个线程不安全的类,而所有的日志输出器都是继承该抽象类来实现的。并且每个appender的实现类都可以通过 Encoder,Filter两个对象来格式化日志输出格式以及筛选日志。
OutputStreamAppender有两个属性如下:
这里写图片描述
一个指定的是Encoder就是前面所讲的两个格式化日志输出对象中的一个,而另外一个属性是指定日志写入是否及时刷新默认值时true可以确保appender发生异常的时候日志能不遗漏的正常写入到目的地。

2.ConsoleAppender控制台输出

从上述继承树中可以看出ConsoleAppender是Appender的一个实现类,其中这个Appender的属性如下:
这里写图片描述
其中他有两个自己的属性target 以及withJansi。

<configuration>

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <!-- encoders are assigned the type
         ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
    <encoder>
      <pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
    </encoder>
  </appender>

  <root level="DEBUG">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

3.FileAppender控制台输出

FileAppender 这个是我们平常项目中用到最多的一种。
这里写图片描述
其中有几个比较重要的属性

  • append boolean 类型表示该日志文件是否启用追加功能,默认true,如果指定为false的话,当容器重启或者服务器重启时会生成新的日志文件把原有的覆盖
  • file 日志文件的存储路径,在window下要将\变成 \\
  • prudent boolean 默认false 前面可以看出appender默认是不安全的,当多个线程操作同一个日志文件的时候可能会造成数据 不同步。可以根据需求设为true。
<configuration>

  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>testFile.log</file>
    <
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值