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配置相关推荐

  1. nginx配置http、https访问,nginx指定ssl证书,阿里云腾讯云华为云设置nginx https安全访问

    nginx配置http.https访问 要设置https访问需要从对应的云厂商申请证书,并下载Nginx证书到服务器. 我这里从阿里云申请了免费的域名证书,然后将证书放置在服务器的/etc/ssl/. ...

  2. 在kotlin companion object中读取spring boot配置文件,静态类使用@Value注解配置

    在kotlin companion object中读取配置文件 静态类使用@Value注解配置 class Config {@Value("\${name}")fun setNam ...

  3. 大数据学习01——配置虚拟机节点相关网络

    1.配置mac地址和ip (1)更改适配器设置 找到这个后开始设置windows中的网络连接 (2)接着对三台虚拟机的mac地址和ip进行设置 1.mac地址设置 进入linux节点中的这个位置进行设 ...

  4. plsql配置多数据源,想换哪个换哪个

    现在的公司内部普遍使用plsql对数据库进行管理.而数据库非常多,从测试到线上环境数据库那么多,我们通常使用同一配置管理,便于切换.那么配置数据库连接就成为了很重要的一步. 1.安装plsql (这里 ...

  5. Linux下docker安装配置oracle,oracle创建用户并远程连接,实测可用!

    最近在给同学弄毕业设计的数据库,因为oracle在个人电脑上极不稳定,所以他的电脑数据库崩溃了,这时候我就在docker上为他拉了一个oracle,解决了问题. docker的安装共有以下几步,实测没 ...

  6. Linux下tomcat的安装与卸载以及配置(超简单)

    无敌简单的几步 1.安装 //首先你需要下载好tomcat包 sudo tar -xvzf apache-tomcat-7.0.85.tar.gz(这里是包名) -C 你要放的位置 2.卸载 rm - ...

  7. Maven安装与配置(最实用!!!)eclipse中配置maven

    Maven安装与配置 一.需要准备的东西 JDK Eclipse(本章主要是在eclipse中进行配置maven) Maven程序包 二.下载与安装 1. 前往maven下载最新版的Maven程序: ...

  8. CentOS Docker安装配置部署Golang web helloworld

    目录[阅读时间:约5分钟] 一.Docker简介 二.Docker的安装与配置[CentOS环境] 三.Docker部署Golang web helloworld 四.Docker与虚拟机的区别 五. ...

  9. centos使用镜像源轻松配置golang+vscode的方法

    Title:centos使用镜像源轻松配置golang+vscode的方法 (阅读时间:约5分钟) 零.序言 最近笔者在上一门名为服务计算的课程,在老师的作业博客中提到,安装golang+vscode ...

最新文章

  1. Linux Exploit系列之三 Off-By-One 漏洞 (基于栈)
  2. iOS 隐藏顶部状态栏方式和更改颜色
  3. Katalon Studio自动化测试框架使用【1】--- 环境安装以及基础配置(MacOS)
  4. 17个之多!Windows Vista各版本功能区别详解
  5. C++kruskals算法生成最小协议树(附完整源码)
  6. coursera无法观看视频解决方法
  7. 作为前端,你需要了解的js构造函数和原型
  8. 个人收藏的flex特效网址【经典中的极品】
  9. Java 蓝桥杯 算法 和为T
  10. java interface 默认_Java8 接口interface默认方法
  11. 解决视图状态消息验证代码 (MAC) 错误
  12. phonegap安装中的问题
  13. 计算机中的PS颜色填充快捷键,ps颜色填充快捷键是什么
  14. 元宇宙势不可挡,facebook已更名Meta,前端人又能做什么?
  15. 神经网络可视化工具Netron
  16. python获取工作目录路径为C:\Users\用户名\AppData\Local\Temp...解决方案
  17. IT架构师_隽语集(Design Thinking _0101)
  18. Git + Github初入门
  19. 揭秘青提WiFi分销小程序到底有多赚钱?商家的宝贝代理的吸金利器
  20. The annotation of C++ primer {藤原豆腐坊自家用}

热门文章

  1. swift 学习- 12 -- 方法
  2. 关于华为x2中的外置SDCard的使用
  3. 思科cisco解决方案:思科ACI解决方案和Nexus_9000交换机
  4. Hadoop的安装与配置及示例程序wordcount的运行
  5. 利用Cobbler批量布署CentOS
  6. cdn加速怎么样刷新文件
  7. jenkins+gradle/maven+sonar+pipline
  8. SD-WAN可以提高WAN性能的3种方式—Vecloud
  9. 单臂路由与三层交换机—Vecloud微云
  10. Asp.net 中 OnClientClick 与 OnClick 的执行顺序