zoukankan      html  css  js  c++  java
  • log4g:站在巨人的头上实现一个可配置的Go日志库

    更多精彩博文,欢迎访问我的个人博客


    前言

    本人Java程序员一枚,眼看着这几年Go的势头不错,本着技多不压身的原则,也随大流慢慢学习。不得不说Go其实跟Java差别还是挺大的,毕竟习惯了面向对象的思想,一时间也有点接受不过来。俗话说实践才能出真知,本想着拿刚学的点皮毛练练手,结果就遇到了一个问题:日志。

    Go语言不像Java中有诸如Log4j的大哥存在,其自带的log库其实功能有限。虽然催生出了诸如logrus、zap等一系列优秀的三方日志库,但在github上找了半天始终没有找到一款符合自己需求的。

    我需求的日志库功能

    本来是想要一个支持日志分割,并且支持通过配置将日志分级别输出到不同目录的功能(好吧我就是觉得log4j真不错),但很多三方库都不支持这个功能。诚然,将日志写入logstash或者数据库等已经越来越成为主流,但不能分割日志难免有些遗憾。

    于是想着去网上copy一下,应该有现成的,但是找了一圈要么就是复制粘贴的,要么就跟我想要的效果不一样,于是便想着自己动手实现一个。logrus不是支持hook么,那还不好说么(大概吧)?

    自己实现一个日志库

    想象中的实现应该是这个样子:

    代码太麻烦就不粘贴了,成品已经放在github:https://github.com/jptangchina/log4g

    直接就可以使用:

    package main
    
    import log "github.com/jptangchina/log4g"
    
    func main() {
      log.Info("Test info output")
    }
    

    主要实现了如下功能:

    1. 配置文件配置输出行为,包括文件大小分割,时间分割,日志等级等
    2. 当输出到文件时屏蔽logrus控制台输出
    3. 不同级别的日志可以输出到不同文件
    4. 不同级别日志可以输出到相同文件
    5. 哎呀,说不清楚,可以自行体会

    总结

    总的来讲,要真完全自己写,还是挺难写的,好在前人做足了功夫。不过自己也才刚开始学习Go,肯定还写得不太好,发出来主要是大家交流交流。如果有同实现的更好的工具这里也求个推荐,我实在是找不到了。另外如果写得有不对的地方,可以指正,但是请不要杠,我也刚学,不要杠!杠精请走开!


    更多精彩博文,欢迎访问我的个人博客

  • 相关阅读:
    tomcat中如何处理http协议的属性Connection和Tansfer-Encoding
    Tomcat中特殊字符串过滤
    Tomcat源码解析系列(十一)ProtocolHandler
    Tomcat配置强制https端口变成8443的解决办法
    深入理解Tomcat(十)Connector
    web应用程序中解决Request和Response只能获取一次的问题
    CocosCreator之打包android
    如何通过配置tomcat或是web.xml让ie直接下载文件
    从安装PHP到第一个tomcat执行的hello world其实没那么难
    Tomcat安装、配置和部署笔记
  • 原文地址:https://www.cnblogs.com/jptangchina/p/11695184.html
Copyright © 2011-2022 走看看