1. logback 配置

logback的配置方式包括:编程配置、XML文件配置、Groovy文件配置。对于使用log4j的用户,还可以通过logback提供的工具( http://logback.qos.ch/translator/ ) 将log4j.properties配置文件转换为logback.xml格式。

logback 初始化配置的步骤如下:

  1. 在类路径下依次查找 logback.groovy, logback-test.xml, logback.xml文件;
  2. 若找到配置文件,则读取文件,配置logback;
  3. 如果没找到任何配置文件,且JVM包含ServiceLoader(JDK 6以上),则由ServiceLoader解析com.qos.logback.classic.spi.Configurator的实现。
  4. 如果以上均失败,则使用BasicConfigurator的默认配置,输出日志到控制台。

 

3、4两步用于在没找到配置文件时提供默认配置。

 

1.1 logback的默认配置

不提供配置文件,logback使用其默认配置。先给个示例代码:

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 配置的更多相关文章

  1. 剖析项目多个logback配置(下)

    来源:http://www.cnblogs.com/guozp/p/5973038.html 上篇大概描述了logback的加载顺序以及加载的源码,本篇将分析如果在你的Maven或者其他多模块的项目中 ...

  2. Spring Boot系列一:默认日志logback配置解析

    前言 今天来介绍下Spring Boot如何配置日志logback,我刚学习的时候,是带着下面几个问题来查资料的,你呢 如何引入日志? 日志输出格式以及输出方式如何配置? 代码中如何使用? 正文 Sp ...

  3. (网页)Java日志记录框架Logback配置详解(企业级应用解决方案)(转)

    转自CSDN: 前言 Logback是现在比较流行的一个日志记录框架,它的配置比较简单学习成本相对较低,所以刚刚接触该框架的朋友不要畏惧,多花点耐心很快就能灵活应用了.本篇博文不会具体介绍Logbac ...

  4. Java中多环境Logback配置与ELK日志发送

    Java中多环境Logback配置与ELK日志发送   一.项目基于SpringBoot实现,引入SpringBoot相关库后,本文还要讲上传到ELK的Logstash,所以需要在pom.xml中加入 ...

  5. logback配置详解

    本文转自:https://segmentfault.com/a/1190000008315137 概览 简单地说,Logback 是一个 Java 领域的日志框架.它被认为是 Log4J 的继承人.L ...

  6. SpringBoot Logback配置,SpringBoot日志配置

    SpringBoot Logback配置,SpringBoot日志配置  SpringBoot springProfile属性配置 ================================ © ...

  7. spring整合mybatis、hibernate、logback配置

    Spring整合配置Mybatis 1.配置数据源(连接数据库最基本的属性配置,如数据库url,账号,密码,和数据库驱动等最基本参数配置) <!-- 导入properties配置文件 --> ...

  8. logback -- 配置详解 -- 四 -- <filter>

    附: logback.xml实例 logback -- 配置详解 -- 一 -- <configuration>及子节点 logback -- 配置详解 -- 二 -- <appen ...

  9. logback -- 配置详解 -- 三 -- <encoder>

    附: logback.xml实例 logback -- 配置详解 -- 一 -- <configuration>及子节点 logback -- 配置详解 -- 二 -- <appen ...

随机推荐

  1. HTML DOM 节点

    一切皆节点 在 HTML DOM (文档对象模型)中,节点主要包括(括号中用数字表示节点类型):元素(1).属性(2).文本(3,其中换行符也是一个文本节点).注释(8).文档(9). 其中重要的方法 ...

  2. 关于java中static的应用及一种常见错误

    JAVA中的static的应用 在web项目的开发中,遇到了类中的static方法不奏效. 在开发过程中,我定义了一个静态方法初始化数组,但是在创建类的对象后,访问该数组是全为null.我一直以为st ...

  3. Java中类的数据成员的初始化顺序

    对于单一类: 属性初始化 ---> 按顺序执行静态初始化块(只能操作静态属性) ---> 按顺序执行初始化块 ---> 构造方法 对于存在继承关系的类: 父类属性初始化 ---> ...

  4. Examples of complexity pattern

    O(1):constant - the operation doesn't depend on the size of its input, e.g. adding a node to the tai ...

  5. 【jq】c#零基础学习之路(5)自己编写简单的Mylist<T>

    public class MyList<T> where T : IComparable { private T[] array; private int count; public My ...

  6. epoll 反应堆

    epoll反应堆模型 ================================ 下面代码实现的思想:epoll反应堆模型:( libevent 网络编程开源库 核心思想) . 普通多路IO转接 ...

  7. iOS初步开发

    趁公司目前iOS整个没人管理,我折腾一下调试工具,刚好nordic也有参考demo. 然后作为helloworld级别的我... 就直接down下来,结果,还不错, 不像oschina.net和cod ...

  8. 用word制作电子书最简捷模式 支持epub和mobi目录

    因为制作一本OCR的电子书,转到word编辑排版后,用calibre转成mobi发现没有目录,在网上查了资料研究了一下,终于解决了目录问题,根本不用将word文档转换为什么htm或txt,尤其是转换t ...

  9. Linux java环境安装

    一.jdk yum 安装方法 1.wegt http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260 ...

  10. 网络请求三方库——OkHttp

    我们知道在Android开发中是可以直接使用现成的API进行网络请求的,就是使用 HttpClient 和 HttpURLConnention ,而Android 4.4 之后 HttpClient  ...