Golang 中国
  1. 一个logger同时向console,文件记录
  2. 打印所在文件和行号
  3. 切片
  4. 简单的输出格式的定义方式
  5. 太特么惨了
    这些东西在很多语言里简直是必备的,原生的
    logrus最特么恶心,行号不能打印,还特么哲学
    还有那个logrus_mate,说的能用logrus打印行号,文件,github上的example都跑不通…
5 回复
heimeil
#1 heimeil • 2017-11-16 11:05
package main

import (
    "fmt"
    "io"
    "log"
    "os"
)

type writer struct {
    io.Writer
}

// 3
func (w *writer) Write(p []byte) (n int, err error) {
    fmt.Println(string(p))
    return w.Writer.Write(p)
}

func main() {
    logFile, err := os.Create("hello.log")
    if err != nil {
        panic(err)
    }
    defer logFile.Close()

    // 1
    w := io.MultiWriter(os.Stdout, logFile)

    // 4 2
    logger := log.New(&writer{Writer: w}, "| GOGOGO | ", log.Llongfile)

    logger.Println("Hello World!")
}

1、2用标准库的log直接能满足,3、4可能还是要看具体需求,但自己实现这种功能的log还是不难的。

ArchrSaber
#2 ArchrSaber • 2017-11-16 11:07

加1878145574,我们有一个比较好用的

seefan
#3 seefan • 2017-11-17 19:31

github.com/cihub/seelog

JiaoZiLang
#4 JiaoZiLang • 2017-11-26 16:46

感觉现在对于log库大家都是自己公司有自己的了,怎么就没有一个比较通用的呢

xgfone
#5 xgfone • 2017-11-29 14:07

可以试试 gloglog15,前者是 Google 自己的,感觉这两个用着还可以,我也不是太喜欢 logrus

需要 登录 后方可回复, 如果你还没有账号你可以 注册 一个帐号。