Як рэалізаваць пратакаляванне на аснове ўзроўню ў golang?

Ці ёсць добрая абгортка для на аснове ўзроўню лесанарыхтовак у golang? Калі няма, то як я павінен ісці аб рэалізацыі аднаго сам?

Тое, што я хачу, гэта даволі проста. Я хачу некалькі функцый, напрыклад,

log.Error()
log.Info()

і г.д., якія адлюстроўваюць іх вынікі на стандартны вывад, а таксама захоўваць іх у лог-файл (на аснове ўзроўню дадзенай праграме ў якасці аргументу каманднага радка). Як рэалізаваць гэтую абгортку?

29
дададзена аўтар elithrar, крыніца
@elithrar, дзякуй, гэта проста і Powerfool
дададзена аўтар Ivan Black, крыніца
@elithrar, дзякуй, гэта проста і Powerfool
дададзена аўтар Ivan Black, крыніца
Існуе github.com/golang/glog , які, верагодна, больш, чым трэба, але варта паглядзець. Рэалізацыя мае вельмі цікавае выкарыстанне лагічных тыпаў з метадамі.
дададзена аўтар fiorix, крыніца
Існуе github.com/golang/glog , які, верагодна, больш, чым трэба, але варта паглядзець. Рэалізацыя мае вельмі цікавае выкарыстанне лагічных тыпаў з метадамі.
дададзена аўтар fiorix, крыніца
@elithrar дзякуй!
дададзена аўтар pymd, крыніца

12 адказы

Яшчэ некалькі прапаноў, у цяперашні час, што існуючыя адказы даволі старыя:

32
дададзена

Я думаю, што seelog адпавядае вашаму патрабаванні , і гэта, здаецца, даволі папулярныя, як гэта часта ўсплывае ў часопісе дыскусій. Я ніколі не выкарыстоўваў гэта сур'ёзна, таму я не магу каментаваць далей.

4
дададзена
Гэта выглядае так, як быццам seelog павінны набыць/зняць глабальную блякаваньне для кожнага аператара.
дададзена аўтар Eric Urban, крыніца

Паглядзіце на http://cgl.tideland.biz і там у пакеце «applog». Ён працуе такім чынам.

PS: Увесь ВКТ ў цяперашні час перапрацаваныя і ў хуткім часе будзе выпушчаны з новымі магчымасцямі, але з іншай назвай. ;)

3
дададзена
На жаль для ўсіх рухаў на працягу доўгага часу. Неабходны час, каб знайсці бягучы як ІМХО лепшы. Пакеты на github.com/tideland/golib і дакументацыі ў godoc.org/?q=tideland%2Fgolib .
дададзена аўтар Mue, крыніца
на жаль, мёртвыя спасылкі
дададзена аўтар Friedrich Große, крыніца
Усе спасылкі мёртвыя ці не маюць нічога агульнага з лесанарыхтоўкамі.
дададзена аўтар neurosnap, крыніца
Вялікі дзякуй за вашу дапамогу!
дададзена аўтар pymd, крыніца

Паглядзіце на http://cgl.tideland.biz і там у пакеце «applog». Ён працуе такім чынам.

PS: Увесь ВКТ ў цяперашні час перапрацаваныя і ў хуткім часе будзе выпушчаны з новымі магчымасцямі, але з іншай назвай. ;)

3
дададзена
На жаль для ўсіх рухаў на працягу доўгага часу. Неабходны час, каб знайсці бягучы як ІМХО лепшы. Пакеты на github.com/tideland/golib і дакументацыі ў godoc.org/?q=tideland%2Fgolib .
дададзена аўтар Mue, крыніца
на жаль, мёртвыя спасылкі
дададзена аўтар Friedrich Große, крыніца
Усе спасылкі мёртвыя ці не маюць нічога агульнага з лесанарыхтоўкамі.
дададзена аўтар neurosnap, крыніца
Вялікі дзякуй за вашу дапамогу!
дададзена аўтар pymd, крыніца

Uber-go/Zap: Fast, structured, leveled logging in Go

2
дададзена

stdlog fits exactly your requirements:

log := stdlog.GetFromFlags()
log.Info("Connecting to the server...")
log.Errorf("Connection failed: %q", err)
2
дададзена

Я працую з rlog ў дадзены момант і як іх падыход. Код выглядае добра, спрошчана і досыць дакументаваны.

Што мяне пераканалі:

  • no external dependencies
  • i can use rlog.Info() anywhere without passing around references
  • good usage of environment variables
  • arbitrary number of trace levels e.g. rlog.Trace(4, "foo")
0
дададзена

Я працую з rlog ў дадзены момант і як іх падыход. Код выглядае добра, спрошчана і досыць дакументаваны.

Што мяне пераканалі:

  • no external dependencies
  • i can use rlog.Info() anywhere without passing around references
  • good usage of environment variables
  • arbitrary number of trace levels e.g. rlog.Trace(4, "foo")
0
дададзена

https://github.com/hashicorp/logutils I found this to be very easy to use and you don't even need to change the method calls to log.Printf of the std library.

0
дададзена

https://github.com/hashicorp/logutils I found this to be very easy to use and you don't even need to change the method calls to log.Printf of the std library.

0
дададзена

Я дадаў падтрымку ўзроўню пратакалявання для убудаванага часопіса пакета Go. Вы можаце знайсці свой код тут:

https://github.com/gologme/log

У дадатак да дадання падтрымкі Info, папераджальнага і адладкі, карыстальнікі могуць таксама вызначаць свае ўласныя адвольныя ўзроўні вядзення часопіса. Лесанарыхтоўчыя ўзроўні ўключаюцца і выключаюцца ў індывідуальным парадку. Гэта азначае, што вы можаце ўключыць часопісы адладкі без таксама становіцца ўсё астатняе.

0
дададзена

Я дадаў падтрымку ўзроўню пратакалявання для убудаванага часопіса пакета Go. Вы можаце знайсці свой код тут:

https://github.com/gologme/log

У дадатак да дадання падтрымкі Info, папераджальнага і адладкі, карыстальнікі могуць таксама вызначаць свае ўласныя адвольныя ўзроўні вядзення часопіса. Лесанарыхтоўчыя ўзроўні ўключаюцца і выключаюцца ў індывідуальным парадку. Гэта азначае, што вы можаце ўключыць часопісы адладкі без таксама становіцца ўсё астатняе.

0
дададзена