Golang – 日志库实战

  • Post author:
  • Post category:golang





目录结构


| - myLog
	| - mylog.go
	| - file_log.go
| - 项目目录
	| - main.go 
	
"""
使用:
	设置日志路径, 日志名, 日志切割大小, 日志记录等级
	实例化后, 即可使用
"""



调用文件

package main

import (
	"xx/xx/mylogger"
)

const (
	// 日志文件路径
	filePath string = "./"
	// 日志记录的服务名
	srvName string = "hellen"
	// 文件记录日志的等级
	fileLevel string = "Warning"
	// 终端记录日志的等级
	consoleLevel string = "Debug"
	// 日志文件大小上限
	maxSize int64 = 1 << 10 // 1024B --> 1KB
)

// logger是一个接口类型, 这个接口实现了debug,info,warning,error,fatal,close方法
var logger mylogger.Logger

func main() {
   
	// 实例化一个日志接口
	logger = mylogger.NewLogSet(filePath, srvName, fileLevel, consoleLevel, maxSize)

	// 教学中举例的时候, 日志记录和终端记录是两个不同的结构体
	// 所以创建一个logger接口, 这样可以保证实例化日志记录和终端记录时, 都可以使用
	// 但是我写的这个, 结构体并没有区分日志记录和终端记录, 所以这个接口也可以不创建, 看官们不必纠结

	// 延迟关闭
	defer logger.Close()

	// 测试用
	logger.Debug("用户 ss 尝试登录 %d 次", 1)   // 输出到屏幕, 不记录到文件
	logger.Info("用户 ss 尝试登录 %d 次", 2)    // 同上
	logger.Warning("用户 ss 尝试登录 %d 次", 3) // 输出到屏幕, 记录到acc_log
	logger.Error("用户 ss 尝试登录 %d 次", 4)   // 输出到屏幕,记录到所有log
	logger.Fatal("用户 ss 尝试登录 %d 次", 5)   // 输出到屏幕,记录到所有log
}



日志库文件

  • mylogger.go
package mylogger

// 我的日志库

// Level 自定义类型 代表日志级别
type Level uint16

const (
	// Debug 代表debug级别
	Debug Level = iota // Debug Level类型
	// Info 代表info级别
	Info
	// Warning 代表warning级别
	Warning
	// Error 代表Error级别
	Error
	// Fatal 代表Critical级别
	Fatal
)

// Logger 定义一个接口
type Logger interface {
   
	Debug(format string, args ...interface{
   })
	Info(format string, args ...interface{
   })
	Warning(format string, args ...interface{
   })
	Error(



版权声明:本文为yang_kaiyue原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。