go kit (8) log

39 篇文章 0 订阅
6 篇文章 0 订阅

上文写了关于跨域的部分问题,跨域的进一步设置,今天先不书写,我们今天需要看一下log中间件的使用
首先在global文件夹下创建log.go文件
我在这选用的log的包是logrus,这个东西其实都一样。log,就看你自己喜欢使用哪一个,

package global

import (
	"bytes"
	"fmt"
	"github.com/sirupsen/logrus"
	"io"
	"os"
	"path/filepath"
	"time"
)

// 初始化log
func InitLogger() {
	logrusLogLevel, err := logrus.ParseLevel("debug")
	if err != nil {
		return
	}
	// 输出位置
	logrus.SetOutput(io.MultiWriter(LogFile("kitLog/"), os.Stdout))
	// 日志等级
	logrus.SetLevel(logrusLogLevel)
	// 记录器是否启用
	logrus.SetReportCaller(true)
	// 自定义格式
	logrus.SetFormatter(&MyFormatter{})
	return
}

// 日志输出位置
func LogFile(fileDir string) (pf *os.File) {
	fileName := time.Now().Format("2006-01-02")
	fileName += ".log"
	filePath := filepath.Join(fileDir, fileName)
	pf, _ = os.OpenFile(filePath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
	return
}

type MyFormatter struct{}

// 重写并且自定义自己的方法
func (m *MyFormatter) Format(entry *logrus.Entry) ([]byte, error) {
	var b *bytes.Buffer
	if entry.Buffer != nil {
		b = entry.Buffer
	} else {
		b = &bytes.Buffer{}
	}

	timestamp := entry.Time.Format("2006-01-02 15:04:05")
	var newLog string

	//HasCaller()为true才会有调用信息
	if entry.HasCaller() {
		fName := filepath.Base(entry.Caller.File)
		newLog = fmt.Sprintf(
			"%c[1;44;32m[%.4s]%c[0m [%s] %c[1;42;34m[%s:%d]%c[0m  %s",
			0x1B, entry.Level, 0x1B, /* 日志等级 */
			timestamp,                            /* 时间戳 */
			0x1B, fName, entry.Caller.Line, 0x1B, /* 哪一行 */
			entry.Message) /* 日志输出信息 */
	} else {
		newLog = fmt.Sprintf("%c[1;43;31m[%.4s]%c[0m [%s] %s", 0x1B, entry.Level, 0x1B, timestamp, entry.Message)
	}
	if len(entry.Data) > 0 {
		newLog = fmt.Sprintf("%s ++ %v", newLog, entry.Data)
	}
	newLog += "\n"

	b.WriteString(newLog)
	return b.Bytes(), nil
}

这就是我使用的logrus的一些基本的设置,然后在自己的定义的方法中,也定义了自己的颜色等
日志定义完成之后,我们需要在main方法中调用启用他
在这里插入图片描述

写到这,我想起来了,我还需要自定义的一个配置文件的读取方法,算了 一个一个写吧,这样基本就算是完成了,OK 代码提交

代码地址:
https://gitee.com/weishunuan_163com/go

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值