9

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

4

4 回答 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

logDirglog 包中确实存在变量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 回答