1. logback的定义

  Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch。它当前分为下面下个模块:
  logback-core:其它两个模块的基础模块
  logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging
  logback-access:访问模块与Servlet容器集成提供通过Http来访问日志的功能

2. 核心概念

  configuration: logback配置的根元素,所有的配置都基于此元素内

  logger:    日志记录器,命名实体,通过不同命名区分不同的日志记录器,可以传递由 "." 分层的字符串,更加常用的是传递类信息

  appender:    日志输出目的,通过appender指定日志的输出目的和输出方式,可以指定输出到控制台、文件、数据库、远程机器等位置

  encoder:      日志编码,用户将日志事件转化成可读的信息,典型场景是将日志转化成字符串

  layout:    布局,用于指定日志输出的格式,通过一些变量,控制符来控制日志的输出格式

  filter:       过滤器,日志和直接输出控制台的区别就是日志可以控制输出内容和输出内容格式,filiter控制哪些日志应该输出,哪些日志不应该输出

  root:       每个配置文件有且只有一个,用户指定根logger的配置

3. 常用的logback配置项

  configuration

    属性: 

      debug: true / false, 设置true值的时候,第一次启动日志记录的时候,会输出logback的配置信息;

      scan:  true / false, 设置true值的时候,结合 scanPeriods 来设置扫描配置文件的间隔时间

          例如: 30 seconds, 当扫描发现文件发生变动的时候,会将变动应用到下一次的日志记录中;

    子元素:

      logger, appender, layout, filter, root, timestamp等

  logger

    属性:

      name:  string, 指定该logger的名字,通过”."隔开可以制造logger层级关系,例如 x.y 是 x.y.z的父logger,当x.y.z没有配置日志级别的时候,会继承自父logger, 如果additivity没有设置false的话,还会从父logger继承appender

      level:  TRACE/DEBUG/INFO/WARN/ERROR ALL/OFF, 可以指定日志的级别,低级别会承载高级别日志的输出,而高级别的不会,例如 DEBUG中不过滤会默认输出DEBUG及DEBUG以上日志,ERROR只会输出ERROR,不会输出它以下级别的日志

    子元素:

      <appender-ref ref="xxx" /> 指向某个输出附加器

  appender   日志附加器, 指定当前日志输出渠道,可以到控制台、文件,在J2EE应用中,一般是输出到本地机器file

    属性:

      name: string, 当前日志输出附加器的标识,在一个configuration中应该是唯一的

      class: logback提供的输出附加器类型, 输出到控制台、文件、滚动输出到文件、数据库、远程机器等都有对应的appender提供类

    子元素:

      encoder, 指定日志事件对象编码类

      filter,过滤器,过滤 日志是否需要输出

  root  logger的特例,在一个logback上下文中只有一个,就是根记录器,所有的记录器都是该记录器的 子孙记录器,等同于 <logger name="root" > 其他的记录器都是 root.xx.xx.xx

    属性:

      level: 与logger同

    子元素:

      appender: 与logger同

  property  属性值配置

    属性:

      name:属性名称,用于在配置文件中引用,使用${xx} 方式引用

      value:属性值, 占位符的实际代替值

  timestamp  获取时间戳

    属性:

      key:指定的名称,作用同property的key

      datePattern: 时间戳格式化成格式,使用java.text.SimpleDateFormat格式化

