Score
0
Watch 11 Star 48 Fork 2

水不要鱼 / logitGoApache-2.0

Join us
Explore and code with more than 5 million developers,Free private repositories !:)
Sign up
使用 Go 编写的高性能可扩展的日志库 - A high-performance and extensible logging foundation for Go applications spread retract

Clone or download
FUTURE.md 7.17 KB
Copy Edit Web IDE Raw Blame History

✒ 未来版本的新特性 (Features in future version)

v0.2.5

  • 修复配置文件中出现转义字符导致解析出错的问题

v0.2.4

  • 新增屏蔽某个日志级别的日志处理器
  • 修正某些文档的语法问题
  • 修复部分单元测试引用外部文件(比如 _examples 中的文件)的问题

v0.2.3

  • 祝大家五一劳动节快乐!
  • 增加 timeout_handler.go,里面是带超时功能的日志处理器包装器

    取消这个特性是因为,一般在需要获取某个执行时间很长甚至可能一直阻塞的操作的结果时才需要超时, 对于日志输出而言,我们并不需要获取日志输出操作的结果,所以这个特性意义不大。 还有一个原因就是,实现超时需要使用并发,在超时的任务里终止某个任务, 而 Go 语言并没有提供可以停止并销毁一个 goroutine 的方法,所以即使超时了,也没有办法终止这个任务 甚至可能造成 goroutine 的阻塞。综合上述,取消这个超时功能的日志处理器包装器。

v0.2.2-alpha

  • 改造全局使用的 logger,可以使用一个默认的配置文件来初始化全局 logger,方便使用
  • 增加 levelBasedHandler,里面是不同日志级别的日志处理器包装器,可以传一堆的 handler 进去

v0.2.1-alpha

  • 将 console handler 简化,目前使用 RegisterHandler 构造
  • 从 file handler 中抽取出 duration rolling 和 size rolling 两个日志处理器
  • 屏蔽了 HandlerOf 和 EncoderOf,只暴露特定的 API
  • 新增 TextEncoder 和 JsonEncoder 两个方法,可以获取到具体的日志编码器
  • 新增 NewConsoleHandler 和 NewFileHandler,分别对应控制台和文件日志处理器
  • 新增 NewDurationRollingHandler 和 NewSizeRollingHandler,分别对应时间间隔滚动和文件大小滚动的日志处理器
  • 删除了大量创建 Logger 的方法,这些方法会让人看起来很复杂很繁琐
  • 去除原有 Config 加 fileConfig 的配置设计,现在直接使用一个映射配置,然后组装成需要的参数

v0.2.0-alpha

  • 将 wrapper 修改为 writer
  • 剔除了 default handler 和 json handler,整合进 standard handler 中
  • 提取出一个 encoder,方便内置处理器引用
  • 加入 console handler,专门负责输出到控制台的日志处理器
  • 加入 file handler,专门负责文件相关的日志处理器,包含时间滚动和大小滚动和不滚动的功能

v0.1.5

  • 完善 Json 处理器没有做字符转义的修复方案,详情查询 issue/1

v0.1.4

  • 紧急修复 Json 处理器没有做字符转义的 bug,详情查询 issue/1

v0.1.3

  • 增加配置文件中是否开启文件信息记录的选项

v0.1.2

  • 加入配置文件的支持,以近似 Json 格式的配置文件来增加日志记录的灵活性
  • 修复 Logger 中 DebugFunc,InfoFunc,WarnFunc,ErrorFunc 等几个方法的文件信息错误问题
  • 修复 logit 中 DebugFunc,InfoFunc,WarnFunc,ErrorFunc 等几个方法的文件信息错误问题

v0.1.1-alpha

  • 再次对 Handler 进行重构,尽量优化 Logger 的设计
  • 去除 Encoder,减少多余的设计,轻量化 Logger
  • 取消时间缓存机制,减少并发竞争性
  • 优化 releaseLog 的 extra 内存分配
  • 加入 FileConfig,为后续支持配置文件做准备

