我可以在 Glog 中设置全局日志记录级别吗?

0xb*_*7ed 4 go amazon-web-services glog aws-lambda

在 Java(我通常使用的语言)中,日志库的一个共同特性是能够设置“全局”日志记录级别 -例如,如果级别为WARNING或更高,则发送到日志文件,否则不会,无论完成日志记录的模块。

我想要做的考勤记录是相同的,与结合也只记录到标准错误,而不是文件。

如何?

更新:当控制传递给我的代码时,可执行文件已经启动 - 我正在作为 AWS Lambda 函数运行 - 所以我不确定我是否可以选择在命令行上设置 Glog 状态。我可以用函数调用来做吗?


我都是 GoLang 的新手,我想我只是不了解 Go 的内部逻辑。因为我的思想无法穿透Glog 文档。所以这个问题可能看起来很幼稚。

wil*_*200 6

好吧,我浏览了文档,glog 是由标志控制的,因此它们必须存在才能使其正常工作。在您的情况下,您必须在运行时设置它们。您将要设置logtostderr=true为记录到 stderr 并将严重性级别设置为可能的选项之一:
stderrthreshold=[WARNING|ERROR|INFO|FATAL]

例子:

package main

import (
    "flag"
    "fmt"
    "os"

    "github.com/golang/glog"
)

func usage() {
    flag.PrintDefaults()
    os.Exit(2)
}

func init() {
    flag.Usage = usage
    flag.Set("logtostderr", "true")
    flag.Set("stderrthreshold", "WARNING")
    flag.Set("v", "2")
    // This is wa
    flag.Parse()
}

func main() {
    number_of_lines := 10
    for i := 0; i < number_of_lines; i++ {
        glog.V(2).Infof("LINE: %d", i)
        message := fmt.Sprintf("TEST LINE: %d", i)
        glog.Warning(message)
    }
    glog.Flush()
}
Run Code Online (Sandbox Code Playgroud)

输出:

$ ./stackoverflow.exe
I0615 11:03:47.589969   11776 main.go:30] LINE: 0
W0615 11:03:47.590469   11776 main.go:32] TEST LINE: 0
I0615 11:03:47.590969   11776 main.go:30] LINE: 1
W0615 11:03:47.590969   11776 main.go:32] TEST LINE: 1
I0615 11:03:47.590969   11776 main.go:30] LINE: 2
W0615 11:03:47.590969   11776 main.go:32] TEST LINE: 2
I0615 11:03:47.590969   11776 main.go:30] LINE: 3
W0615 11:03:47.590969   11776 main.go:32] TEST LINE: 3
I0615 11:03:47.590969   11776 main.go:30] LINE: 4
W0615 11:03:47.590969   11776 main.go:32] TEST LINE: 4
I0615 11:03:47.591469   11776 main.go:30] LINE: 5
W0615 11:03:47.591469   11776 main.go:32] TEST LINE: 5
I0615 11:03:47.591469   11776 main.go:30] LINE: 6
W0615 11:03:47.591469   11776 main.go:32] TEST LINE: 6
I0615 11:03:47.591469   11776 main.go:30] LINE: 7
W0615 11:03:47.591469   11776 main.go:32] TEST LINE: 7
I0615 11:03:47.591469   11776 main.go:30] LINE: 8
W0615 11:03:47.591469   11776 main.go:32] TEST LINE: 8
I0615 11:03:47.591469   11776 main.go:30] LINE: 9
W0615 11:03:47.591469   11776 main.go:32] TEST LINE: 9
Run Code Online (Sandbox Code Playgroud)