rlog

package module
v1.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 16, 2021 License: MIT Imports: 8 Imported by: 1

README

rlog

介绍

日志输出,分级,分类分文件,分色(彩色)。

可以直接复制 正确使用案例 的代码,到项目中运行。

彩色日志输出,让日志打印更好看。

log打印

基本用法介绍

安装教程

请使用 go.mod 进行包管理安装。

不打印到文件
package main

import (
	"gitee.com/ruige_fun/rlog"
)

func main() {
	rlog.Debug("你好呀")
	rlog.Info("你好呀")
	rlog.Warn("你好呀")
	rlog.Error("你好呀")
	rlog.Panic("你好呀")

	rlog.Finish() //程序终止前,执行这个
}

log打印

使用说明

1、rlog.SetLogRank 设置日志输出等级。

2、rlog.SetLogFilePath设置日志文件路径、日志文件大小(超过切割文件)。

3、任意位置输出打印你的日志。

  • rlog.Debug("你好呀", "Hello")
  • rlog.Info("你好呀", "Hello")
  • rlog.Warn("你好呀", "Hello")
  • rlog.Error("你好呀", "Hello")
  • rlog.Panic("你好呀", "Hello")

4、rlog.Finish() 程序结束前,必须执行这个,确保所有日志,都输出写入完。

package main

import (
	"fmt"
	"os"
	"os/signal"
	"syscall"

	"gitee.com/ruige_fun/rlog"
)

func main() {
	var ch = make(chan os.Signal)
	wd, _ := os.Getwd()
	rlog.SetPrevTime("2006/01/02·15:04:05") //设置日志时间前缀格式,默认"2006/01/02·15:04:05"
	fmt.Println("prevLength = ", len(wd)) //可以拿到工程目录的地址长度,可以用于下面这行第一个参数的固定设置
	rlog.SetLogRank(29, rlog.LogDebug, rlog.LogDebug) //设置日志打印等级,参数1:工程目录前面省略字符量。参数2:控制台输出等级。参数3:文件输出等级。
	//设置日志输出文件,可以是不同的文件哟。也可以是相同的。最后一个参数,是每个文件的分割大小,超过这个值会分割文件。
	rlog.SetLogFilePath("./app.log", "./app.log", "./app.log", "./app.log", "./app.log", 1024*1024*1)
	for i := 0; i < 3; i++ {
		rlog.Debug("你好呀", "Hello")
		rlog.Info("你好呀", "Hello")
		rlog.Warn("你好呀", "Hello")
		rlog.Error("你好呀", "Hello")
		rlog.Panic("你好呀", "Hello")
	}
	signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM)
	<-ch
	rlog.Finish() //程序结束后,必须保证这行代码执行完。
	fmt.Println("安全退出")
}
生成的日志

log打印

使用初始化函数设置日志打印文件
type Config struct {
	//PrevLength 可以通过以下代码,计算出你的项目地址,前缀长度。
	//	getwd, _ := os.Getwd()
	//	fmt.Println(len(getwd) + 1)
	//但,需要注意的是, PrevLength 必须是固定值,而不能使用动态计算前缀长度的方式。
	PrevLength  uint   `json:"prev_length"`   //日志打印地址前面省略多少个字符,0则打印完整地址。默认0。
	ConsoloRank uint   `json:"consolo_rank"`  //控制台日志打印等级
	FileRank    uint   `json:"file_rank"`     //文件日志打印等级
	MaxFileSize uint64 `json:"max_file_size"` //日志文件最大大小,1024 * 1024 * 1  为 1MB,如果该值为0,那么执行默认 1MB 。
	DebugFile   string `json:"debug_file"`    //Debug日志文件路径
	InfoFile    string `json:"info_file"`     //Info日志文件路径
	WarnFile    string `json:"warn_file"`     //Warn日志文件路径
	ErrorFile   string `json:"error_file"`    //Error日志文件路径
	PanicFile   string `json:"panic_file"`    //Panic日志文件路径
}
package main

import (
	"gitee.com/ruige_fun/rlog"
)

func main() {
	rlog.InitConfig(rlog.Config{
		PrevLength:  0,
		ConsoloRank: rlog.LogDebug,   //打印所有的日志
		FileRank:    rlog.LogWarn,    //只打印警告以上的日志,到日志文件
		MaxFileSize: 1024 * 1024 * 1, // 1 MB
		DebugFile:   "./app.log",
		InfoFile:    "./app.log",
		WarnFile:    "./app.log",
		ErrorFile:   "./app.log",
		PanicFile:   "./app.log",
	})
	rlog.Debug("你好呀")
	rlog.Info("你好呀")
	rlog.Warn("你好呀")
	rlog.Error("你好呀")
	rlog.Panic("你好呀")

	rlog.Finish() //程序终止前,执行这个
}

