Go 自己动手实现日志收集
看日志是开发者平时排查BUG所必须的掌握的技能,但是日志是如何来的呢?通过平时开发者自己打日志,经过日志包进行处理,打印日志到控制台还是记录日志到文件中!
下面咱就来学一下日志是如何记录下来的
1. 日志器的接口
以下日志器定义了各类日志器的行为,通过RegisterWriter
注册实现了日志器的子类日志器,然后通过Log
方法来进行循环调用注册进来的日志收集器的write
写日志方法。
// 声明日志写入器接口
type LogWriter interface {
Write(data interface{
}) error
}
// 日志器
type Logger struct {
// 这个日志器用到的日志写入器
writerList []LogWriter
}
// 注册一个日志写入器
func (l *Logger) RegisterWriter(writer LogWriter) {
l.writerList = append(l.writerList, writer)
}
// 将一个data类型的数据写入日志
func (l *Logger) Log(data interface{
}) {
// 遍历所有注册的写入器
for _, writer := range l