slog - 轻量级、可配置、可扩展的 Go 日志库
slog是一个轻量级、可配置、可扩展的 Go 日志库。
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--zAlODECS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com /gookit/slog/master/_example/images/console-log-all-level.png)
特点
-
简单,无需配置直接可用
-
支持普通日志级别处理。
-
例如:
trace``debug``info``notice``warn``error``fatal``panic -
支持任意扩展
Handler``Formatter根据需要 -
支持同时添加多个
Handler日志处理,将日志输出到不同的地方 -
支持自定义日志消息
Formatter -
内置
json``text两条日志记录格式化Formatter -
支持自定义构建日志消息
Handler -
内置
handler.Config``handler.Builder可以轻松快速地构建所需的日志处理程序 -
已内置通用日志写入处理程序
*console输出日志到控制台,支持彩色输出
*writer输出日志到指定的io.Writer
*file输出日志到指定文件,可选启用buffer缓冲写入
*simple输出日志到指定文件,不缓冲直接写入文件
*rotate_file输出日志到指定文件,支持按时间和大小拆分文件,默认开启buffer缓冲写入
- 有关更多内置实现,请参见 ./handler 文件夹
输出日志到文件
-
支持开启
buffer写入日志 -
支持按
time和size分割日志文件 -
支持配置通过
gzip压缩日志文件 -
支持清理旧日志文件
BackupNum``BackupTime
Git 存储库
- Github:https://github.com/gookit/slog
安装
go get github.com/gookit/slog
进入全屏模式 退出全屏模式
快速入门
package main
import (
"github.com/gookit/slog"
)
func main() {
slog.Trace("this is a log message")
slog.Debug("this is a log message")
slog.Info("this is a log message")
slog.Notice("this is a log message")
slog.Warn("this is a log message")
slog.Error("this is a log message")
slog.Fatal("this is a log message")
}
进入全屏模式 退出全屏模式
输出预览:
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--zAlODECS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com /gookit/slog/master/_example/images/console-log-all-level.png)
日志到文件
使用slog将日志输出到文件非常方便,并且支持多文件、按时间分割等。
package main
import (
"github.com/gookit/slog"
"github.com/gookit/slog/handler"
"github.com/gookit/slog/rotatefile"
)
func main() {
defer slog.MustFlush()
// DangerLevels contains: slog.PanicLevel, slog.ErrorLevel, slog.WarnLevel
h1 := handler.MustRotateFile("/tmp/logs/app_error.log", rotatefile.EveryHour,
handler.WithLogLevels(slog.DangerLevels),
)
// NormalLevels contains: slog.InfoLevel, slog.NoticeLevel, slog.DebugLevel, slog.TraceLevel
h2 := handler.MustRotateFile("/tmp/logs/app_info.log", rotatefile.EveryHour,
handler.WithLogLevels(slog.NormalLevels),
)
slog.PushHandler(h1)
slog.PushHandler(h2)
// add logs
slog.Info("info message text")
slog.Error("error message text")
}
进入全屏模式 退出全屏模式
查看日志目录:
$ ls /tmp/logs
app_error.log
app_info.log
进入全屏模式 退出全屏模式
更多用法
更多用法请看README
更多推荐


所有评论(0)