V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
zoharSoul

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

  •  
  •   zoharSoul · Jan 18, 2022 · 5376 views
    This topic created in 1561 days ago, the information mentioned may be changed or developed.

    类似 log4j/logback 那种的

    20 replies    2022-02-18 10:03:39 +08:00
    waising
        1
    waising  
       Jan 18, 2022
    zoharSoul
        3
    zoharSoul  
    OP
       Jan 18, 2022
    @z657386160z #2 这个是按文件大小的.
    exkernel
        4
    exkernel  
       Jan 18, 2022
    mcfog
        5
    mcfog  
       Jan 18, 2022   ❤️ 1
    zoharSoul
        6
    zoharSoul  
    OP
       Jan 18, 2022
    @mcfog #5 看起来非常符合需求, 多谢大佬
    lwch
        8
    lwch  
       Jan 18, 2022
    adoal
        9
    adoal  
       Jan 18, 2022
    如果不考虑 Windows ,只在 Linux 运行的话,不如打到 syslog 里去,通过 logrotate 任务来切分。
    能用运维手段解决的就没必要用开发手段解决。运维手段用的基础设施往往是久经考验的。
    zoharSoul
        10
    zoharSoul  
    OP
       Jan 18, 2022
    @adoal #9 log4j/logback/log4j2 之类的都是开发手段, 也是久经考验.
    adoal
        11
    adoal  
       Jan 18, 2022 via iPhone
    好吧,对运维方式处理问题不感兴趣的纯程,byebye
    quzard
        12
    quzard  
       Jan 18, 2022 via Android
    uber 开源的 zap 日志库
    zoharSoul
        13
    zoharSoul  
    OP
       Jan 18, 2022
    @quzard #12 这个看起来完全不支持日志切割
    Immortal
        14
    Immortal  
       Jan 18, 2022
    为什么就不考虑 linux 系统里自带又好用的 logrorate
    securityCoding
        15
    securityCoding  
       Jan 18, 2022 via Android
    my3157
        16
    my3157  
       Jan 18, 2022 via Android
    logrotate + signal ,完美解决
    dingyaguang117
        17
    dingyaguang117  
       Jan 18, 2022 via iPhone
    我写了一个,原理大概就是 加锁 和 rename
    xuyang9978
        18
    xuyang9978  
       Jan 18, 2022 via iPhone
    #1 的那个也不错,使用很方便,不过作者已经不维护了
    hululu
        19
    hululu  
       Jan 22, 2022
    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  
       Feb 18, 2022
    我觉得很多都不好用,就自己写了一个。

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

    https://github.com/hunterhug/golog
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1058 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 22:35 · PVG 06:35 · LAX 15:35 · JFK 18:35
    ♥ Do have faith in what you're doing.