简介
zap
zap是uber开源的 Go 高性能日志库
https://github.com/uber-go/zaplumberjack
Lumberjack用于将日志写入滚动文件。zap 不支持文件归档,如果要支持文件按大小或者时间归档,需要使用lumberjack,lumberjack也是zap官方推荐的。
https://github.com/natefinch/lumberjack简单使用
工程结构
项目结构.png
核心代码
LogCore
/** * 获取日志 * filePath 日志文件路径 * level 日志级别 * maxSize 每个日志文件保存的最大尺寸 单位:M * maxBackups 日志文件最多保存多少个备份 * maxAge 文件最多保存多少天 * compress 是否压缩 * serviceName 服务名 */ func NewLogger(filePath string, level zapcore.Level, maxSize int, maxBackups int, maxAge int, compress bool, serviceName string) *zap.Logger { core := newCore(filePath, level, maxSize, maxBackups, maxAge, compress) return zap.New(core, zap.AddCaller(), zap.Development(), zap.Fields(zap.String("serviceName", serviceName))) } /** * zapcore构造 */ func newCore(filePath string, level zapcore.Level, maxSize int, maxBackups int, maxAge int, compress bool) zapcore.Core { //日志文件路径配置2 hook := lumberjack.Logger{ Filename: filePath, // 日志文件路径 MaxSize: maxSize, // 每个日志文件保存的最大尺寸 单位:M MaxBackups: maxBackups, // 日志文件最多保存多少个备份 MaxAge: maxAge, // 文件最多保存多少天 Compress: compress, // 是否压缩 } // 设置日志级别 atomicLevel := zap.NewAtomicLevel() atomicLevel.SetLevel(level) //公用编码器 encoderConfig := zapcore.EncoderConfig{ TimeKey: "time", LevelKey: "level", NameKey: "logger", CallerKey: "linenum", MessageKey: "msg", StacktraceKey: "stacktrace", LineEnding: zapcore.DefaultLineEnding, EncodeLevel: zapcore.LowercaseLevelEncoder, // 小写编码器 EncodeTime: zapcore.ISO8601TimeEncoder, // ISO8601 UTC 时间格式 EncodeDuration: zapcore.SecondsDurationEncoder, // EncodeCaller: zapcore.FullCallerEncoder, // 全路径编码器 EncodeName: zapcore.FullNameEncoder, } return zapcore.NewCore( zapcore.NewJSONEncoder(encoderConfig), // 编码器配置 zapcore.NewMultiWriteSyncer(zapcore.AddSync(os.Stdout), zapcore.AddSync(&hook)), // 打印到控制台和文件 atomicLevel, // 日志级别 ) }
Log
var MainLogger *zap.Logger var GatewayLogger *zap.Logger func init() { MainLogger = NewLogger("./logs/main.log", zapcore.InfoLevel, 128, 30, 7, true, "Main") GatewayLogger = NewLogger("./logs/gateway.log", zapcore.DebugLevel, 128, 30, 7, true, "Gateway") }
AppMain
func main() { fmt.Println("init main") log.MainLogger.Debug("hello main Debug") log.MainLogger.Info("hello main Info") log.GatewayLogger.Debug("Hi Gateway Im Debug") log.GatewayLogger.Info("Hi Gateway Im Info") }
github原码
https://github.com/ClawHub/go-study
参考
以上所述就是小编给大家介绍的《Go日志框架zap与lumberjack简单配置封装》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 封装JDBC—非框架开发必备的封装类
- Mybatis: 动手封装ORM框架
- 自定义MVC框架-封装模型层
- Flutter 基于Bloc框架的封装
- 优雅地实现Android主流图片加载框架封装,可无侵入切换框架
- 基于spring boot框架进行二次封装,微型框架编写思路
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
C++Templates中文版
David Vandevoorde、Nicolai M.Josuttis / 陈伟柱 / 人民邮电出版社 / 2008-2 / 69.00元
本书是C++模板编程的完全指南,旨在通过基本概念、常用技巧和应用实例3方面的有用资料,为读者打下C++模板知识的坚实基础。 全书共22章。第1章全面介绍了本书的内容结构和相关情况。第1部分(第2~7章)以教程的风格介绍了模板的基本概念,第2部分(第8~13章)阐述了模板的语言细节,第3部分(第14~18章)介绍了C++模板所支持的基本设计技术,第4部分(第19~22章)深入探讨了各种使用模板......一起来看看 《C++Templates中文版》 这本书的介绍吧!