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 ...
随机推荐
- 二分算法题目训练(一)——Shell Pyramid详解
HDU2446——Shell Pyramid 详解 Shell Pyramid 题目描述(Google 翻译的) 在17世纪,由于雷鸣般的喧嚣,浓烟和炽热的火焰,海上的战斗与现代战争一样.但那时,大炮 ...
- hbuilder mui html vue ul li 自定义循环赋值ID
<ul class="mui-table-view mui-table-view-chevron"> <li class="mui-table-view ...
- HDU 4609 3-idiots ——(FFT)
这是我接触的第一个关于FFT的题目,留个模板. 这题的题解见:http://www.cnblogs.com/kuangbin/archive/2013/07/24/3210565.html. FFT的 ...
- Metaspace 之二--PermGen vs. Metaspace 运行时比较
PermGen vs. Metaspace 运行时比较 为了更好地理解Metaspace内存空间的运行时行为, 将进行以下几种场景的测试: 使用JDK1.7运行Java程序,监控并耗尽默认设定的85M ...
- fidder监控请求响应时间和请求IP
1.增加监控请求的详情时间 在CustomRules.js的class Handlers中增加 //添加请求的响应时间 public static BindUIColumn("Time T ...
- VUE -- iview table 组件 中使用 upload组件 上传组件 on render 事件不会触发问题
碰到的问题是: upload 组件在 on中写的监听事件不会被触发 在 props 中来监听:==>
- 如何git revert merge commit?
答: git revert -m <parent-number> <commit-id> (适用于merge操作的commit) 参考资料: https://blog.csdn ...
- java模拟post进行文件提交 采用httpClient方法
package com.jd.vd.manage.util.filemultipart; import java.io.BufferedReader;import java.io.File;impor ...
- LeetCode_160. Intersection of Two Linked Lists
160. Intersection of Two Linked Lists Easy Write a program to find the node at which the intersectio ...
- (五)UML之协作图
一.什么是协作图? 顾名思义协作图就是合作图,有合作就涉及到多个对象. 协作图(Collaboration Diagram /Communication Diagram,也叫合作图)是一种交互图(in ...