java日志框架系列(4):logback框架xml配置文件语法
1.xml配置文件语法
由于logback配置文件语法特别灵活,因此无法用DTD或schema进行定义。
1.配置文件基本结构
配置文件基本结构:以<configuration>标签开头,包含0或多个<appender>子标签,包含0或多个<logger>标签,最多只能有一个<root>标签。
注意:
2.配置logger
配置Logger使用<logger>标签。这里的logger指的是普通logger,并非根logger。
1.logger标签属性
logger标签有3个属性:name、level、additivity。
其中name是必须的,level与additivity属性是可选的。
level属性:设置分配的记录级别。
additivity属性:表示appender的叠加性,默认值为true。具体含义请参考java日志框架系列(2):logback框架详解
level的值:TRACE、DEBUG、INFO、WARN、ERROR、ALL 和 OFF。还可以是一个特殊的字符串“INHERITED”或其同义词“NULL”,表示强制继承上级的级别。
2.logger标签的子标签
<appender-ref ref="appenderName"></appender-ref>
3.配置根logger
1.root标签的属性
2.root标签的包含的子标签
4.配置appender
1.appender标签的属性
2.appender标签的子标签
子标签种类:<layout>标签、<encoder>标签、<filter>标签。这三个标签都是可选的(0或多个)。当appender指向文件时,还可以包含<file>标签,指定写入的文件名。