v0.1.0-alpha

  • 重新设计 Logger,主要是轻量化处理和重构 handler 的设计
  • 增加 Encoder 接口,方便用户扩展 Logger,并内置 Json 编码器
  • Json 编码器允许时间不做格式化,使用 Unix 形式处理时间,方便解析处理

v0.0.11

  • 支持日志输出为 Json 形式,通过增加 JSON 日志处理器实现
  • 使用时间缓存机制优化时间格式化操作性能消耗过多的问题,性能再次提升 50%

v0.0.10

  • 扩展了 Logger 的方法,可以获取到内部的属性,为日志处理器做准备
  • 支持创建 Logger 对象之后修改它的输出源 writer(这是个之前被遗漏的功能特性哈哈)
  • 调整了内部 log 方法的锁机制,使用类似于写时复制的方式释放日志输出的并发性

v0.0.9

  • 支持日志输出函数,日志信息可以是一个返回 string 的函数
  • 公开 PrefixOf 方法,方便用户自定义处理器的时候获取日志级别字符串

v0.0.8

  • 进行第一次性能优化,性能相比之前版本提升 30%
  • 取消占位符功能,由于这个功能的实现需要对类型进行反射检测,非常消耗性能
  • 取消 fmt 包的使用,经过性能检测,发现 fmt 包中存在大量使用反射的耗时行为

v0.0.7

  • 重构日志输出的模块,抛弃了标准库的 log 设计
  • 增加日志处理器模块,支持用户自定义日志处理逻辑,大大地提高了扩展能力
  • 支持不输出文件信息,避免 runtime.Caller 方法的调用,大大地提高了性能
  • 支持调整时间格式化输出,让用户自定义时间输出的格式

v0.0.6

  • 支持按照文件大小自动划分日志文件
  • 修复 nextFilename 中随机数生成重复的问题,设置了纳秒时钟作为种子
  • 结合上面几点,以 “并发、缓冲” 为特点进行设计,技术使用 writer 接口进行包装

    取消这个特性是因为,经过实验,性能并没有改善多少,两个方案,一个是使用队列进行缓冲, 开启一个 Go 协程写出数据,一个是不缓冲,直接开启多个 Go 协程进行写出数据。 第一个方案中,性能反而下降了一倍,估计和内存分配有关,最重要的就是,如果队列还有缓冲数据, 但是程序崩了,就有可能导致数据丢失,日志往往就需要最新最后的数据,而丢失的也正是最新最后的数据, 所以这个方案直接否决。第二个方案中,性能几乎没有提升,而且导致日志输出的顺序不固定,也有可能丢失。 综合上述,取消这个并发化日志输出的特性。

v0.0.5

  • 支持将日志输出到文件
  • 支持按照时间间隔自动划分日志文件

v0.0.4

  • 修改 LogLevel 类型为 LoggerLevel,命名更符合意义
  • 更改了部分源文件的命名,也是为了更符合实际的意义

v0.0.3

  • 让信息输出支持占位符,比如 %d 之类的
  • 修复 Logit 日志调用方法的调用深度问题,之前直接通过 logit 调用时文件信息会显示错误

v0.0.2

  • 扩展 Logger 的使用方法,主要是创建日志记录器一类的方法
  • 扩展 logit 的全局使用方法,增加一个默认的日志记录器
  • 支持更改日志级别,参考 Logger#ChangeLevelTo 方法
  • 修复 Logger#log 方法中漏加读锁导致并发安全的问题

v0.0.1

  • 实现最简单的日志输出功能
  • 支持四种日志级别:debug, info, warn, error
  • 对应四种日志级别分别有四个方法
  • 给日志输出增加颜色显示

    取消颜色是因为考虑到线上生产环境主要使用文件,这个终端颜色显示的特性不是这么必须。 如果要实现,还要针对不同的操作系统处理,代价大于价值,所以废弃这个新特性。

Comment ( 0 )

Sign in for post a comment

Go
1
https://gitee.com/FishGoddess/logit.git
git@gitee.com:FishGoddess/logit.git
FishGoddess
logit
logit
master

Help Search

205735 778617b6 1899542 205747 347fc4a1 1899542