该日志文件是什么格式?有没有办法转换它?

Jay*_*Kim 0 format go nohup logfile

这可能是一个毫无意义的问题,但由于我不知道要搜索什么以及如何搜索,所以我决定向公众提出这个问题。如果您认为这个问题需要改进或需要更多信息,请发表评论。我会尽力尽快回复并编辑。

我有一个简单的 Go 程序,它使用名为Zerolog 的三十方日志库并打印日志。

package main

import (
    "os"
    "time"

    "github.com/rs/zerolog"
    "github.com/rs/zerolog/log"
)

func init() {
    zerolog.SetGlobalLevel(zerolog.DebugLevel)
    zerolog.TimeFieldFormat = zerolog.TimeFormatUnixMs
    log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr, TimeFormat: time.RFC3339Nano})
}

func main() {
    log.Debug().Msg("This if debugging message")
    log.Info().Msg("This is information message")
}

Run Code Online (Sandbox Code Playgroud)

如果您只是使用 运行该程序$ go run main.go,它会打印出以下结果。

2021-06-23T12:45:29.409Z DBG This if debugging message
2021-06-23T12:45:29.41Z INF This is information message
Run Code Online (Sandbox Code Playgroud)

但是,如果我用来nohup运行这个程序$ nohup go run main.go &,那么它会创建一个名为 的输出文件nohup.out并写入不同的日志格式。这是为什么?

[90m2021-06-23T12:59:37.755Z[0m [33mDBG[0m This if debugging message
[90m2021-06-23T12:59:37.756Z[0m [32mINF[0m This is information message
Run Code Online (Sandbox Code Playgroud)

谁能向我解释一下这是什么格式以及如何将其转换为人类可读的格式(如第一个结果)?

Bur*_*dar 5

它使用带有颜色的 Zerolog ConsoleWriter,因此您在第二个输出中看到的是彩色输出的转义序列。您可以关闭颜色(从零日志示例复制):


func main() {
    out := zerolog.NewConsoleWriter()
    out.NoColor = true 
    log := zerolog.New(out)

    log.Debug().Str("foo", "bar").Msg("Hello World")
}
Run Code Online (Sandbox Code Playgroud)