Does anyone know how to set/modify the log dir in the golang source code?
I want to set the log dir in the soure code, instead of -log_dir=
in the cmdline
问问题
10974 次
4 回答
20
这是我看到的一个技巧:在代码中设置标志。也非常适合从代码设置日志级别。
package main
import (
"flag"
"github.com/golang/glog"
)
func main() {
flag.Parse()
glog.Info("hi_a")
flag.Lookup("logtostderr").Value.Set("true")
glog.Info("hi_b")
flag.Lookup("log_dir").Value.Set("/path/to/log/dir")
glog.V(4).Info("v4a")
flag.Lookup("v").Value.Set("10")
glog.V(4).Info("v4b")
//etc.
}
>>> hi_b
>>> v4b
于 2015-01-29T12:05:37.977 回答
4
glog包是 Google 内部使用的日志包的转储。Google 使用命令行标志配置日志记录,这就是该软件包所支持的。
如果您想从代码中设置目录,您应该查看另一个日志包或 fork 包。
于 2015-01-29T06:12:18.153 回答
1
logDir
glog 包中确实存在变量https://github.com/golang/glog/blob/master/glog_file.go#L41
它只是没有导出。因此,您可以在 glog 实例的源代码中更改它。这有点hacky,但并不难。
于 2015-01-29T10:50:17.657 回答
0
首先Glog依赖于包Flag。如果您不导入它,您将在日志消息中收到烦人的警告。
如果您只需要在初始化时设置一次参数,那非常容易。
flag.Set("logtostderr", "true")
flag.Parse()
glog.Infof("starting main program")
于 2019-02-24T23:32:37.243 回答