根节点<configuration>包含的属性
  • scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。
  • scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。
  • debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。

<configuration>下面一共有2个属性,3个子节点,分别是:

属性一:设置上下文名称<contextName>

每个logger都关联到logger上下文,默认上下文名称为“default”。但可以使用<contextName>设置成其他名字,用于区分不同应用程序的记录。一旦设置,不能修改,可以通过%contextName来打印日志上下文名称。

<contextName>logback</contextName>
属性二:设置变量<property>

用来定义变量值的标签,<property>有两个属性,namevalue;其中name的值是变量的名称,value的值时变量定义的值。通过<property>定义的值会被插入到logger上下文中。定义变量后,可以使${}来使用变量。

<property name="log.path" value="E:\\logback.log" /> 

变量有三个作用域:

  • local
  • context
  • system

local 作用域在配置文件内有效,context 作用域的有效范围延伸至 logger context,system 作用域的范围最广,整个 JVM 内都有效。

logback 在替换变量时,首先搜索 local 变量,然后搜索 context,然后搜索 system。

<property scope="context" name="nodeId" value="firstNode" /> 

也可以通过外部文件来定义:

<property file="src/main/java/chapters/configuration/variables1.properties" />
子节点一:<appender>

appender用来格式化日志输出节点,有俩个属性nameclass,class用来指定哪种输出策略,常用就是控制台输出策略和文件输出策略。

1、控制台输出ConsoleAppender:

<!--输出到控制台--><appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>ERROR</level> </filter> <encoder> <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> 

ThresholdFilter为系统定义的拦截器,例如我们用ThresholdFilter来过滤掉ERROR级别以下的日志不输出到文件中。如果不用记得注释掉,不然你控制台会发现没日志~

2、输出到文件RollingFileAppender

另一种常见的日志输出到文件,随着应用的运行时间越来越长,日志也会增长的越来越多,将他们输出到同一个文件并非一个好办法。

RollingFileAppender用于切分文件日志:

<!--输出到文件-->
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${log.path}</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>logback.%d{yyyy-MM-dd}.log</fileNamePattern> <maxHistory>30</maxHistory> <totalSizeCap>1GB</totalSizeCap> </rollingPolicy> <encoder> <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> 
  • <fileNamePattern>logback.%d{yyyy-MM-dd}.log</fileNamePattern>定义了日志的切分方式——把每一天的日志归档到一个文件中。
  • <maxHistory>30</maxHistory>表示只保留最近30天的日志,以防止日志填满整个磁盘空间。同理,可以使用%d{yyyy-MM-dd_HH-mm}来定义精确到分的日志切分方式。
  • <totalSizeCap>1GB</totalSizeCap>用来指定日志文件的上限大小,例如设置为1GB的话,那么到了这个值,就会删除旧的日志。
子节点二:<root>

root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性。

<root level="debug"><appender-ref ref="console" /> <appender-ref ref="file" /> </root> 
子节点三: <loger>

<loger>用来设置某一个包或者具体的某一个类的日志打印级别、以及指定<appender>

<loger>仅有一个name属性,一个可选的level和一个可选的addtivity属性。

if表达式(条件化处理配置文件)

logback 允许在配置文件中定义条件语句,以决定配置的不同行为,

   <!-- if-then form --><if condition="some conditional expression"> <then> ... </then> </if> <!-- if-then-else form --> <if condition="some conditional expression"> <then> ... </then> <else> ... </else> </if> 
常用条件表达式函数
1. property('key')
2. isDefined('key')
3. isNull("key")
文件包含

可以使用 ≶include> 标签在一个配置文件中包含另外一个配置文件。

<configuration><include file="src/main/java/chapters/configuration/includedConfig.xml"/> <root level="DEBUG"> <appender-ref ref="includedConsole" /> </root> </configuration> 

被包含的文件必须有以下格式:

<included><appender name="includedConsole" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>"%d - %m%n"</pattern> </encoder> </appender> </included> 

支持从多种源头包含

  1. 从文件中包含
<include file="src/main/java/chapters/configuration/includedConfig.xml"/>
  1. 从 classpath 中包含
<include resource="includedConfig.xml"/>
  1. 从 URL 中包含
<include url="http://some.host.com/includedConfig.xml"/>

如果包含不成功,那么 logback 会打印出一条警告信息,如果不希望 logback 抱错,只需这样做:

<include optional="true" ..../>

添加一个 Context Listener

LoggerContextListener接口的实例能监听 logger context 上发生的事件,比如说日志级别的变化,添加的方式如下所示:

<configuration debug="true"><contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator"/> .... </configuration> 

多环境日志输出

据不同环境(prod:生产环境,test:测试环境,dev:开发环境)来定义不同的日志输出。

文件名称不是logback.xml,想使用spring扩展profile支持,要以logback-spring.xml命名

<!-- 测试环境+开发环境. 多个使用逗号隔开. -->
<springProfile name="test,dev"> <logger name="com.dudu.controller" level="info" /> </springProfile> <!-- 生产环境. --> <springProfile name="prod"> <logger name="com.dudu.controller" level="ERROR" /> </springProfile>

1,blockingQueue长度。

blockingQueue长度决定了队列能放多少信息,在默认的配置下,如果blockingQueue放满了,后续想要输出日志的线程会被阻塞,直到Worker线程处理掉队列中的信息为止。根据实际情况适当调整队列长度,可以防止线程被阻塞。

