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

时间:2015-01-29 04:51:00

标签: go glog

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

4 个答案:

答案 0 :(得分:19)

这是我看到的hack:在代码中设置标志。 也非常适合从代码设置日志级别。

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

答案 1 :(得分:4)

glog package是Google内部使用的日志包的转储。 Google使用命令行标记配置日志记录,以及程序包支持的内容。

如果要从代码设置目录,您应该查看another log package或分叉包。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

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

//where playerPosX = X of the current player node location (red mark)
//and playerPosY = Y of the current player node location (red mark)
shiftMap("svgMapID", playerPosX, playerPosY);