016_logback中的Encoder
1. 什么是encoder?
1.1. Encoder负责两件事, 一是把事件转换为字节数组, 二是把字节数组写入输出流。在logback 0.9.19版之前没有encoder。在之前的版本里, 多数appender依靠layout来把事件转换成字符串并用java.io.Writer把字符串输出。在之前的版本里, 用户需要在FileAppender里嵌入一个PatternLayout。而从0.9.19版开始, FileAppender和其子类使用encoder, 不接受layout。
2. 为什么变了?
2.1. Layout只负责把事件转换为字符串。此外, 因为layout不能控制事件何时被写出, 所以不能成批地聚集事件。相比之下, encoder不但可以完全控制待写出的字节的格式, 而且可以控制字节何时及是否被写出。
2.2. 目前, PatternLayoutEncoder是唯一有用的encoder, 它基本上是封装了PatternLayout, 让PatternLayout负责大多数工作。因此, 似乎encoder并没有带来多少好东西, 反而只有不需要的复杂性。然而, 我们希望当新的、强大的encoder到来时, 这种印象会改变。
3. Encoder接口
3.1. Encoder负责把事件转换为字节数组并把字节数组写出到合适的输出流。因此, encoder可以完全控制在什么时候、把什么样的字节写入到由其拥有者appender维护的输出流。
3.2. Encoder接口
4. LayoutWrappingEncoder类
4.1. 在logback0.9.19版之前, appender依赖layout提供输出格式的灵活性。因为有大量现存代码是基于layout接口的, 所以我们需要想办法让encoder与layout实现互操作。 LayoutWrappingEncoder连接了encoder和layout, 它实现encoder接口, 并且包裹了一个layout, layout负责把事件转换成字符串。
4.2. 下面是LayoutWrappingEncoder类的代码片段, 阐述了如何把工作委托给layout实例。
4.3. encode方法首先让被包裹的layout把传入的事件转换成字符串, 再根据用户选择的字符集编码把字符串转换成字节。start方法自己写入其拥有者appender指定的输出流。
5. PatternLayoutEncoder类
5.1. 既然PatternLayout是最常用的layout, logback便提供了PatternLayoutEncoder, 它扩展了LayoutWrappingEncoder, 且仅使用PatternLayout。从logback 0.9.19版起, FileAppender或其子类在只要用到PattternLayout时, 都必须换成PatternLayoutEncoder。
5.2. PatternLayoutEncoder类
016_logback中的Encoder相关推荐
- Transformer中的encoder和decoder在训练和推理过程中究竟是如何工作的
Transformer中的encoder和decoder在训练和推理过程中究竟是如何工作的 苦苦冲浪,找不到答案 Transformer结构(随便冲浪均可查到) Transformer推理过程 Tra ...
- TensorFlow中RNN实现的正确打开方式
上周写的文章<完全图解RNN.RNN变体.Seq2Seq.Attention机制>介绍了一下RNN的几种结构,今天就来聊一聊如何在TensorFlow中实现这些结构,这篇文章的主要内容为: ...
- java中byte, iso-8859-1, UTF-8,乱码的根源
本文作者:@Ryan Miao 本文链接:https://www.cnblogs.com/woshimrf/p/java-utf8-iso-charset.html 版权声明: 本博客所有文章除特别声 ...
- encoder decoder模型_如何突破Decoder性能瓶颈?揭秘FasterTransformer的原理与应用
位来 发自 凹非寺 量子位 报道 | 公众号 QbitAI 4月9日,英伟达x量子位分享了一期nlp线上课程,来自NVIDIA的GPU计算专家.FasterTransformer 2.0开发者之一的薛 ...
- 【推荐系统】变分自编码器(VAEs)在推荐系统中的应用
「本文概览」 今天给大家介绍一篇VAEs用于推荐系统召回侧的文章,论文题目为<Variational Autoencoders for Collaborative Filtering>.V ...
- 【推荐系统】双塔模型中的负采样
作者:十方 推荐模型中双塔模型早已经普及.一个塔学用户表达.一个塔学item表达.很多双塔模型用各种各样的in-batch负采样策略.十方也是如此.往往使用比较大的batchsize,效果会比较好,但 ...
- WebRTC Audio Encoder/Decoder Factory 的实现
Audio encoder factory 用于创建完成各种 audio codec 编码的 encoder 对象,audio decoder factory 则用于创建完成各种 audio code ...
- TensorFlow中RNN实现的正确打开方式(转)
上周写的文章<完全图解RNN.RNN变体.Seq2Seq.Attention机制>介绍了一下RNN的几种结构,今天就来聊一聊如何在TensorFlow中实现这些结构,这篇文章的主要内容为: ...
- 鸿蒙轻量设备侧Camera应用中的Surface使用
鸿蒙轻量设备侧Camera应用中的Surface使用 本文作者:江苏润和软件股份有限公司 郎建中 一.总体描述 在鸿蒙轻量设备侧图形子系统中包含了Surface模块.这个模块模仿了Android的Su ...
最新文章
- iOS imageNamed 的缓存问题
- php键值交换,php键值互换时走的一个弯路
- [推荐]大量 Blazor 学习资源(三)
- 【转载】生机勃勃的秋菊freeeim
- [zz]shell 中条件测试
- 【c++模板实现】二叉查找树
- Python学习之路day02——007字典的嵌套
- C语言编程中 提取运行时间的函数,C语言中用于修改文件的存取时间的函数使用...
- 图的应用之--图的连通
- 【死磕 Spring】—– IOC 之 bean 的初始化
- 三角网导线平差实例_附合导线平差教程
- 30余种加密编码类型的密文特征分析(建议收藏)
- ArcGIS实验教程——实验二十八:统计图表(饼状图、柱状图)制作
- 每日一道leetcode(python)347. 前 K 个高频元素
- 0xff到底是多少(0x是16进制,f对应11111,因此是11111111,也就是2的8次方-1=255)
- 新三板开通精选层后,仅存的四家软件公司都是做什么的?
- 小白期货CTP程序化交易开发入门(一)--CTP开发基础
- Kaggle Faster Data Science Education coursera
- Python爬虫,某创意网站灵感视频采集下载
- 2023年MathorCup数模D题赛题解题思路