2,immediateFlush=false。不立即清空输出流。

immediateFlush参数可以配置在<appender>里面,默认是true,代表是否立即刷新OutputStream中的信息。如果设置为false,会在OutputStream放满或隔断时间进行flush,具体由OutputStream类决定。据说设置为false之后输出日志的效率能提高为原来的4倍。

官网说:setting thisproperty to 'false' is likely to quadruple (your mileage may vary) loggingthroughput.

3,neverBlock=true。队列满了也不卡线程

neverBlock参数可以配置在<appender>里面,默认是false,代表在队列放满的情况下是否卡住线程。也就是说,如果配置neverBlock=true,当队列满了之后,后面阻塞的线程想要输出的消息就直接被丢弃,从而线程不会阻塞。这个配置用于线程很重要,不能卡顿,而且日志又不是很重要的场景,因为很有可能会丢日志。

4,自定义appender

开发者可以自己写一个appender类,需要继承AppenderBase<LoggingEvent>类并重写append(LoggingEventeventObject)方法,然后像别的appender一样配置到logback.xml里面,就可以定义自己的日志输出方式了。

转载于:https://www.cnblogs.com/duanxz/archive/2013/01/18/2866024.html

Logback的配置说明相关推荐

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

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

  2. SpringBoot (14)---日志配置(logback)

    SpringBoot 日志配置(logback) SpringBoot支持Java Util Logging,Log4J,Log4J2和Logback日志框架,默认采用logback日志.在实际Spr ...

  3. Java日志(slf4j+logback)及打印彩色日志

    一.maven依赖 在pom文件增加slf4j+logback依赖 <!-- 版本配置 --> <properties><slf4j.version>1.7.21& ...

  4. logback - 自定义日志脱敏组件,一种不错的脱敏方案

    前言 在我们书写代码的时候,会书写许多日志代码,但是有些敏感数据是需要进行安全脱敏处理的. 对于日志脱敏的方式有很多,常见的有①使用conversionRule标签,继承MessageConverte ...

  5. slfj 和lg4j 区别 以及logback 和logging配置区别

    基本介绍 每一个Java程序员都知道日志对于任何一个Java应用程序尤其是服务端程序是至关重要的,而很多程序员也已经熟悉各种不同的日志库,如java.util.logging.Apache log4j ...

  6. springboot日志logback配置

    1 <?xml version="1.0" encoding="UTF-8"?> 2 <!-- 3 scan:当此属性设置为true时,配置文 ...

  7. linux kvm虚拟化命令,Linux系统下kvm虚拟化(三)日常管理常用命令和配置说明

    根据我们之前创建和一些操作可以知道,KVM虚拟机的管理主要是通过virsh命令对环境下kvm虚拟机进行管理,下边这里整理一些常用的配置说明以及如何进行日常管理维护. 1,查看KVM虚拟机配置文件 KV ...

  8. qt能使用logback_Spring boot使用logback实现日志配置

    欢迎关注头条号:老顾聊技术 精品原创技术分享,知识的组装工 目录 前言 常用日志组件 什么是日志门面和日志实现 常见的日志框架 日志使用 @slf4j注解 日志的配置 logback-spring配置 ...

  9. springboot集成logback日志 通用logback.xml模板详解

    先看Spring Boot中依赖的logback,log4j,slf4j相关Jar包 1.最简单的默认打印控制台日志  import org.slf4j.Logger; import org.slf4 ...

最新文章

  1. barplot参数 python_Python零基础入门Python数据分析最好的实战项目
  2. java 判断题_Java面试题及解析(判断题)
  3. SharePoint技术峰会2009视频(6)
  4. Exchange2007 从零到入门(2)---收件人管理
  5. 提高「搜商」,挣大钱
  6. python gif 透明,Python3+试点批量处理简单的GIF到PNG并透明地去除背景色,python3Pillow,gif,转成,png,透明化,去掉...
  7. python实现将文件夹/子文件夹中内容清空
  8. softmgr主程序_SoftMgrBase.dll
  9. dac生成信号频率取决于_关于高速AD/DAC测量及设计中82个疑难问题的解答
  10. PHP进销存软件源代码ERP多仓储管理系统源码
  11. 最新个人引导页导航源码 极致酷范儿
  12. OOD: 我所理解的SOLID原则
  13. Xtend官方文档-第一部分
  14. 【经典贪心练习】金银岛
  15. mysql多表查询总结_MySQL多表查询总结
  16. 计算机一级office考试大纲,计算机一级考试MSoffice考试大纲
  17. [ActionScript 3.0] AS3.0 调试出现安全沙箱冲突错误解决办法
  18. ansible的介绍与安装
  19. 0330Linux软件包安装和卸载
  20. ios隐藏标题栏方式

热门文章

  1. 今天突然领悟到,想要赚钱必须先放平心态
  2. 草根最容易逆袭的地方就是互联网
  3. 经常看到一种说法,说未来普通人翻身,将会越来越难
  4. 为什么现在选择单身的男生和女生越来越多
  5. 社会化生态农场品,社群+农产品,大有搞头
  6. 配电脑时什么配置可以缩水?
  7. 计算机网络————P2 标准化工作及相关组织
  8. 计算机网络class 3(速率的相关性能指标)
  9. python sql脚本_使用Python SQL脚本进行数据采样
  10. mysql—数据库优化——如何选择合适的索引