java日志框架系列(5):logback框架appender详解
1.appender
1.什么是appender
 

2.AppenderBase

public synchronized void doAppend(E eventObject) {
// prevent re-entry.
if (guard) {
return; }
try {
guard = true;
if (!this.started) {
if (statusRepeatCount++ < ALLOWED_REPEATS) {
addStatus(new WarnStatus(
"Attempted to append to non started appender ["
+ name + "].", this));
}
return; }
if (getFilterChainDecision(eventObject) == FilterReply.DENY)
{
return; }
// ok, we now invoke derived class' implementation of append
this.append(eventObject);
} catch (Exception e) {
if (exceptionCount++ < ALLOWED_REPEATS) {
addError("Appender [" + name + "] failed to append.", e);
}
} finally {
guard = false; } }
通过代码可以知道AppenderBase类是的doAppender()是同步线程安全的;并不是所有时候都需要同步,因此当不需要同步的时候可以使用UnsynchronizedAppenderBase类。
3. logback-core
logback-core模块是logback的基础。下面讲解一下可以直接使用的appender。
1.logback-core模块中的appender
logback-core模块中的appender种类:OutputStreamAppender、ConsoleAppender、FileAppender、RollingFileAppender。
你有没有发现:logback-core中的appender的目的地都是本地啊,那有没有可以发送到网络上的appender呀,当然有,在logback-classic模块中,下一节介绍。
这些appender之间的关系如下所示:

1.OutputStreamAppender讲解
 
2.ConsoleAppender讲解
 
这些属性是需要配置的,因此我们可以通过在xml配置文件中的<appender>标签中创建以属性名为标签名的标签,并为这些标签进行配置。
注意:<appender>中不同的class属性值表明使用不同的目的地,因此会有不同的参数,从而表现出在配置文件中的标签有所差异。
3.FileAppender讲解


 
这些属性是需要配置的,因此我们可以通过在xml配置文件中的<appender>标签中创建以属性名为标签名的标签,并为这些标签进行配置。
注意:<appender>中不同的class属性值表明使用不同的目的地,因此会有不同的参数,从而表现出在配置文件中的标签有所差异。
4.RollingFIleAppender讲解
1.实现滚动记录原理


这些属性是需要配置的,因此我们可以通过在xml配置文件中的<appender>标签中创建以属性名为标签名的标签,并为这些标签进行配置。
注意:<appender>中不同的class属性值表明使用不同的目的地,因此会有不同的参数,从而表现出在配置文件中的标签有所差异。
1.最受欢迎的滚动策略TimeBaseRollingPolicy

 
下面讲解一下fileNamePattern的部分值及作用:




注意:所有“\”和“/”都被解释为目录分隔符。任何需要的目录都会被创建。所以你可以轻松地把记录文件放到不同的目录。
4.logback-classic
 
