|
package或多个<appender-ref>。
实例:假如不想看到"chapters.configuration"包中任何DEBUG信息,如下
|
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned by default the type ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
<encoder>
<pattern>
%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
</pattern>
</encoder>
</appender>
<logger name="chapters.configuration" level="INFO" />
<!-- 严格的说,下面的level属性是不需要的,因为root的默认值为DEBUG -->
<root level="DEBUG">
<appender-ref ref="STDOUT" />
</root>
</configuration>
|
包"chapters.configuration"的level属性设置为"INFO",这样DEBUG信息均被过滤掉了。如果将该配置文件作为参数传递给MyApp3,其输出如下:
|
20:59:32.913 [main] INFO chapters.configuration.MyApp3 - Entering application.
20:59:32.917 [main] INFO chapters.configuration.MyApp3 - Exiting application.
|
此时由"chapters.configuration.Foo"生成的DEBUG信息被抑制。
可以按照自己的想法随意设置多个logger的level,比如,将chapters.configuration 包设置INFO,单独把Foo设置为DEBUG,如下所示:
|
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned by default the type ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
<encoder>
<pattern>
%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
</pattern>
</encoder>
</appender>
<logger name="chapters.configuration" level="INFO" />
<logger name="chapters.configuration.Foo" level="DEBUG" />
<root level="DEBUG">
<appender-ref ref="STDOUT" />
</root>
</configuration>
|
用该文件作为参数运行MyApp3,输出如下:
|
21:16:56.913 [main] INFO chapters.configuration.MyApp3 - Entering application.
21:16:56.915 [main] DEBUG chapters.configuration.Foo - Did it again!
21:16:56.916 [main] INFO chapters.configuration.MyApp3 - Exiting application.
|
下面列出上面各个logger对应的level:
|
Logger 名
|
指定的 Level
|
实际的 Level
|
|
root
|
DEBUG
|
DEBUG
|
|
chapters.configuration
|
INFO
|
INFO
|
|
chapters.configuration.MyApp3
|
null
|
INFO
|
|
chapters.configuration.Foo
|
DEBUG
|
DEBUG
|
由此可见,MyApp3的INFO和Foo.doIt()的DEBUG都启用了。而root logger总是为非NULL的,其默认值为DEBUG。
<appender>

