有人知道如何在golang源代码中设置/修改日志目录吗?
我想在源代码中设置日志目录,而不是在命令行中使用-log_dir=
这是一个我见过的技巧:通过代码设置标志位。这也非常适用于在代码中设置日志级别。
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
logDir
确实存在于glog包https://github.com/golang/glog/blob/master/glog_file.go#L41中,只是没有被导出。因此,您可以在您的glog实例源代码中更改它。这有点hacky,但不难。首先,Glog 依赖于 Flag 包。如果您不导入它,日志消息中将会出现令人讨厌的警告。
如果您只需要在初始化时设置参数一次,那么非常容易实现。
flag.Set("logtostderr", "true")
flag.Parse()
glog.Infof("starting main program")
glog.Info("Log level: ", flag.Lookup("v").Value)
。非常感谢。我认为这不是黑客行为,而是预期使用方式。 - chmike