1.Logback配置

1.配置步骤及默认配置

logback即可以通过编程式配置,也可以通过xml的形式配置。

logback配置步骤:

1. 尝试在 classpath 下查找文件 logback-test.xml;
2. 如果文件不存在,则查找文件 logback.xml;
3. 如果两个文件都不存在,logback 用 BasicConfigurator 自动对自己进行配置(默认配置),这会导致记录输出到控制台。
 
注意:当配置文件 logback-test.xml 和 logback.xml 都不存在,那么 logback 默认地会调用BasicConfigurator , 创 建一 个 最小 化配 置 。最 小化 配置 由 一个 关联 到 根 logger 的ConsoleAppender 组成。输出用模式为%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}- %msg%n 的 PatternLayoutEncoder 进行格式化。还有,根 logger 默认级别是 DEBUG。

2.xml文件进行配置

在此通过xml文件创建一个上一小节中最小化配置,并将xml文件放到classpath中,代码如下:

<configuration> 
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  <!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>
  <root level="debug">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

3.自动打印警告和错误消息

示例:打印logback的内部信息状态

 package logback;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.core.util.StatusPrinter;
public class Demo2 {
private static Logger logger=LoggerFactory.getLogger(Demo2.class);
public static void main(String[] args) {
// TODO Auto-generated method stub
//获得logback的logger上下文
LoggerContext context=(LoggerContext) LoggerFactory.getILoggerFactory();
//打印内部的日志:context找配置文件的过程,以及最终的配置
StatusPrinter.print(context);
logger.info("enter application.");
//Foo foo=new Foo();
//foo.doIt();
logger.info("exit application.");
}
}

如果一切顺利的话,控制台会输出以下内容:

14:17:33,156 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
14:17:33,157 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
14:17:33,157 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/E:/code/myeclipse_workspace/spring_heima_video/logback/bin/logback.xml]
14:17:33,237 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
14:17:33,237 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
14:17:33,246 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT]
14:17:33,252 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
14:17:33,310 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to DEBUG
14:17:33,310 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT]
14:17:33,311 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
14:17:33,312 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@198e2867 - Registering current configuration as safe fallback point 14:17:33.318 [main] INFO logback.Demo2 -enter application.
14:17:33.321 [main] INFO logback.Demo2 -exit application.

总结一下:在代码中可以通过ch.qos.logback.core.util.StatusPrinter对象方便的获得logback框架内部的状态。在配置文件中同样可以达到获得logback框架内部状态的这种效果,方法是设置configuration标签的debug属性为true;请注意debug属性只与状态数据有关,它不影响logback的配置,更不会影响记录级别。

注意

把 configuration 元素的 debug 属性设为 true 后,会输出状态信息,但是前提是:
1. 找到了配置文件;
2. 配置文件是格式化良好的 XML。
如果其中任一条件未满足,Joran 就会因为配置文件不可读而无法读取 debug 属性。如果找到了配置文件,但却不是格式化良好的,那么 logback 会检测出错误并把内部状态打印到控制台。然而,如果找不到配置文件,由于这不是个严重的错误,logback 不会自动打印状态数据。

4.配置文件修改后自动重新加载

如果设置成自动重新加载,logback-classic 会扫描配置文件里的变化,并且当发生变化后进行重新配置。设置方法是设 configuration 元素的 scan 属性为 true。

注意:内部实现是这样的,当设置扫描属性为 true 时,会安装一个叫 ReconfigureOnChangeFilter的 TurboFilter。每次调用 logger 的打印方法时,都会进行扫描。

比如,当名为 myLogger 的logger 执行“myLogger.debug("hello");”时,如果scan属性为true,则ReconfigureOnChangeFilter会被调用。而且,即使 myLogger 的 debug 级别被禁用了,仍然会调用上述过滤器。

5.直接调用JoranConfigurator

Logback 依赖 Joran,Joran 是 logback-core 的一部分,是个配置类库。Logback 的默认配置机制是调用JoranConfigurator 对classpath上的默认配置文件进行处理。不管出于什么理由,如果你想重新实现 logback 的默认配置机制的话,你可以直接调用 JoranConfigurator。

6.查看状态消息

Logback 把内部数据放在一个 StatusManager 对象里,并通过 LoggerContext 访问。
StatusManager 通过 logback 上下文来访问所有数据对象。为把内存占用保持在合理的范围内,默认的 StatusManager 实现将状态消息按头和尾两部分存储。头部存储开始的 H 条状态消息,尾部存储后面的 T 条消息。现在的 H=T=150,将来或许会改变。

要想在web程序中实现上述功能,可以在WEB-INF/web.xml中添加如下内容:

<servlet>
<servlet-name>ViewStatusMessages</servlet-name>
  <servlet-class>ch.qos.logback.classic.ViewStatusMessagesServlet</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>ViewStatusMessages</servlet-name>
  <url-pattern>/lbClassicStatus</url-pattern>
</servlet-mapping>

通过浏览器查看表格形式的logback内部状态信息的网址为:http://host/yourWebapp/lbClassicStatus。

7.监听状态消息

你也可以为 StatusManager 附加一个 StatusListener,这样就能立即对状态消息作出响应,尤其对那些 logback 配置完成之后的消息。注册一个状态监听器可以方便地实现对 logback内部状态的无人监管。
 
