I'm using the github.com/golang/glog
, and want to change the flag stderrthreshold
or V-leveled logging at runtime, that is without re-compile the binary and re-run it. I had searched some resource, but all the answers are changes at compile time. Is there anyway to change it at runtime cause I don't want to stop my service?
Asked
Active
Viewed 3,044 times
2

Martin Tournoij
- 26,737
- 24
- 105
- 146

hsiaoairplane
- 511
- 4
- 15
-
I think I do the right tagging. https://github.com/golang/glog – hsiaoairplane Apr 17 '18 at 02:24
-
you can provide `stderrthreshold` and `--v` by flag, if that what you are asking! – Abdullah Al Maruf - Tuhin Apr 17 '18 at 04:47
-
@MarufTuhin I think it's a compile time solution. – hsiaoairplane Apr 17 '18 at 06:28
1 Answers
2
glog package reads configuration from flags. You can modify the flags at runtime from your code to change glog's behaviour.
package main
import (
"flag"
"fmt"
"github.com/golang/glog"
)
func main() {
// glog needs flag.Parse() call
flag.Parse()
glog.Info("default level")
glog.V(3).Info("Level 3 log")
if glog.V(3) {
fmt.Println("Changing log level to 5")
flag.Lookup("v").Value.Set("5")
}
glog.V(4).Info("Level 4 log")
glog.V(5).Info("Level 5 log")
}
Results in
➜ ./main --alsologtostderr -v 2
I0223 23:42:26.661984 4587 main.go:12] default level
➜ ./main --alsologtostderr -v 3
I0223 23:42:28.209673 4600 main.go:12] default level
I0223 23:42:28.210174 4600 main.go:13] Level 3 log
Changing log level to 5
I0223 23:42:28.210210 4600 main.go:18] Level 4 log
I0223 23:42:28.210230 4600 main.go:20] Level 5 log
➜ ./main --alsologtostderr -v 4
I0223 23:42:30.927222 4614 main.go:12] default level
I0223 23:42:30.928018 4614 main.go:13] Level 3 log
Changing log level to 5
I0223 23:42:30.928072 4614 main.go:18] Level 4 log
I0223 23:42:30.928088 4614 main.go:20] Level 5 log

Ibrahim
- 287
- 1
- 3
- 13