如何从代码中设置glog的日志目录

11

有人知道如何在golang源代码中设置/修改日志目录吗? 我想在源代码中设置日志目录,而不是在命令行中使用-log_dir=

4个回答

21

这是一个我见过的技巧:通过代码设置标志位。这也非常适用于在代码中设置日志级别。

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

我想知道这些getter和setter方法是用来干什么的。请注意,使用此方法(缺少文档),您还可以打印值glog.Info("Log level: ", flag.Lookup("v").Value)。非常感谢。我认为这不是黑客行为,而是预期使用方式。 - chmike

4

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

如果您想从代码中设置目录,则应查看另一个日志包或fork该包。


1

0

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

如果您只需要在初始化时设置参数一次,那么非常容易实现。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接