logback有一个名称为OnConsoleStatusListener的StatusListener接口实现,可以把状态消息打印到控制台。

1.为StatusManager注册StatusListener监听器

 
实例1:演示如何为StatusManager注册一个OnConsoleStatusListener实例。

注意:注册了的状态监听器只会接收被注册之后的状态消息,不会接收注册之前的消息。

2.xml方式注册状态监听器

<configuration> 
  <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />
  ... the rest of the configuration file
</configuration>

通过xml配置文件注册状态监听器,方法是在configuration标签中添加子标签statusListener,并指定实现类。

java日志框架系列(3):logback框架配置详解的更多相关文章

  1. 【转】logback 常用配置详解(序)logback 简介

    原创文章,转载请指明出处:http://aub.iteye.com/blog/1101222, 尊重他人即尊重自己 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透 ...

  2. logback常用配置详解及logback简介

    logback 简介(一) Ceki Gülcü在Java日志领域世界知名.他创造了Log4J ,这个最早的Java日志框架即便在JRE内置日志功能的竞争下仍然非常流行.随后他又着手实现SLF4J 这 ...

  3. logback 常用配置详解<appender>

    logback 常用配置详解 <appender> <appender>: <appender>是<configuration>的子节点,是负责写日志的 ...

  4. logback 常用配置详解(二) <appender>

    logback 常用配置详解(二) <appender> <appender>: <appender>是<configuration>的子节点,是负责写 ...

  5. logback使用配置详解

    title: logback使用配置详解 date: 2017-04-25 16:42:49 tags: 日志 --- 1.介绍 Logback是由log4j创始人设计的另一个开源日志组件,它当前分为 ...

  6. 深入浅出Mybatis系列(四)---配置详解之typeAliases别名(mybatis源码篇)

    上篇文章<深入浅出Mybatis系列(三)---配置详解之properties与environments(mybatis源码篇)> 介绍了properties与environments, ...

  7. Hibernate4搭建Log4J日志管理(附Log4j.properties配置详解)

    1.首先加入slf4j的jar包,即slf4j-api-1.6.1.jar 在hibernate官网下载hibernate-release-4.2.2.Final.zip并解压,在hibernate- ...

  8. SpringBoot系列(十二)过滤器配置详解

    SpringBoot(十二)过滤器详解 往期精彩推荐 SpringBoot系列(一)idea新建Springboot项目 SpringBoot系列(二)入门知识 springBoot系列(三)配置文件 ...

  9. log4j日志输出到日志文件中和控制台中 +log4j配置详解

    1.引入log4j的jar包 https://mvnrepository.com/,可以找到log4j的jar和依赖. 2.创建log4j.properties,并配置log4j #设置日志的级别 , ...

  10. logback 常用配置详解(序)logback 简介

    转自:http://aub.iteye.com/blog/1101260 logback 简介 Ceki Gülcü在Java日志领域世界知名.他创造了Log4J ,这个最早的Java日志框架即便在J ...

随机推荐

  1. 畅通工程续(HDU 1874)(简单最短路)

    某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多.这让行人很困扰. 现在 ...

  2. ipv4保留地址

    曾经以为保留地址下面三类.原来使用中还有很多的. A类 10.0.0.0--10.255.255.255 B类 172.16.0.0--172.31.255.255 C类 192.168.0.0--1 ...

  3. 使用 nginx_rtmp_module 搭建个人学习流媒体服务器

    nginx 共享服务器中的视频 如果服务器处于内网或者没有公网ip,可以使用 相关软件进行打洞或转发 如: frpc https://github.com/fatedier/frp 或 holer h ...

  4. vmware 安装 VMwareTools

    mkdir /mnt/cdrom mount /dev/cdrom /mnt/cdrom cd /mnt/cdrom cp VMwareTools-x.x.x-yyyy.tar.gz ~/ cd ~ ...

  5. POJ 2486 Apple Tree ——(树型DP)

    题意是给出一棵树,每个点都有一个权值,从1开始,最多走k步,问能够经过的所有的点的权值和最大是多少(每个点的权值只能被累加一次). 考虑到一个点可以经过多次,设dp状态为dp[i][j][k],i表示 ...

  6. encode && decode && 加密 &&解密

    1.urlencode 当字符串数据以url的形式传递给web服务器时,字符串中是不允许出现空格和特殊字符的(除了 -_.) string urlencode ( string $str )返回字符串 ...

  7. spring cloud gateway:Unable to find GatewayFilterFactory with name Hystrix

    在springcloud gateway中引用Hystrix filter 编译启动时提示 Unable to find GatewayFilterFactory with name Hystrix ...

  8. 第二章 c语言概述

    一.#include指令和头文件 1.#include C预处理指令,C编译器在编译前对源代码做一些准备工作 2.stdio.h标准输入输出头文件,提供了关于输入输出的信息供编译器使用 头文件包含了建 ...

  9. Flume-自定义 Sink

    Sink 不断地轮询 Channel 中的事件且批量地移除它们,并将这些事件批量写入到存储或索引系统.或者被发送到另一个 Flume Agent. Sink 是完全事务性的. 在从 Channel 批 ...

  10. java递归复制文件夹

    package com.haiyisoft.hyoaService; import java.io.BufferedInputStream;import java.io.BufferedOutputS ...