前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go日志库开发

Go日志库开发

作者头像
字节脉搏实验室
发布2021-01-19 12:11:38
7310
发布2021-01-19 12:11:38
举报
文章被收录于专栏:字节脉搏实验室

这次将自己实现go语言中的日志库的思路在这里班门弄斧一下

日志库

日志能方便地诊断程序原因、统计程序运行数据,是大型软件系统必不可少的组件之一。

日志库输出方式

控制台输出

文件写入(支持文件切割)

日志库输出级别

debug、trace、info、warning、error、fartal

首先就是日志库结构

console:打印到控制台

file:写入到文件

mylogger:日志库公用函数

console.go

定义ConsoleLogger结构体,定义ConsoleLogger的构造函数

在构造函数里面主要就是通过传递过来的参数(日志级别)对创建一个consolelogger对象

parseloglevel函数就是将传递过来的字符串解析成对应的loglevel类型

接下来的几个函数就是将对应的日志内容打印到控制台,这个传递的msg就是日志内容

然后a变量就是用户的格式化输出参数。

由于每个日志级别都是打印到控制台,所以这里就不需要重复造轮子了

在log函数中会用到getLogInfo这个函数,这个函数的主要功能就是获取运行时调用getLogInfo的信息。

包括函数名、文件名、行号

在log函数还会用到一个函数就是unParseLogLevel函数(将LogLevel解析成string类型)方便在控制台打印日志级别信息

在console中还有一个功能就是级别开关(打印用户传递的级别以及此级别以下级别的日志信息)

测试console,创建一个demo进行测试

file.go

介绍完console之后再看看文件写入功能

这里就主要介绍file和console的不同之处

主要的不同还是在log函数上面,因为console是打印到控制台,而file就是写入到对应的文件当中

首先介绍以下fileLogger的结构信息

在fileLogger的构造函数中会调用文件初始化函数对日志存储文件进行初始化

在log中会日志文件的大小进行检查,判断日志文件的大小是否小于用户指定的文件大小,如果大于,就对文件进行切割

checksize函数就是判断文件大小的函数

splitFile函数就是对日志文件进行切割,将旧的日志文件进行重命名。

测试file功能

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 字节脉搏实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
日志服务
日志服务(Cloud Log Service,CLS)是腾讯云提供的一站式日志服务平台,提供了从日志采集、日志存储到日志检索,图表分析、监控告警、日志投递等多项服务,协助用户通过日志来解决业务运维、服务监控、日志审计等场景问题。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档