关于go:如何通过代码设置glog的日志目录

How do I set the log directory of glog from code

有谁知道如何在golang源代码中设置/修改日志目录?
我想在源代码中设置日志目录,而不是在cmdline中设置-log_dir=


我见过这种骇客:在代码中设置标志。
从代码设置日志级别也非常好。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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


glog软件包是Google内部使用的日志软件包的转储。 Google使用命令行标志配置日志记录,这是该程序包支持的功能。

如果要通过代码设置目录,则应查看另一个日志包或派生该包。


变量logDir确实存在于glog包https://github.com/golang/glog/blob/master/glog_file.go#L41中
它只是不出口。 因此,您可以在glog实例的源代码中进行更改。 有点小巧,但不难。


首先,Glog依赖于包Flag。 如果您不导入它,则日志消息中将出现令人讨厌的警告。

如果您只需要一次设置参数,则非常简单。

1
2
3
flag.Set("logtostderr","true")
flag.Parse()
glog.Infof("starting main program")