V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
jxia
V2EX  ›  Go 编程语言

gookit/slog - 易于使用的,可配置、可扩展的 Go 日志库, 发布 v0.5.2 版本

  •  
  •   jxia · 312 天前 · 956 次点击
    这是一个创建于 312 天前的主题,其中的信息可能已经有所发展或是发生改变。

    gookit/slog 📑 一个易于使用的,可配置、可扩展的日志库。支持多个级别,输出到多文件;内置文件日志处理、自动切割、清理、压缩等增强功能

    Github https://github.com/gookit/slog

    v0.5.2 更新记录

    完整变更记录: https://github.com/gookit/slog/compare/v0.5.1...v0.5.2

    新功能

    更新调整

    新功能使用

    自定义日志文件权限

    通过配置 hander.ConfigFilePerm 设置创建的 log 文件权限标志。

    h1 := handler.MustFileHandler("/tmp/error.log",
        handler.WithLogLevels(slog.DangerLevels),
        handler.WithFilePerm(0644), // <- 设置创建文件的权限
    )
    
    slog.PushHandler(h1)
    
    

    设置 RotateMode 为 ModeCreate

    RotateMode 文件切割模式:

    • ModeRename 默认,每到时间重命名处理分割
    • ModeCreate 只按照分割时间创建

    设置 RotateModeModeCreate 可以让日志文件,只按照分割时间创建。

    h1 := handler.MustRotateFile(
        "/tmp/error.log",
        rotatefile.EveryHour, // 按每小时分割
        handler.WithLogLevels(slog.DangerLevels),
        handler.WithRotateMode(rotatefile.ModeCreate), // 设置 RotateMode 为 ModeCreate
    )
    
    slog.PushHandler(h1)
    

    如上面的示例配置 logfile 为 /tmp/error.log。设置为 ModeCreate 模式时,实际不会创建这个文件, 会按照实际分割时间来创建:

    /tmp/error.log.20230618_1500
    /tmp/error.log.20230618_1600
    /tmp/error.log.20230618_1700
    ...
    

    Tips: ModeCreate 模式可以适用于命令行工具应用。因为它们是每次执行完就退出,ModeRename 模式下可能无法按时分割文件。

    而使用 ModeRename 模式会是如下效果:

    /tmp/error.log # <- 日志始终写入这个文件
    /tmp/error.log.20230618_1500
    /tmp/error.log.20230618_1600
    /tmp/error.log.20230618_1700
    ...
    

    更多

    更多使用说明请看 README

    5 条回复    2023-06-26 00:45:44 +08:00
    elechi
        1
    elechi  
       312 天前
    不错,国人的轮子
    duanquanyong
        2
    duanquanyong  
       312 天前
    跟官方日志库同一个名字
    hzzhzzdogee
        3
    hzzhzzdogee  
       312 天前
    go 尚未发布的官方结构化日志 log/slog
    Anybfans
        4
    Anybfans  
       312 天前
    支持一下。学 go 的时候,看过源码。当作学习资料了😘
    wsseo
        5
    wsseo  
       307 天前
    官方的 slog 怎么没有输出到文件的介绍?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1242 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 23:42 · PVG 07:42 · LAX 16:42 · JFK 19:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.