java日志框架系列(3):logback框架配置详解
1.Logback配置
1.配置步骤及默认配置
logback即可以通过编程式配置,也可以通过xml的形式配置。
logback配置步骤:
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的配置,更不会影响记录级别。
注意:
4.配置文件修改后自动重新加载
注意:内部实现是这样的,当设置扫描属性为 true 时,会安装一个叫 ReconfigureOnChangeFilter的 TurboFilter。每次调用 logger 的打印方法时,都会进行扫描。
比如,当名为 myLogger 的logger 执行“myLogger.debug("hello");”时,如果scan属性为true,则ReconfigureOnChangeFilter会被调用。而且,即使 myLogger 的 debug 级别被禁用了,仍然会调用上述过滤器。
5.直接调用JoranConfigurator
6.查看状态消息
要想在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.监听状态消息
1.为StatusManager注册StatusListener监听器
2.xml方式注册状态监听器
<configuration>
<statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />
... the rest of the configuration file
</configuration>
通过xml配置文件注册状态监听器,方法是在configuration标签中添加子标签statusListener,并指定实现类。
java日志框架系列(3):logback框架配置详解的更多相关文章
- 【转】logback 常用配置详解(序)logback 简介
原创文章,转载请指明出处:http://aub.iteye.com/blog/1101222, 尊重他人即尊重自己 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透 ...
- logback常用配置详解及logback简介
logback 简介(一) Ceki Gülcü在Java日志领域世界知名.他创造了Log4J ,这个最早的Java日志框架即便在JRE内置日志功能的竞争下仍然非常流行.随后他又着手实现SLF4J 这 ...
- logback 常用配置详解<appender>
logback 常用配置详解 <appender> <appender>: <appender>是<configuration>的子节点,是负责写日志的 ...
- logback 常用配置详解(二) <appender>
logback 常用配置详解(二) <appender> <appender>: <appender>是<configuration>的子节点,是负责写 ...
- logback使用配置详解
title: logback使用配置详解 date: 2017-04-25 16:42:49 tags: 日志 --- 1.介绍 Logback是由log4j创始人设计的另一个开源日志组件,它当前分为 ...
- 深入浅出Mybatis系列(四)---配置详解之typeAliases别名(mybatis源码篇)
上篇文章<深入浅出Mybatis系列(三)---配置详解之properties与environments(mybatis源码篇)> 介绍了properties与environments, ...
- Hibernate4搭建Log4J日志管理(附Log4j.properties配置详解)
1.首先加入slf4j的jar包,即slf4j-api-1.6.1.jar 在hibernate官网下载hibernate-release-4.2.2.Final.zip并解压,在hibernate- ...
- SpringBoot系列(十二)过滤器配置详解
SpringBoot(十二)过滤器详解 往期精彩推荐 SpringBoot系列(一)idea新建Springboot项目 SpringBoot系列(二)入门知识 springBoot系列(三)配置文件 ...
- log4j日志输出到日志文件中和控制台中 +log4j配置详解
1.引入log4j的jar包 https://mvnrepository.com/,可以找到log4j的jar和依赖. 2.创建log4j.properties,并配置log4j #设置日志的级别 , ...
- logback 常用配置详解(序)logback 简介
转自:http://aub.iteye.com/blog/1101260 logback 简介 Ceki Gülcü在Java日志领域世界知名.他创造了Log4J ,这个最早的Java日志框架即便在J ...
随机推荐
- P2663 越越的组队
原题链接 https://www.luogu.org/problem/P2663 很容易看出来是个背包问题嘛: 体积是总分的一半,求最高分,每个同学选或不选,是个 01背包问题. 自信地交上去之后发 ...
- P1169 [ZJOI2007]棋盘制作——悬线法
---恢复内容开始--- 给你一个矩阵,选出最大的棋盘,棋盘的要求是黑白相间(01不能相邻),求出最大的正方形和矩形棋盘的面积: 数据n,m<=2000; 这个一看就可能是n2DP,但是写不出. ...
- python 监听键盘事件pyHook
#coding=utf- import pyHook import pythoncom # 监听到鼠标事件调用 def onMouseEvent(event): if(event.MessageNam ...
- scrapy框架之items项目
Items 主要目标是从非结构化来源(通常是网页)提取结构化数据.Scrapy爬虫可以将提取的数据作为Python语句返回.虽然方便和熟悉,Python dicts缺乏结构:很容易在字段名称中输入错误 ...
- C++ STL partial_sort_copy iterator
vector<int>::iterator iter1 = partial_sort_copy(deq1.begin(), deq1.end(), vec1.begin(), vec1.e ...
- Qt打开文件QFileDialog
//打开Pts文件按钮点击事件void AnalysisPtsDataTool201905::OnOpenFileButtonClick(){ qDebug()<<"open f ...
- centos下使用virtualenv建立python虚拟环境
在centos使用python3的virtualenv,先用yum install python3 安装后pip3也已经安装好了,pip3 install virtualenv, 在系统中新建一个空文 ...
- uni-app 保持登录状态 (Vuex)
在小程序中,保持登录状态是很常见的需求,今天就把写一写使用uni-app框架的保持登录状态功能是怎样实现的. 一.场景需求 1.场景:初始打开---登陆---关闭,再次打开---(已登录)上次关闭前的 ...
- failOnMissingWebXml
使用maven创建项目时有时在pom.xml的war处出现failOnMissingWebXml的错误,根据错误提示的原因可以知道项目是web项目,打包时打成war包. 如果项目里没有web.xml, ...
- MySQL 判断数据库和数据表是否存在
MySQL 判断数据库和数据表是否存在 如何使用SQL查询语句,判断数据库和数据表是否存在? 1.判断数据库是否存在 查询SQL如下: select * from information_schema ...