2015-01-29 3 views

ответ

14

Это хак, который я видел, лежал: установите флаги в коде. Также очень хорошо подходит для настройки уровней журнала из кода.

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 
+0

спасибо, это хорошо –

+2

@zhoulin: вы можете поблагодарить, принимая ответ :) – RickyA

+0

мне было интересно, что эти методы получения и установки были для. Обратите внимание, что с помощью этого метода (без документации) вы также можете распечатать значение 'glog.Info (« Log level: », flag.Lookup (« v »). Значение). Большое спасибо. Я не думаю, что это взломать. Это предполагаемое использование. – chmike

3

glog package свалка пакета журнала, используемого в Google. Google настраивает ведение журнала с использованием флагов командной строки, и это то, что поддерживает пакет.

Вы должны посмотреть на another log package или направить пакет, если вы хотите установить каталог из кода.

1

Переменный logDir действительно существует в пакете сальника https://github.com/golang/glog/blob/master/glog_file.go#L41 Он просто не экспортируется. Таким образом, вы можете изменить его в источнике вашего экземпляра glog. Это немного взломано, но не сложно.