描述

实现了一个io.Writer接口,允许zap日志写入,传递给界面,出现了日志被覆盖、重复的情况。

原因

io.Writer的接口Write传入的[]byte真实类型是slice。通道传递slice时,用的是引用传递,所以真实数据有被覆盖的情况

示例

  • zap初始化
...
out = COut()
zapcore.NewCore(encoder, zapcore.AddSync(out), clevel),
...
  • 自定义日志写入Channel
package logsvar _GlobalChanOutput = &ChanOutput{outs: make([]chan *[]byte, 0),
}/*---------------------------------------全局函数
示例logs.COut().AddOut(xx)
---------------------------------------*///全局ChanOutput
func COut() *ChanOutput{return _GlobalChanOutput
}/*---------------------------------------log to channel
---------------------------------------*/type ChanOutput struct{outs []chan *[]byte
}//io.Writer接口
func (c *ChanOutput) Write(p []byte) (n int, err error) {count :=0//数据复制(防止被覆盖)_p := make([]byte, len(p))copy(_p, p)for _, out :=range c.outs{select{case out <- &_p:count += 1default:}}return count, nil
}func (c *ChanOutput) AddOut(out chan *[]byte) {c.outs = append(c.outs, out)
}
  • 读取日志
logOut := make(chan *[]byte, 1024)
logs.COut().AddOut(logOut)pctx, pctxCancel := context.WithCancel(context.Background())
go func(ctx context.Context){select {case msg := <- logOut:fmt.Println(string(*msg))case <-ctx.Done():break}
}(pctx)

佛說大乘無量壽莊嚴清淨平等覺經pdf
净土大经科注2014-doc
此生必看的科学实验-水知道答案
印光大师十念法(胡小林主讲第1集)

zap日志写入通道被覆盖相关推荐

  1. 【Go进阶】如何让你Go项目中日志清晰有趣-Zap日志库

    本文先介绍了Go语言原生的日志库的使用,然后详细介绍了非常流行的Uber开源的zap日志库,同时介绍了如何搭配Lumberjack实现日志的切割和归档. Zap日志库在Go语言项目中的使用 在许多Go ...

  2. go.uber.org/zap日志库

    文章目录 go.uber.org/zap日志库 1.GO SDK里Logger优缺点 2.介绍Uber-go zap 3.安装zap依赖 4.zap.NewProductionEncoderConfi ...

  3. 在Go语言项目中使用Zap日志库

    在Go语言项目中使用Zap日志库 Go语言原生的日志库的使用,然后详细介绍了非常流行的Uber开源的zap日志库,同时介绍了如何搭配Lumberjack实现日志的切割和归档. 一.在Go语言项目中使用 ...

  4. 一文告诉你如何用好uber开源的zap日志库

    1. 引子 日志在后端系统中有着重要的地位,通过日志不仅可以直观看到程序的当前运行状态,更重要的是日志可以在程序发生问题时为开发人员提供线索. 在Go生态中,logrus[2]可能是使用最多的Go日志 ...

  5. python日志输出到屏幕,python日志写入文件

    python日志输出到屏幕,python日志写入文件 日志 日志是跟踪软件运行时所发生的事件的一种方法.软件开发者在代码中调用日志函数,表明发生了特定的事件.事件由描述性消息描述,该描述性消息可以可选 ...

  6. Python + logging 输出到屏幕,将log日志写入文件(亲测)

    日志 日志是跟踪软件运行时所发生的事件的一种方法.软件开发者在代码中调用日志函数,表明发生了特定的事件.事件由描述性消息描述,该描述性消息可以可选地包含可变数据(即,对于事件的每次出现都潜在地不同的数 ...

  7. go语言 gin框架中集成zap日志库

    在go语言gin框架中,日志是默认输出到终端的,但是我们在实际工作中,一般来说是需要记录服务器日志的.而最常用的日志库就是zap日志库,我们需要将gin在终端输出的内容通过zap日志库记录到文件中,首 ...

  8. Go zap日志库使用

    使用案例 package mainimport ("go.uber.org/zap" ) // 两种类型的日志记录器sugarlogger 和logger var sugarlog ...

  9. Python logging log日志写入文件

    转载: https://www.cnblogs.com/nancyzhu/p/8551506.html 日志 日志是跟踪软件运行时所发生的事件的一种方法.软件开发者在代码中调用日志函数,表明发生了特定 ...

最新文章

  1. 使用深度学习检测混凝土结构中的表面裂缝
  2. 新人python2和python3的区别_未明学院:Python2与Python3的主要区别
  3. Matlab R2018a 中文版安装教程(同时适用于大部分其他版本)
  4. js null ,null没有typeof返回值为undefine 即 null没有返回类型的
  5. [mvc] 简单的forms认证
  6. python三级联动菜单_详解element-ui级联菜单(城市三级联动菜单)和回显问题
  7. React开发(150):注意定义数组格式
  8. python词云改颜色_一种用Python生成词云
  9. 简单的Postman,还能玩出花?
  10. 排序算法(4)----快速排序
  11. Django----bootstrap导航栏的使用
  12. 单件模式的两个简单实例
  13. tortoisegit pull 远程拉取代码,提示需要密码
  14. ubuntu 使用gspca安装摄像头
  15. 怎样进入金蝶服务器修改参数,金蝶KIS专业版启用后如何后台修改系统参数
  16. win10配置免密登录linux(centos7)
  17. 【魏先生搞定Python系列】一文搞定SQLAlchemy学习与使用
  18. 用树莓派做一个实时垃圾分类器|超实用!!
  19. 现实版《黑镜》上演!这位程序媛用 AI 让已故基友“永生”
  20. c语言软件开发心得:

热门文章

  1. 成都奔驰原厂无钥匙舒适进入改装 蔚一车改
  2. Netflix Hystrix断路器简介与工作原理
  3. 设备管理系统html,设备管理系统有哪些功能?- 智造家
  4. 资源管理器占用CPU过高的解决方法
  5. 变异系数法matlab程序,差分进化算法原理及matlab代码实现
  6. 如何免费注册好用的电子邮箱呢?
  7. 分布式之RabbitMQ
  8. 04 在地图上添加主页、定位、鹰眼图和比例尺控件
  9. python实现微信自动加群_老司机用python脚本刷微信读书的时长
  10. [Code Festival 2017 qual A-F] Squeezing Slimes