去记录器打印时间戳

时间:2014-10-02 01:01:00

标签: go

转到记录器以打印时间戳

我有以下内容:

l := log.New(os.Stdout, "[AAA] ", 2)
l.Printf("Listening on %s", addr)

打印出[AAA] Listening on ~

我有什么方法可以配置log包来打印

2014-09-15 10:23:12 [AAA] Listening on ...

4 个答案:

答案 0 :(得分:4)

要获取特定请求的输出,您可以将其包装在自己的Log函数中,并在每次使用SetPrefix时设置前缀(或在您自己的中嵌入记录器)用另一个函数输入并扩展它:)

func Log(l *log.Logger, msg string) {
    l.SetPrefix(time.Now().Format("2006-01-02 15:04:05") + " [AAA] ")
    l.Print(msg)
}

例如:

l := log.New(os.Stdout, "", 0)

Log(l, "Log 1")

<-time.After(time.Second * 3)

Log(l, "Log 2")

..在我的机器上输出:

2014-10-02 11:12:14 [AAA] Log 1
2014-10-02 11:12:17 [AAA] Log 2

请注意,您可以使用logsome predefined flags,但是它们不会生成您在问题中请求的格式。为了得到它,你必须为标志传递零并自己动手。

答案 1 :(得分:3)

man ruby

打印出l := log.New(os.Stdout, "[AAA] ", 2) l.Printf("Listening on %s", addr)

如果您想添加日期,请使用[AAA] 17:07:51 Listening on ...作为标记:

log.Ldate | log.Ltime

但是为了拥有前缀之前的日期和时间,您可以使用自定义编写器:

l := log.New(os.Stdout, "[AAA] ", log.Ldate | log.Ltime)
l.Printf("Listening on %s", addr)
// [AAA] 2016-07-14 17:07:51 Listening on ...

然后,将自定义编写器传递给日志type writer struct { io.Writer timeFormat string } func (w writer) Write(b []byte) (n int, err error) { return w.Writer.Write(append([]byte(time.Now().Format(w.timeFormat)), b...)) }

New

有一个完整的示例here

答案 2 :(得分:3)

设置运行日志标志log flags

log.SetFlags(LstdFlags)

答案 3 :(得分:1)

不确定何时添加,但您也可以只设置Lmsgprefix标志

Lmsgprefix   // move the "prefix" from the beginning of the line to before the message

例如:

log.SetFlags(log.Lmsgprefix | log.LstdFlags)