高性能日志框架:seelog,使用的好,可以提升很多开发效率,有时候做大型高并发的时候,我们需要用日志去检查很多问题,那么接下来介绍一个非常简单的小案例。

seelog 大牛的 github 链接如下:
github : https://github.com/cihub/seelog

文件目录

文件目录

配置文件

我改动后如下:将日志输出到磁盘文件,按文件大小进行切割日志,单个文件最大10M,最多99个日志文件,主要是我考虑到文件太大也不好传输的问题,所以更改了配置文件

seelog.xml

<seelog levels="trace,debug,info,warn,error,critical">
    <outputs formatid="main">
        <!-- 对控制台输出的Log按级别分别用颜色显示。6种日志级别我仅分了三组颜色,如果想每个级别都用不同颜色则需要简单修改即可 -->
        <filter levels="trace,debug,info">
            <console formatid="colored-default"/>
            <!-- 将日志输出到磁盘文件,按文件大小进行切割日志,单个文件最大10M,最多99个日志文件 -->
            <rollingfile formatid="main" type="size" filename="./log/Preliminary/info.log" maxsize="10485760" maxrolls="99" />
        </filter>
        <filter levels="warn">
            <console formatid="colored-warn"/>
            <!-- 将日志输出到磁盘文件,按文件大小进行切割日志,单个文件最大10M,最多99个日志文件 -->
            <rollingfile formatid="main" type="size" filename="./log/Intermediate/warn.log" maxsize="10485760" maxrolls="99" />
        </filter>
        <filter levels="error,critical">
            <console formatid="colored-error"/>
            <!-- 将日志输出到磁盘文件,按文件大小进行切割日志,单个文件最大10M,最多99个日志文件 -->
            <rollingfile formatid="main" type="size" filename="./log/highLevel/error.log" maxsize="10485760" maxrolls="99" />
        </filter>

    </outputs>
    <formats>
        <format id="colored-default"  format="%EscM(38)%Date %Time [%LEV] %File:%Line | %Msg%n%EscM(0)"/>
        <format id="colored-warn"  format="%EscM(33)%Date %Time [%LEV] %File:%Line | %Msg%n%EscM(0)"/>
        <format id="colored-error"  format="%EscM(31)%Date %Time [%LEV] %File:%Line | %Msg%n%EscM(0)"/>
        <format id="main" format="%Date %Time [%LEV] %File:%Line | %Msg%n"/>
    </formats>
</seelog>
代码

SeelogHelp.go

/*
@Time : 2021/7/13 11:58
@Author : dao
@File : SeelogHelp
@Software: GoLand
*/

package help

import "github.com/cihub/seelog"

func SetupLogger() {
	logger, err := seelog.LoggerFromConfigAsFile("seelog.xml")
	if err != nil {
		return
	}
	seelog.ReplaceLogger(logger)
}

main.go

/*
@Time : 2021/7/13 11:59
@Author : dao
@File : main
@Software: GoLand
*/

package main

import (
	"TestGo/help"
	"fmt"
	"github.com/cihub/seelog"
	"strconv"
)

/**
 * @Description: 初始化
 */

func Init() {
	help.SetupLogger()
}

/**
 * @Description: 入口
 */

func main() {
	Init()
	defer seelog.Flush()
	num := 0
	for {
		num++
		seelog.Info(fmt.Sprintf("My Log Go! curr:%d", num))
		sd, err := strconv.Atoi("we")
		if err != nil {
			seelog.Error(err)
			continue
		}
		seelog.Info(sd)
	}
}

效果:

在这里插入图片描述