007_logback配置
1. Logback采取下面的步骤进行自我配置
1.1. 尝试在classpath下查找文件logback-test.xml;
1.2. 尝试在classpath下查找文件logback.groovy;
1.3. 尝试在classpath下查找文件logback.xml;
1.4. 假设配置文件logback-test.xml、logback.groovy和logback.xml都不存在, 那么logback默认地会调用BasicConfigurator, 创建一个最小化配置。最小化配置由一个关联到根logger的ConsoleAppender组成。输出用模式为%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n的PatternLayoutEncoder进行格式化。还有, 根logger默认级别是DEBUG。最后一步是为了在缺少配置文件时提供默认(但基本的)记录功能。
2. 默认配置例子
2.1. 新建一个名为DefaultCfg的Java项目, 同时添加相关jar包。
2.2. DefaultCfg.java
package com.fj.cfg;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class DefaultCfg {private static final Logger logger = LoggerFactory.getLogger(DefaultCfg.class);public static void main(String[] args) {logger.error("没有logback-test.xml配置");logger.warn("没有logback.groovy配置");logger.info("没有logback.xml配置");logger.debug("logback默认地调用BasicConfigurator, 创建一个最小化配置。");logger.trace("这条日志使用默认配置的默认级别不会被打印。");}
}
2.3. 运行项目
3. 用logback-test.xml或logback.xml自动配置
3.1. 如果classpath里有logback-test.xml或logback.xml, logback会试图用它进行自我配置。下面的配置文件与没有配置文件时, 默认调用BasicConfigurator创建最小化配置是等效的。
<configuration><appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <encoder charset="UTF-8"> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root><appender-ref ref="stdout" /></root>
</configuration>
4. 配置打印内部信息
4.1. 设置configuration元素的debug属性为true, 会打印logback状态数据。
4.2. 新建一个名称为LogbackCfg的Java项目, 添加相关jar包
4.3. 新建一个名为config的source folder, 在config文件夹下创建logback-test.xml配置文件
4.4. 编辑logback-test.xml
<configuration debug="true"><appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <encoder charset="UTF-8"> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root><appender-ref ref="stdout" /></root>
</configuration>
4.5. 编写PrintStatusByCfg.java
package com.zr.cfg;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class PrintStatusByCfg {private final static Logger logger = LoggerFactory.getLogger(PrintStatusByCfg.class);public static void main(String[] args) {logger.info("configuration debug = true时, 会打印内部信息。");}
}
4.6. 运行项目
5. 配置文件修改后自动重新加载
5.1. 如果设置成自动重新加载, logback-classic会扫描配置文件里的变化, 并且当发生变化后进行重新配置。设置访方法是设configuration元素的scan属性为true。
<configuration scan="true">...
</configuration
5.2. 默认情况下, 每隔一分钟扫描一次。 configuration元素的scanPeriod属性控制扫描周期, 其值可以带时间单位, 包括: milliseconds、seconds、minutes和hours。
<configuration scan="true" scanPeriod="30 seconds">...
</configuration>
5.3. 如果没写明时间单位, 则默认为毫秒。
5.4. 内部实现是这样的, 当设置扫描属性为true时, 会安装一个叫ReconfigureOnChangeFilter的TurboFilter。每次调用logger的打印方法时, 都会进行扫描。比如, 当名为myLogger的logger执行"myLogger.debug("hello");"时, 如果scan属性为true, 则ReconfigureOnChangeFilter会被调用。而且, 即使myLogger的debug级别被禁用了, 仍然会调用上述过滤器。
5.5. 考虑到在任何logger在每次被调用时都要调用ReconfigureOnChangeFilter, 这个过滤器的性能就变得十分关键了。为提高性能, 不会在每个logger被调用时去检查是否需要扫描, 而是每隔16次记录操作进行一次检查。简言之, 当配置文件改变后, 它会被延时重新加载, 延时时间由扫描间隔时间和一些logger调用所决定。
6. 直接调用JoranConfigurator
6.1. Logback依赖Joran, Joran是logback-core的一部分, 是个配置类库。Logback的默认配置机制是调用JoranConfigurator对classpath上的默认配置文件进行处理。不管出于什么理由, 如果你想重新实现logback的默认配置机制的话, 你可以直接调用JoranConfigurator。
6.2. 创建一个名为的Java项目, 同时添加相关jar包
6.3. 新建cfg文件夹, 在cfg下创建logback.xml
6.4. 编辑logback.xml
<configuration><appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <encoder charset="UTF-8"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root><appender-ref ref="stdout" /></root>
</configuration>
6.5. 编辑CodeUseCfg.java
package com.zr.cfg;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.joran.JoranConfigurator;
import ch.qos.logback.core.joran.spi.JoranException;public class CodeUseCfg {private static final Logger logger = LoggerFactory.getLogger(CodeUseCfg.class);public static void main(String[] args) {// 上下文LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();// Joran配置文件处理类JoranConfigurator cfg = new JoranConfigurator();cfg.setContext(lc);// 上下文已经读取配置文件或使用默认配置文件, 这里进行重置操作。lc.reset();try {cfg.doConfigure("cfg/logback.xml");} catch (JoranException e) {e.printStackTrace();}logger.info("使用代码设置配置文件");}
}
6.6. 运行结果
7. html查看状态消息
7.1. Logback把内部数据放在一个StatusManager对象里,并通过LoggerContext访问。
7.2. StatusManager通过logback上下文来访问所有数据对象。为把内存占用保持在合理的范围内,默认的StatusManager实现将状态消息按头和尾两部分存储。头部存储开始的H条状态消息,尾部存储后面的T条消息。现在的H=T=150,将来或许会改变。
7.3. Logback-classic带了一个叫ViewStatusMessagesServlet的Servlet,它以HTML表格的格式打印与当前LoggerContext关联的StatusManager的内容。
7.4. 新建一个名为ViewStatusMessagesServlet的动态Web工程, 同时添加相关jar包
7.5. 在web.xml里配置servlet
7.6. 发送请求
007_logback配置相关推荐
- nginx配置http、https访问,nginx指定ssl证书,阿里云腾讯云华为云设置nginx https安全访问
nginx配置http.https访问 要设置https访问需要从对应的云厂商申请证书,并下载Nginx证书到服务器. 我这里从阿里云申请了免费的域名证书,然后将证书放置在服务器的/etc/ssl/. ...
- 在kotlin companion object中读取spring boot配置文件,静态类使用@Value注解配置
在kotlin companion object中读取配置文件 静态类使用@Value注解配置 class Config {@Value("\${name}")fun setNam ...
- 大数据学习01——配置虚拟机节点相关网络
1.配置mac地址和ip (1)更改适配器设置 找到这个后开始设置windows中的网络连接 (2)接着对三台虚拟机的mac地址和ip进行设置 1.mac地址设置 进入linux节点中的这个位置进行设 ...
- plsql配置多数据源,想换哪个换哪个
现在的公司内部普遍使用plsql对数据库进行管理.而数据库非常多,从测试到线上环境数据库那么多,我们通常使用同一配置管理,便于切换.那么配置数据库连接就成为了很重要的一步. 1.安装plsql (这里 ...
- Linux下docker安装配置oracle,oracle创建用户并远程连接,实测可用!
最近在给同学弄毕业设计的数据库,因为oracle在个人电脑上极不稳定,所以他的电脑数据库崩溃了,这时候我就在docker上为他拉了一个oracle,解决了问题. docker的安装共有以下几步,实测没 ...
- Linux下tomcat的安装与卸载以及配置(超简单)
无敌简单的几步 1.安装 //首先你需要下载好tomcat包 sudo tar -xvzf apache-tomcat-7.0.85.tar.gz(这里是包名) -C 你要放的位置 2.卸载 rm - ...
- Maven安装与配置(最实用!!!)eclipse中配置maven
Maven安装与配置 一.需要准备的东西 JDK Eclipse(本章主要是在eclipse中进行配置maven) Maven程序包 二.下载与安装 1. 前往maven下载最新版的Maven程序: ...
- CentOS Docker安装配置部署Golang web helloworld
目录[阅读时间:约5分钟] 一.Docker简介 二.Docker的安装与配置[CentOS环境] 三.Docker部署Golang web helloworld 四.Docker与虚拟机的区别 五. ...
- centos使用镜像源轻松配置golang+vscode的方法
Title:centos使用镜像源轻松配置golang+vscode的方法 (阅读时间:约5分钟) 零.序言 最近笔者在上一门名为服务计算的课程,在老师的作业博客中提到,安装golang+vscode ...
最新文章
- Linux Exploit系列之三 Off-By-One 漏洞 (基于栈)
- iOS 隐藏顶部状态栏方式和更改颜色
- Katalon Studio自动化测试框架使用【1】--- 环境安装以及基础配置(MacOS)
- 17个之多!Windows Vista各版本功能区别详解
- C++kruskals算法生成最小协议树(附完整源码)
- coursera无法观看视频解决方法
- 作为前端,你需要了解的js构造函数和原型
- 个人收藏的flex特效网址【经典中的极品】
- Java 蓝桥杯 算法 和为T
- java interface 默认_Java8 接口interface默认方法
- 解决视图状态消息验证代码 (MAC) 错误
- phonegap安装中的问题
- 计算机中的PS颜色填充快捷键,ps颜色填充快捷键是什么
- 元宇宙势不可挡,facebook已更名Meta,前端人又能做什么?
- 神经网络可视化工具Netron
- python获取工作目录路径为C:\Users\用户名\AppData\Local\Temp...解决方案
- IT架构师_隽语集(Design Thinking _0101)
- Git + Github初入门
- 揭秘青提WiFi分销小程序到底有多赚钱?商家的宝贝代理的吸金利器
- The annotation of C++ primer {藤原豆腐坊自家用}