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写入日志

  • 支持按timesize分割日志文件

  • 支持配置通过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

Logo

ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!

更多推荐