Go日志库开发

2021-01-19 12:11:38 浏览数 (1)

这次将自己实现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功能

0 人点赞