java日志框架配置,java日志框架系列(4):logback框架xml配置文件语法

1.xml配置文件语法

由于logback配置文件语法特别灵活,因此无法用DTD或schema进行定义。

1.配置文件基本结构

配置文件基本结构:以标签开头,包含0或多个子标签,包含0或多个标签,最多只能有一个标签。

40fab999173ef52173e08d8a0a2f73a5.png

注意:

从 logback 0.9.17 版起,标签名不区分大小些。比如,、和都是合法元素且表示同一个意思。按照

隐式规则,

标签名除了首字母外要区分大小写。因此,与等价,但不等价于。

隐式规则一般遵循 Java 世界里常用的驼峰命名规则。因为很难确定一个标签什么时候与显式动作相关,什么时候又与隐式动作相关,所以很难说 XML 标记是否是大小写敏感。如果你不确定标记名的大小写,就用驼峰命名法,基本不会错。

2.配置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标签的子标签

logger标签可以包含的0或多个子标签,表示这个子标签所指的appender会被添加到这个logger中。

标签只有一个属性ref,值为appender的name属性。

3.配置根logger

标签配置根 logger。

1.root标签的属性

标签只有一个 level 属性。

没有 name 属性,因为已经被命名为“ROOT”,也没有additivity属性;因为根logger已经是顶级logger了,没有上级logger。

level属性值:TRACE、DEBUG、INFO、WARN、ERROR、ALL 和 OFF。

注意不能设置为“INHERITED” 或“NULL”。属性的值大小写无关。

2.root标签的包含的子标签

元素可以包含零个或多个元素。与元素类似,声明元素后,会先关闭然后移除全部当前 appender,只引用声明了的 appender。如果 root 元素没有引用任何 appender,就会失去所有 appender。

4.配置appender

Appender 用标签配置。

1.appender标签的属性

属性: name 和 class。

name 属性指定 appender 的名称,class 属性指定 appender 类的全限定名。

2.appender标签的子标签

子标签种类:标签、标签、标签。这三个标签都是可选的(0或多个)。当appender指向文件时,还可以包含标签,指定写入的文件名。

除了这三个常用元素之外,还可以包含 appender 类的任意数量的 javabean

属性。下图演示了常用结构,注意对 javabean 属性的支持在图中不可见。

f594c6a7c7bdacfd297f94136a60cf93.png

1.子标签

必要属性:class,表示被实例化的Layout类的全限定名。Layout类负责把事件转换为字符串。当Layout指是PatternLayout时,可以省略class属性。

2.子标签

必要属性:class,表示被实例化的Encoder类的全限定名。Encoder 负责两件事,一是把事件转换为字节数组,二是把字节数组写入输出流。当Layout指是PatternLayoutEncoder时,可以省略class属性。

3.子标签

必要属性:class,表示被实例化的Filter类的全限定名。

5.appender累积

默认情况下,appender是累积的,logger会把记录输出到它自身和所有祖先的appender。因此,把一个appender关联到多个logger会导致重复输出。

解决方法:设置logger的additivity属性为false。

74b3ec3c26c9ea7248b94bba287c8561.png

6.设置上下文(LoggerContext)名称

每个logger都会关联到logger上下文。默认情况下,logger上下文名称为default。

标签:设置logger上下文名称。可以方便区分来自不同应用程序的记录。

488deb1fadb3bbc799bc5f09de5d47eb.png

注意:一旦设置logger上下文名称后就不能更改了。

在layout模式里添加“%contextName”就会输出上下文名称。

7.变量替换

什么意思呢,举个例子。当你需要将记录输出到文件中的时候,在中需要用标签指定文件名(通常需要使用绝对路径名),这样固定文件路径可能比较死板,那么还有一种方式,就是通过变量来指定文件路径。

1.简单变量替换

在配置文件中的里使用标签设置变量,在标签中使用变量,通过环境变量指定路径就可以,file标签中结合变量与文件名组成文件的完整路径名称。如下图:

722c69cca8384787dc577139cd439b4a.png

2.系统变量替换

a368ab7a92ce455be049e7c70e2799f0.png

示例1:系统变量替换

5e302171d6859a0864cf5e90a0555730.png

当需要很多变量时,更方便的做法是在一个单独文件里声明所有变量。如下示例2

示例2:

${USER_HOME}/myApp.log

%msg%n

这个配置文件包含对文件“variables1.properties”的引用,该文件里的变量会被读入logback 配置文件的上下文里。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值