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

golang 有按时间/日期切割的 log 库吗?

  •  
  •   zoharSoul · 2022-01-18 14:55:02 +08:00 · 4517 次点击
    这是一个创建于 1040 天前的主题,其中的信息可能已经有所发展或是发生改变。

    类似 log4j/logback 那种的

    20 条回复    2022-02-18 10:03:39 +08:00
    waising
        1
    waising  
       2022-01-18 15:02:54 +08:00
    z657386160z
        2
    z657386160z  
       2022-01-18 15:06:04 +08:00
    zoharSoul
        3
    zoharSoul  
    OP
       2022-01-18 15:08:27 +08:00
    @z657386160z #2 这个是按文件大小的.
    exkernel
        4
    exkernel  
       2022-01-18 15:25:34 +08:00
    mcfog
        5
    mcfog  
       2022-01-18 15:33:15 +08:00   ❤️ 1
    zoharSoul
        6
    zoharSoul  
    OP
       2022-01-18 15:36:15 +08:00
    @mcfog #5 看起来非常符合需求, 多谢大佬
    janxin
        7
    janxin  
       2022-01-18 15:53:01 +08:00
    lwch
        8
    lwch  
       2022-01-18 15:57:11 +08:00
    adoal
        9
    adoal  
       2022-01-18 17:52:00 +08:00
    如果不考虑 Windows ,只在 Linux 运行的话,不如打到 syslog 里去,通过 logrotate 任务来切分。
    能用运维手段解决的就没必要用开发手段解决。运维手段用的基础设施往往是久经考验的。
    zoharSoul
        10
    zoharSoul  
    OP
       2022-01-18 18:09:36 +08:00
    @adoal #9 log4j/logback/log4j2 之类的都是开发手段, 也是久经考验.
    adoal
        11
    adoal  
       2022-01-18 19:02:29 +08:00 via iPhone
    好吧,对运维方式处理问题不感兴趣的纯程,byebye
    quzard
        12
    quzard  
       2022-01-18 19:12:17 +08:00 via Android
    uber 开源的 zap 日志库
    zoharSoul
        13
    zoharSoul  
    OP
       2022-01-18 19:14:53 +08:00
    @quzard #12 这个看起来完全不支持日志切割
    Immortal
        14
    Immortal  
       2022-01-18 19:25:30 +08:00
    为什么就不考虑 linux 系统里自带又好用的 logrorate
    securityCoding
        15
    securityCoding  
       2022-01-18 21:04:54 +08:00 via Android
    my3157
        16
    my3157  
       2022-01-18 21:23:12 +08:00 via Android
    logrotate + signal ,完美解决
    dingyaguang117
        17
    dingyaguang117  
       2022-01-18 22:03:45 +08:00 via iPhone
    我写了一个,原理大概就是 加锁 和 rename
    xuyang9978
        18
    xuyang9978  
       2022-01-18 22:57:07 +08:00 via iPhone
    #1 的那个也不错,使用很方便,不过作者已经不维护了
    hululu
        19
    hululu  
       2022-01-22 17:16:40 +08:00
    const rotate = "00 00 00 * * *"
    func RotateCrond(logger *lumberjack.Logger, rotate string) {
    rotateCrondOnce.Do(func() {
    c := cron.New(cron.WithSeconds())
    _, _ = c.AddFunc(rotate, func() {
    _ = logger.Rotate()
    })
    c.Start()
    })
    }
    SillyChenBrother
        20
    SillyChenBrother  
       2022-02-18 10:03:39 +08:00
    我觉得很多都不好用,就自己写了一个。

    支持日志输出到控制台或文件,支持很多配置,如打印函数调用行,配置日志级别等。
    支持日志层级输出到不同文件,且支持文件切割,清除过期日志文件等。
    使用接口契约,你可以自行再次封装该库,我留有 SetCallerSkip 给你继续封装。

    https://github.com/hunterhug/golog
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1217 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 18:26 · PVG 02:26 · LAX 10:26 · JFK 13:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.