在logback-classic模块中也存在一些appender,并且这些appender的目的地不是本地。下面详细了解一下这些appender。
logback-classic模块中的appender分类:SocketAppender、DBAppender、SMTPAppender、SyslogAppender、SiftingAppender以及基于JMS的两种Appender(JMSTopicAppender和JMSQueueAppender,他们继承自JMSAppenderBase类);提供了总共7种appender;另外还可以自定义appender,需要通过继承AppenderBase来实现自定义的appender。
java日志框架系列(5):logback框架appender详解的更多相关文章
- Java容器解析系列(6) Queue Deque AbstractQueue 详解
		首先我们来看一下Queue接口: /** * @since 1.5 */ public interface Queue<E> extends Collection<E> { / ... 
- Java容器解析系列(4) ArrayList Vector Stack 详解
		ArrayList 这里关于ArrayList本来都读了一遍源码,并且写了一些了,突然在原来的笔记里面发现了收藏的有相关博客,大致看了一下,这些就是我要写的(╹▽╹),而且估计我还写不到博主的水平,这 ... 
- 深入理解JAVA I/O系列三:字符流详解
		字符流为何存在 既然字节流提供了能够处理任何类型的输入/输出操作的功能,那为什么还要存在字符流呢?容我慢慢道来,字节流不能直接操作Unicode字符,因为一个字符有两个字节,字节流一次只能操作一个字节 ... 
- 《手把手教你》系列基础篇(八十三)-java+ selenium自动化测试-框架设计基础-TestNG测试报告-下篇(详解教程)
		1.简介 其实前边好像简单的提到过测试报告,宏哥觉得这部分比较重要,就着重讲解和介绍一下.报告是任何测试执行中最重要的部分,因为它可以帮助用户了解测试执行的结果.失败点和失败原因.另一方面,日志记录对 ... 
- logback 常用配置详解<appender>
		logback 常用配置详解 <appender> <appender>: <appender>是<configuration>的子节点,是负责写日志的 ... 
- logback 常用配置详解(二) <appender>
		logback 常用配置详解(二) <appender> <appender>: <appender>是<configuration>的子节点,是负责写 ... 
- 【山外笔记-工具框架】iperf3网络性能测试工具详解教程
		[山外笔记-工具框架]iperf3网络性能测试工具详解教程 本文下载链接 [学习笔记]iperf3网络性能测试工具.pdf 网络性能评估主要是监测网络带宽的使用率,将网络带宽利用最大化是保证网络性 ... 
- Farseer.net轻量级开源框架 入门篇:添加数据详解
		导航 目 录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 分类逻辑层 下一篇:Farseer.net轻量级开源框架 入门篇: 修改数据详解 ... 
- Farseer.net轻量级开源框架 入门篇:修改数据详解
		导航 目 录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 添加数据详解 下一篇:Farseer.net轻量级开源框架 入门篇: 删除数据详解 ... 
- Farseer.net轻量级开源框架 入门篇:删除数据详解
		导航 目 录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 修改数据详解 下一篇:Farseer.net轻量级开源框架 入门篇: 查询数据详解 ... 
随机推荐
- 函数第一部分:经典的永远是简单的-Python基础前传(10)
			(一)前言 对于零基础学习Python的朋友,或者转行做数据分析的朋友,跟jacky交流最多的问题就是Python网络爬虫学习问题,比如说要爬取美团,或者说爬取携程等等,在爬取的过程中,这些朋友总是会 ... 
- [Python]闭包的理解和使用
			闭包广泛使用在函数式编程语言中,虽然不是很容易理解,但是又不得不理解. 闭包是什么? 在一些语言中,在函数中可以(嵌套)定义另一个函数时,如果内部的函数引用了外部的函数的变量,则可能产生闭包.闭包可以 ... 
- P5346 【XR-1】柯南家族(后缀数组+主席树)
			题目 P5346 [XR-1]柯南家族 做法 聪明性是具有传递性的,且排列是固定的 那么先预处理出每个点的名次,用主席树维护\(k\)大值 一眼平衡树,遍历的同时插入\(O(log^2n)\),总时间 ... 
- 鲁班学院java架构vip课程
			1.wps文档地址 https://docs.qq.com/doc/DRVNLUndvTmFSdEhO 2.百度网盘地址 https://pan.baidu.com/s/1uxaTzJZHKrsw_H ... 
- cmake入门之内部构建
			https://www.cnblogs.com/coderfenghc/tag/cmake/ https://cmake.org/cmake/help/v3.16/guide/tutorial/ind ... 
- 【转】Eclipse MAT内存分析工具(Memory Analyzer Tool)
			Eclipse MAT内存分析工具(Memory Analyzer Tool) MAT内存分析工具# MAT是Memory Analyzer的简称,它是一款功能强大的Java堆内存分析器.可以用于查找 ... 
- 对象转型、迭代器Iterator、Set集合、装箱与拆箱、基本数据类型与字符串的转换、TreeSet集合与对象
			包的声明与定义 需要注意的是,包的声明只能位于Java源文件的第一行. 在实际程序开发过程中,定义的类都是含有包名的: 如果没有显式地声明package语句,创建的类则处于默认包下: 在实际开发中 ... 
- c++比例-libcurl多线程并发时的core【转载】
			转自: https://www.cnblogs.com/edgeyang/articles/3722035.html 浅析libcurl多线程安全问题 背景:使用多线程libcurl发送请求,在未设置 ... 
- 使用HttpClient调用WebAPI接口,含WebAPI端示例
			API端: using log4net; using System; using System.Collections.Generic; using System.IO; using System.L ... 
- GitHub OAuth 第三方登录示例教程
			这组 OAuth 系列教程,第一篇介绍了基本概念,第二篇介绍了获取令牌的四种方式,今天演示一个实例,如何通过 OAuth 获取 API 数据. 很多网站登录时,允许使用第三方网站的身份,这称为&quo ... 