log打印

插件的设置
ldeolog 正则匹配项,高亮显示日志
^debug [\s\S]+?$
^info [\s\S]+?$
^warn [\s\S]+?$
^error [\s\S]+?$
^panic [\s\S]+?$

log打印

正确使用案例

不打印到文件
package main

import (
	"gitee.com/ruige_fun/rlog"
	"fmt"
	"os"
	"os/signal"
	"syscall"
	"time"
)

func main() {
	var ch = make(chan os.Signal) //信号通道

	/*go协程启动-开始*/

	go Hello()

	/*go协程启动-结束*/

	signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM)
	<-ch
	rlog.Finish() //程序结束后,必须保证这行代码执行完。
	fmt.Println("安全退出")
}

func Hello() {
	for {
		time.Sleep(time.Second)
		rlog.Info("Hello Run")
	}
}
打印到文件
package main

import (
	"gitee.com/ruige_fun/rlog"
	"fmt"
	"os"
	"os/signal"
	"syscall"
	"time"
)

func main() {
	var ch = make(chan os.Signal) //信号通道

	/*go协程启动-开始*/

	go Hello()

	/*go协程启动-结束*/

	signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM)
	<-ch
	rlog.Finish() //程序结束后,必须保证这行代码执行完。
	fmt.Println("安全退出")
}

func init() {
	rlog.InitConfig(rlog.Config{
		PrevLength:  0,
		ConsoloRank: rlog.LogDebug,
		FileRank:    rlog.LogInfo,
		MaxFileSize: 1024 * 1024 * 1,
		DebugFile:   "./app.log",
		InfoFile:    "./app.log",
		WarnFile:    "./app.log",
		ErrorFile:   "./app_error.log",
		PanicFile:   "./app_panic.log",
	})
}

func Hello() {
	for {
		time.Sleep(time.Second)
		rlog.Info("Hello Run")
	}
}

Documentation

Index

Constants

View Source
const (
	//日志打印登记常量
	LogDebug    = iota //调试
	LogInfo            //信息
	LogWarn            //警告
	LogError           //错误
	LogPanic           //恐慌
	LogNotPrint        //不打印
)

Variables

This section is empty.

Functions

func Debug

func Debug(a ...interface{})

func Error

func Error(a ...interface{})

func Finish

func Finish()

Finish 为了保证所有日志打印完毕,建议在程序结束前,运行这个。

func Info

func Info(a ...interface{})

func InitConfig

func InitConfig(c Config)

InitConfig 初始化日志打印配置,为了保证所有日志输出完毕,请在程序终止前,执行 rlog.Finish() 函数。 初始化的目的,是为了打印日志到文件,如果不打印到文件。则不需要执行本函数的初始化。

func Panic

func Panic(a ...interface{})

func SetLogFilePath

func SetLogFilePath(debugFile, infoFile, warnFile, errorFile, panicFile string, maxByte uint64)

SetLogFilePath 设置日志文件地址,不设置地址,不打印到文件。

func SetLogRank

func SetLogRank(prevLength, consoleRank, fileRank uint)

SetLogRank 设置日志打印等级 prevLength:项目地址前面省去多少字符

func SetPrevTime

func SetPrevTime(format string)

SetPrevTime 设置行首日期格式。默认 "2006/01/02·15:04:05"

func Warn

func Warn(a ...interface{})

Types

type Config

type Config struct {
	//PrevLength 可以通过以下代码,计算出你的项目地址,前缀长度。
	//	getwd, _ := os.Getwd()
	//	fmt.Println(len(getwd) + 1)
	//但,需要注意的是, PrevLength 必须是固定值,而不能使用动态计算前缀长度的方式。
	PrevLength  uint   `json:"prev_length"`   //日志打印地址前面省略多少个字符,0则打印完整地址。默认0。
	ConsoloRank uint   `json:"consolo_rank"`  //控制台日志打印等级
	FileRank    uint   `json:"file_rank"`     //文件日志打印等级
	MaxFileSize uint64 `json:"max_file_size"` //日志文件最大大小,1024 * 1024 * 1  为 1MB,如果该值为0,那么执行默认 1MB 。
	DebugFile   string `json:"debug_file"`    //Debug日志文件路径
	InfoFile    string `json:"info_file"`     //Info日志文件路径
	WarnFile    string `json:"warn_file"`     //Warn日志文件路径
	ErrorFile   string `json:"error_file"`    //Error日志文件路径
	PanicFile   string `json:"panic_file"`    //Panic日志文件路径
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL