rlog
介绍
日志输出,分级,分类分文件,分色(彩色)。
可以直接复制 正确使用案例
的代码,到项目中运行。
彩色日志输出,让日志打印更好看。
基本用法介绍
安装教程
请使用 go.mod
进行包管理安装。
不打印到文件
package main
import (
"gitee.com/ruige_fun/rlog"
)
func main() {
rlog.Debug("你好呀")
rlog.Info("你好呀")
rlog.Warn("你好呀")
rlog.Error("你好呀")
rlog.Panic("你好呀")
rlog.Finish() //程序终止前,执行这个
}
使用说明
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("安全退出")
}
生成的日志
使用初始化函数设置日志打印文件
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() //程序终止前,执行这个
}
插件的设置
ldeolog 正则匹配项,高亮显示日志
^debug [\s\S]+?$
^info [\s\S]+?$
^warn [\s\S]+?$
^error [\s\S]+?$
^panic [\s\S]+?$
正确使用案例
不打印到文件
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")
}
}