neverblock

Logback配置文件这么写,还愁不会整理日志?

穿精又带淫゛_ 提交于 2020-08-14 22:41:25
摘要: 1.日志输出到文件并根据 LEVEL 级别将日志分类保存到不同文件 2.通过异步输出日志减少磁盘 IO 提高性能 3.异步输出日志的原理 1、配置文件logback-spring.xml SpringBoot 工程自带 logback 和 slf4j 的依赖,所以重点放在编写配置文件上,需 要引入什么依赖,日志依赖冲突 统统都不需要我们管了。 logback 框架会默认加载 classpath 下命名为 logback-spring.xml 或 logback.xml 的配置文件。 如果将所有日志都存储在一个文件中,文件大小也随着应用的运行越来越大并且不好排查问题,正确的做法应该是将 error 日志和其他日志分开,并且不同级别的日志根据时间段进行记录存储。 配置文件: <? xml version="1.0" encoding="UTF-8" ?> < configuration debug ="true" > <!-- 项目名称 --> < property name ="PROJECT_NAME" value ="project-api" /> <!-- 定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径 --> < property name ="LOG_HOME" value ="logs" /> <!-- 控制台输出 --> < appender

Logback配置文件这么写,还愁不会整理日志?

佐手、 提交于 2020-08-10 20:24:34
摘要: 1.日志输出到文件并根据 LEVEL 级别将日志分类保存到不同文件 2.通过异步输出日志减少磁盘 IO 提高性能 3.异步输出日志的原理 1、配置文件logback-spring.xml SpringBoot 工程自带 logback 和 slf4j 的依赖,所以重点放在编写配置文件上,需 要引入什么依赖,日志依赖冲突 统统都不需要我们管了。 logback 框架会默认加载 classpath 下命名为 logback-spring.xml 或 logback.xml 的配置文件。 如果将所有日志都存储在一个文件中,文件大小也随着应用的运行越来越大并且不好排查问题,正确的做法应该是将 error 日志和其他日志分开,并且不同级别的日志根据时间段进行记录存储。 配置文件: <? xml version="1.0" encoding="UTF-8" ?> < configuration debug ="true" > <!-- 项目名称 --> < property name ="PROJECT_NAME" value ="project-api" /> <!-- 定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径 --> < property name ="LOG_HOME" value ="logs" /> <!-- 控制台输出 --> < appender

多线程高并发编程(12) -- 阻塞算法实现ArrayBlockingQueue源码分析(1)

不羁的心 提交于 2020-08-04 14:43:29
一.前言    前文探究了非阻塞算法的实现 ConcurrentLinkedQueue 安全队列,也说明了阻塞算法实现的两种方式,使用一把锁(出队和入队同一把锁ArrayBlockingQueue)和两把锁(出队和入队各一把锁LinkedBlockingQueue)来实现,今天来探究下ArrayBlockingQueue。    ArrayBlockingQueue是一个阻塞队列,底层使用数组结构实现,按照先进先出(FIFO)的原则对元素进行排序。   ArrayBlockingQueue是一个线程安全的集合,通过ReentrantLock锁来实现,在并发情况下可以保证数据的一致性。   此外,ArrayBlockingQueue的容量是有限的,数组的大小在初始化时就固定了,不会随着队列元素的增加而出现扩容的情况,也就是说ArrayBlockingQueue是一个“ 有界 缓存区”。   从下图可以看出,ArrayBlockingQueue是使用一个数组存储元素的,当向队列插入元素时,首先会插入到数组下标索引为6的位置,再有新元素进来时插入到索引为7的位置,依次类推,如果满了就不会再插入。    当元素出队时,先移除索引为2的元素3,与入队一样,依次类推,移除索引3、4、5...上的元素。这也形成了“先进先出”。 二.源码解析 构造方法 public class