1.子标签<layout>
必要属性:class,表示被实例化的Layout类的全限定名。Layout类负责把事件转换为字符串。当Layout指是PatternLayout时,可以省略class属性。
2.子标签<encoder>
必要属性:class,表示被实例化的Encoder类的全限定名。Encoder 负责两件事,一是把事件转换为字节数组,二是把字节数组写入输出流。当Layout指是PatternLayoutEncoder时,可以省略class属性。
3.子标签<filter>
必要属性:class,表示被实例化的Filter类的全限定名。
5.appender累积
默认情况下,appender是累积的,logger会把记录输出到它自身和所有祖先的appender。因此,把一个appender关联到多个logger会导致重复输出。
解决方法:设置logger的additivity属性为false。
6.设置上下文(LoggerContext)名称
每个logger都会关联到logger上下文。默认情况下,logger上下文名称为default。
<contextName>标签:设置logger上下文名称。可以方便区分来自不同应用程序的记录。
注意:一旦设置logger上下文名称后就不能更改了。
在layout模式里添加“%contextName”就会输出上下文名称。
7.变量替换
什么意思呢,举个例子。当你需要将记录输出到文件中的时候,在<appender>中需要用<file>标签指定文件名(通常需要使用绝对路径名),这样固定文件路径可能比较死板,那么还有一种方式,就是通过变量来指定文件路径。
1.简单变量替换
在配置文件中的<configuration>里使用<property>标签设置变量,在<file>标签中使用变量,通过环境变量指定路径就可以,file标签中结合变量与文件名组成文件的完整路径名称。如下图:
2.系统变量替换
示例1:系统变量替换
当需要很多变量时,更方便的做法是在一个单独文件里声明所有变量。如下示例2
示例2:
<configuration>
<property file="src/main/java/chapters/configuration/variables1.properties" />
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${USER_HOME}/myApp.log</file>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="FILE" />
</root>
</configuration>
java日志框架系列(4):logback框架xml配置文件语法的更多相关文章
- Java日志:集成slf4j和logback
Java日志方案有很多,包括:java.util.logging.Apache的commons-logging和log4j.slf4j以及logback. 一个大型项目会用到众多第三方jar包,这些j ...
- java日志之slf4j与logback简单使用
最近在开发遇到日志是使用slf4j与logback.xml的配置,所以就记录下来了. 1.导入这几个jar包: Logback 分为三个模块:logback-core,logback-classic, ...
- 【光速使用开源框架系列】数据库框架OrmLite
[关于本系列] 最近看了不少开源框架,网上的资料也非常多,但是我认为了解一个框架最好的方法就是实际使用.本系列博文就是带领大家快速的上手一些常用的开源框架,体会到其作用. 由于作者水平有限,本系列只会 ...
- Java日志记录--log4j and logback
问题的引入: 把所有的信息打印在控制台上不行吗? 01.控制台有行数限制: 02.System.out.println()影响系统性能: 03.如果我们需要对一些用户的行为习惯进行分析,我们找不到用户 ...
- Mybatis框架基础入门(四)--SqlMapConfig.xml配置文件简介
SqlMapConfig.xml中配置的内容和顺序如下: properties(属性) settings(全局配置参数) typeAliases(类型别名) typeHandlers(类型处理器) o ...
- logback的xml配置文件模板(超详细)
<?xml version="1.0" encoding="UTF-8" ?> <!-- 在此未说明属性为非必须的,那就表示属性必须设置 -- ...
- Java SSH框架系列:用户登录模块的设计与实现思路
1.简介用户登录模块,指的是根据用户输入的用户名和密码,对用户的身份进行验证等.如果用户没有登录,用户就无法访问其他的一些jsp页面,甚至是action都不能访问.二.简单设计及实现本程序是基于Jav ...
- spring+mybatis+mina+logback框架搭建
第一次接触spring,之前从来没有学过spring,所以算是赶鸭子上架,花了差不多一个星期来搭建,中间遇到各种各样的问题,一度觉得这个框架搭建非常麻烦,没有一点技术含量,纯粹就是配置,很低级!但随着 ...
- junit小试log4j及xml配置文件说明
上篇文章介绍了java日志框架使用情况,以及xml配置文件的简单说明.但主要还是根据别人的博客整理一下知识结构,只能是纸上谈兵,本文通过junit测试框架来玩玩log4j. 1.junit+l ...
随机推荐
- Python里面match()和search()的区别?
答:re模块中match(pattern,string[,flags]),检查string的开头是否与pattern匹配. re模块中research(pattern,string[,flags]), ...
- 小程序开发--API之登录授权逻辑
小程序登录授权获取逻辑 原生的小程序提供许多开放接口供使用者开发,快速建立小程序内的用户体系. 下面将小程序校验.登录.授权.获取用户信息诸多接口串联起来,以便更直观的认识到这些接口是如何在实际应用中 ...
- [PKUSC2018]最大前缀和——状压DP
题目链接: [PKUSC2018]最大前缀和 设$f[S]$表示二进制状态为$S$的序列,任意前缀和都小于等于$0$的方案数. 设$g[S]$表示二进制状态为$S$的序列是整个序列的最大前缀和的方案数 ...
- 走进JavaWeb技术世界8:浅析Tomcat9请求处理流程与启动部署过程
谈谈 Tomcat 请求处理流程 转自:https://github.com/c-rainstorm/blog/blob/tomcat-request-process/reading-notes &l ...
- selenium反爬机制
使用selenium模拟浏览器进行数据抓取无疑是当下最通用的数据采集方案,它通吃各种数据加载方式,能够绕过客户JS加密,绕过爬虫检测,绕过签名机制.它的应用,使得许多网站的反采集策略形同虚设.由于se ...
- 关于Kernel的思考
学习播客_KLDA(推导得很通俗,下面的推导就是源于此篇博客) 第一部分:按照自己的理解,模仿抄!学习播客来完成一下KLDA的推导. 第二部分:对于Kernel的思考 KLDA:顾名思义,就是把Ker ...
- Socket函数详解
#include <sys/types.h>; #include <sys/socket.h>; --------------------------------------- ...
- PCA与LDA
- Windows10+VMware Workstation Pro+Ubuntu 16.04+Hadoop-2.6.5+IDEA环境搭建(单机&伪分布式&集群)
(注:下面出现的"czifan"为用户名,需替换成自己的用户名) 本篇博客是在实践该篇博客的过程中的一些补充和修改~ 0 - 安装VMware Workstation Pro 首先 ...
- 通过Redis的list来实现 Server - Client 的同步通信
Redis实现类似同步方法调用的功能(一) 首先声明,这么干纯粹是为了好玩. 通常我们用Redis主要是为了存储一些数据,由于数据在内存里,所以查询更新很快.同时我们也可以利用 Pub/Sub 功能来 ...