4. 常用的appender

  主要类图,引自logback官网(https://logback.qos.ch/manual/appenders.html):

  

ConsoleAppender  控制台输出

  属性名:encoder:日志事件编码,决定如何转换日志事件

      target:可以是System.out, System.err, 默认是System.out

      withJansi: 是否支持ANSI颜色显示日志,会稍微占用多一点磁盘空间, 默认是false

FileAppender    文件输出

   属性:encoder: 同上

      append:true/false, 当检测到设置的文件名存在时候,是否需要追加到文件末尾

          true会追加,false会先将原有文件内容清空,默认是true

      file:  输出的文件路径

      prudent:严谨模式,即使多个jvm同时指定写入该文件,该启动该模式也能安全地写入文件,

           true/false, 默认是false, 实现的原理是利用了排它锁,让其他需要占用资源的线程等待

   写入文件的时候,我们经常需要讲日志每个一个文件的名称都唯一,那么可以使用timeStamp获取时间戳来给文件命名保证唯一,适用于应用经常多次运行的情况,如果需要每日自动分割成日志的话, 可以使用下面的RollingFileAppender。

    FileAppender生成唯一日志文件名配置:

<timestamp key="bySecond" datePattern="yyyyMMdd'T'HHmmss"/><appender name="FILE" class="ch.qos.logback.core.FileAppender"><!-- use the previously created timestamp to create a uniquelynamed log file --><file>log-${bySecond}.txt</file><encoder><pattern>%logger{35} - %msg%n</pattern></encoder></appender>

RollingFileAppender   滚动文件输出

  属性:file:  同FileAppender

    append:  同FileAppender

    encoder:  同FileAppender

    prudent:  同FileAppender

    rollingPolicy: 该配置指定当 滚动事件 触发的时候,应该执行哪些操作, 本节后面有详细说明

    triggeringPolicy:   该配置指定何时会触发 滚动时间, 本节后面有详细说明

TimeBasedRollingPolicy    基于时间的滚动行为

  fileNamePattern:  string, 文件命名格式,一般会使用 serverName.%d.log 的形式来按照每天来滚动日志文件,%d默认是 yyyy-MM-dd 格式,按照什么单位滚动,是参照%d格式的,例如 %d{yyyy-MM}会让日志文件按月份滚动,特别的,如果是.gz / .zip 配置该项,那么会将日志文件压缩后保存(深夜进行压缩,如果深夜没有日志工作,一般在00:23 47' 进行)

  maxHistory:    int,最大日志保留单位,如果 fileNamePattern 配置按照天滚动,这个的单位是天, 如果是月,那这里单位是月,依次类推

  totalSizeCap:    int,需要maxHistory有配置,配置最大的日志保存量, 例如 5M, 2G 的配置

  cleanHistoryOnStart: boolean, 是否在启动的时候清理历史日志,默认是false

  样例配置:  

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>logFile.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- daily rollover --><fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern><!-- keep 30 days' worth of history capped at 3GB total size --><maxHistory>30</maxHistory><totalSizeCap>3GB</totalSizeCap></rollingPolicy><encoder><pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern></encoder></appender> 

Size and time based rolling policy  基于时间和大小的滚动行为

  这个触发行为和  TimeBasedRollingPolicy 有点像,但是他的属性  fileNamePattern 强制两个参数 %d 和 %i ,多了一个配置参数:maxFileSize, 所以他的配置文件看起来像是这样:

 <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>mylog.txt</file><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!-- rollover daily --><fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern><!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB --><maxFileSize>100MB</maxFileSize>    <maxHistory>60</maxHistory><totalSizeCap>20GB</totalSizeCap></rollingPolicy><encoder><pattern>%msg%n</pattern></encoder></appender>

  当时间条件未达到,但是单文件最大大小已经达到的时候,会自动讲%i 从 0 开始叠加滚动,它产生的日志可能是 mylog-2018-08-19-0.txt, mylog-2018-08-19-1.txt, mylog-2018-08-19-2.txt 这样子,其他的和 TimeBasedRollingPolicy 一致;

FixedWindowRollingPolicy  滚动窗口输出

  该输出需要和滚动触发配合使用, 属性有:minIndex, maxIndex, fileNamePattern,fileNamePattern需要带上 %i 参数,使得可以生成唯一的文件名, 当达到maxIndex上限之后,文件不会再发生滚动,会一直写入基础日志文件中,它的配置文件看起来就像这样:

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>test.log</file><rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"><fileNamePattern>tests.%i.log.zip</fileNamePattern><minIndex>1</minIndex><maxIndex>3</maxIndex></rollingPolicy><triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><maxFileSize>5MB</maxFileSize></triggeringPolicy><encoder><pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern></encoder></appender>

SizeBasedTriggeringPolicy  基于文件大小的触发滚动

  属性:maxFileSize:最大文件大小,当日志文件达到该大小后,就会触发滚动事件;

(后续更新)

5. Encoders

6. Layouts

7. Filters

  

  

  

转载于:https://www.cnblogs.com/zhuangmingnan/p/9503053.html

logback基本入门相关推荐

  1. logback property 默认值_看完这篇文章还不会给spring boot配置logback,请你吃瓜

    每一个成功人士的背后,必定曾经做出过勇敢而又孤独的决定. 放弃不难,但坚持很酷~ 一.logback日志框架 logback 是一个开源的日志组件,由三个部分组成:logback-core,logba ...

  2. Java SE加强篇——超详细,Java入门,这一篇就够了

    建议先阅读 JavaSE基础篇 第一天:面向对象进阶一 一.static静态 关键字 1.static是什么? static是静态的意思,可以修饰成员变量和成员方法 static修饰成员变量表示该成员 ...

  3. 怎么入门Java编程?

    回答上来就说知识点有点过早了,入门Java先了解它的全貌,通过Java的应用知道自己的学习目的,通过学习目的了解学习顺序,通过学习顺序制定学习计划,通过学习计划找相关资源,然后坚持不懈. 下面,黑马程 ...

  4. java基础:日志框架

    文章目录 一. 日志技术的概述 二. 日志技术体系 三. Logback日志框架 四. Logback快速入门 五. Logback 配置详解 5.1 输出位置,格式设置 5.2 对日志不同内容是否输 ...

  5. Java Study Notes_Design in 2023(Day15~)

    文章目录 Day15: 集合进阶(异常.集合) 15.1 认识异常 15.2 自定义异常 15.3 异常处理 15.4 集合概述和分类 15.4.1 集合名称图 15.4.2 集合分类(单列Colle ...

  6. Java-高级技术(一)

    1.Stream 流 1.1.Stream 流的概述 在Java 8中,得益于Lambda所带来的函数式编程, 引入了一个全新的Stream流概念. 目的:用于简化集合和数组操作的API. 代码演示 ...

  7. LogBack 入门实践

    一.简介 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. LogBack是一个日志框架,它是Log4j作者Ceki的又一个日志组件. LogBack ...

  8. Logback介绍及入门

    Logback简介 Logback是由log4j创始人设计的又一个开源日志组件. logback当前分成三个模块:logback-core,logback- classic和logback-acces ...

  9. Java日志框架-SLF4J入门 [ LogBack 样例实现 ]

    概述 slf4j只是一个日志标准,并不是日志系统的具体实现. 我们编程的时候只需要操作slf4j,具体底层实现不关注,只需要配置即可. slf4j只做两件事情: 提供日志接口 提供获取具体日志对象的方 ...

最新文章

  1. anaconda配置环境变量
  2. class函数 python_python函数之classmethod()
  3. python常用内置模块-Python内置模块和第三方模块
  4. 在 word 中 mathType 菜单灰色,无法使用
  5. 一起学mini2440裸机开发(十)--mini2440外部中断实验
  6. Spring3 集成 Hibernate3
  7. 10·24【运维工程师也过节】【运维MySQL大礼包】
  8. 我们为何要使用多线程,它有什么优点?
  9. cmstop框架中的js设计content.js
  10. 【three.js】库
  11. div输入的内容全选css,将CSS类应用于内容中的选定文本可编辑div
  12. Platform平台设备驱动框架
  13. 为Google Reader守夜。。。
  14. 《Redis开发与运维》学习第十章
  15. python建模过程总结(一)
  16. 基于CCS工程MSP430串口升级(一)
  17. 世界上最简单的会计书(利润表)
  18. 这些问题才是阻碍蓝牙耳机音质的元凶,2021什么牌子蓝牙耳机靠谱?
  19. 在linux上安装Scala详细步骤
  20. Thinkphp+vue女生穿衣服装搭配系统毕业设计

热门文章

  1. Android中使用画笔和画布绘制一个矩形
  2. DevExpress的分隔条控件SplitterControl的使用
  3. DevExpress的对话框XtraMessageBox的使用
  4. Webservice入门教程_用JDK开发Webservice
  5. SpringBoot中自定义消息转化器
  6. 团队愿景和团队章程的问答?
  7. 南京工程学院 Dsp复习
  8. Mysql删除语句优化_MySQL性能优化之常用SQL语句优化
  9. 视频+PPT | 企业服务进阶第一课:客户全生命周期运营总览
  10. 11.1 安装配置Apache