<appender>用于配置日志输出位置。属性:
|
属性名
|
类型
|
Use
|
描述
|
|
name
|
string
|
required
|
appender名,可随意取
|
|
class
|
string
|
required
|
appender对应的类,需包含完整路径,如输出到console对应的:class="ch.qos.logback.core.ConsoleAppender"
|
子元素:
|
元素名
|
minOccurs
|
maxOccurs
|
|
layout
|
0
|
1
|
|
encoder
|
0
|
unbounded
|
|
filter
|
0
|
unbounded
|
layout
layout元素必须包含class元素,包含layout类的完全限定名。
|
<configuration>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>myApp.log</file>
<!-- encoders are assigned by default the type ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
<encoder>
<pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
</encoder>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="FILE" />
<appender-ref ref="STDOUT" />
</root>
</configuration>
|
2.6 定义变量
可以在配置文件中定义变量,也可以从外部导入。在logback的XML配置文件中可以用<property>和<variable>(1.07之后)定义变量。下面定义一个变量,用于定义输出文件位置:
|
<configuration>
<property name="USER_HOME" value="/home/sebastien" />
<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 -DUSER_HOME="/home/sebastien" MyApp2
|
然后在配置文件中引用该变量:
|
<configuration>
<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>
|
如果需要很多变量,则以一个单独的文件存放所有变量比较合适:
下面的配置文件引用了一个变量:
|
<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>
|
该文件包含variables1.properties属性文件的引用。属性文件中定义的变量会被作为本地变量引入,variable.properties文件格式如下:
|
USER_HOME=/home/sebastien
|
也可以直接引用类路径下的文件:
|
<configuration>
<property resource="resource1.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>
|
作用域
还可以对上面定义的变量进行作用域限制,local, context或system,分别对应配置范围,logback程序范围及JVM范围,定义方式如下:
|
<configuration>
<property scope="context" name="nodeId" value="firstNode" />
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>/opt/${noteId}/myApp.log</file>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="FILE" />
</root>
</configuration>
|
scope可用值有:local, context 和 system。
默认值
假设变量名为aName,指定其默认值为golder,指定语法为:"${aName:-golden}"。
嵌套变量
嵌套指一个变量可以引用另一个变量。包括值嵌套、名嵌套以及默认值嵌套。
值嵌套
|
USER_HOME=/home/sebastien
fileName=myApp.log
destination=${USER_HOME}/${fileName}
|
destination变量值包含对USER_HOME变量值和fileName变量值的引用。
名嵌套
当引用一个变量时,变量名可能包含对其他变量的引用。例如,如果变量"userid"的值为"alice",则"${${userid}.password}"表示名为"alice.password"的变量。
默认值嵌套
如变量"id"未分配值,变量"userid"值为"alice",则"${id:-${userid}}"
- 剖析项目多个logback配置(下)
来源:http://www.cnblogs.com/guozp/p/5973038.html 上篇大概描述了logback的加载顺序以及加载的源码,本篇将分析如果在你的Maven或者其他多模块的项目中 ...
- Spring Boot系列一:默认日志logback配置解析
前言 今天来介绍下Spring Boot如何配置日志logback,我刚学习的时候,是带着下面几个问题来查资料的,你呢 如何引入日志? 日志输出格式以及输出方式如何配置? 代码中如何使用? 正文 Sp ...
- (网页)Java日志记录框架Logback配置详解(企业级应用解决方案)(转)
转自CSDN: 前言 Logback是现在比较流行的一个日志记录框架,它的配置比较简单学习成本相对较低,所以刚刚接触该框架的朋友不要畏惧,多花点耐心很快就能灵活应用了.本篇博文不会具体介绍Logbac ...
- Java中多环境Logback配置与ELK日志发送
Java中多环境Logback配置与ELK日志发送 一.项目基于SpringBoot实现,引入SpringBoot相关库后,本文还要讲上传到ELK的Logstash,所以需要在pom.xml中加入 ...
- logback配置详解
本文转自:https://segmentfault.com/a/1190000008315137 概览 简单地说,Logback 是一个 Java 领域的日志框架.它被认为是 Log4J 的继承人.L ...
- SpringBoot Logback配置,SpringBoot日志配置
SpringBoot Logback配置,SpringBoot日志配置 SpringBoot springProfile属性配置 ================================ © ...
- spring整合mybatis、hibernate、logback配置
Spring整合配置Mybatis 1.配置数据源(连接数据库最基本的属性配置,如数据库url,账号,密码,和数据库驱动等最基本参数配置) <!-- 导入properties配置文件 --> ...
- logback -- 配置详解 -- 四 -- <filter>
附: logback.xml实例 logback -- 配置详解 -- 一 -- <configuration>及子节点 logback -- 配置详解 -- 二 -- <appen ...
- logback -- 配置详解 -- 三 -- <encoder>
附: logback.xml实例 logback -- 配置详解 -- 一 -- <configuration>及子节点 logback -- 配置详解 -- 二 -- <appen ...
随机推荐
- css中的背景、边框、补丁相关属性
css中的背景.边框.补丁相关属性 关于背景涉及到背景颜色与背景图片 背景颜色background-color即可设定: 背景图片background-image即可设定: 但是背景图片还涉及到其他的 ...
- 【Cocos2d-x 3.x】 精灵帧缓存和纹理缓存
转自泰然网(Cocos2d-x 3.x官方文档):精灵帧缓存:http://www.tairan.com/archives/6378/ 纹理缓存: http://www.tairan.com/ar ...
- caching redirect views leads to memory leak (Spring 3.1)
在Spring 3.1以及以下版本使用org.springframework.web.servlet.view.UrlBasedViewResolver + cache(如下配置),在会出现任意种re ...
- Web集群缓存一致性的思考
共享cache+数据库实现缓存一致性: 1.1 memcache + mongo+定时器 1.1.1 memcache 优点:web集群共享数据 缺点:数据生命周期的不可预估性 1.1.2 mongo ...
- 【转】mysql忘记密码(未初始化)
Mac OS X - 重置 MySQL Root 密码您是否忘记了Mac OS 的MySQL的root密码? 通过以下4步就可重新设置新密码:1. 停止 mysql server. 通常是在 '系 ...
- linux计划任务
一.单一计划任务 安装at: # yum -y install at 启动: # /etc/init.d/atd start 查看是否运行: # ps aux | grep atd 创建计划 # at ...
- Oracle启动脚本,开机自启动设置
#!/bin/sh # chkconfig: # description: Oracle auto start-stop script. # # Set ORA_HOME to be equivale ...
- Linux makefile 教程 非常详细,且易懂
最近在学习Linux下的C编程,买了一本叫<Linux环境下的C编程指南>读到makefile就越看越迷糊,可能是我的理解能不行. 于是google到了以下这篇文章.通俗易懂.然后把它贴出 ...
- JS中正则匹配的三个方法match exec test的用法
javascript中正则匹配有3个方法,match,exec,test: match是字符串的一个方法,接收一个RegExp对象做为参数: match() 方法可在字符串内检索指定的值,或找到一个或 ...
- JavaScript 介绍
JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 ...
|