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. JavaScript 立即执行函数

    js中(function(){…})()立即执行函数写法理解 javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各型各色的写法 ...

  2. vs增加第三方依赖库的方法总结

    转自http://blog.csdn.net/raodotcong/article/details/8998379 先说说普通的两种方法: 方法1:  通过设置工程配置来添加lib库. 转自网上: A ...

  3. Linux删除apt-get安装的软件

    我们都知道安装软件最简单的方法是apt-get install,但是卸载就不常用了,如何卸载呢?1.sudo apt-get remove xxxxxsudo apt-get autoremove2. ...

  4. QML Image: Cannot open: qrc:///new.pic.png

    初次遇到这个问题真有点摸不着头脑,于是乎百度一下咯,但是百度一向没有什么用,该有的没有,没用的回答倒是有特么一大堆. 自己解决: 我的解决方法很简答: 第一步:把图片放到当前路径下,也就是和.pro一 ...

  5. Combination Sum II

    public class Solution { public List<List<Integer>> combinationSum2(int[] candidates, int ...

  6. java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I错误解决

    在J2EE框架下开发web网站,这种问题经常遇到,只要我们网上搜一下,就可以看到很多版本的,我整理一下: 第一种可能性解决:看看我的项目:主要 是里面的Structs 1.3 (structs 2)和 ...

  7. VS安装部署

    Windows Installer 部署要求管理员权限并且只允许受限制的用户安装;而 ClickOnce 部署允许非管理用户安装应用程序并仅授予应用程序所需要的那些代码访问安全权限.

  8. 【转载】 Java 7之基础 - 强引用、弱引用、软引用、虚引用

    原文地址:http://blog.csdn.net/mazhimazh/article/details/19752475 1.强引用(StrongReference) 强引用是使用最普遍的引用.如果一 ...

  9. CentOS源 Ubuntu 源 OpenSUSE-----持续汇总

    CentOS 基础(常用)的源:http://dl.fedoraproject.org/pub/epel/epel-release-latest-5.noarch.rpmhttp://dl.fedor ...

  10. C#连接操作mysql实例

    第三方组件:Mysql.Data.dll说明:去官方网站下载Mysql.Data.dll,然后在项目中添加该组件的引用,在代码页里输入using Mysql.Data.MysqlClient,我们就可 ...