
Usage of ./stackube-controller: --alsologtostderr log to standard error as well as files --cloudconfig string path to stackube config file (default "/etc/stackube.conf") --kubeconfig string path to kubernetes admin config file (default "/etc/kubernetes/admin.conf") --log-backtrace-at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log-dir string If non-empty, write log files in this directory --log-flush-frequency duration Maximum number of seconds between log flushes (default 5s) --logtostderr log to standard error instead of files (default true) --stderrthreshold severity logs at or above this threshold go to stderr (default 2) -v, --v Level log level for V logs --vmodule moduleSpec comma-separated list of pattern=N settings for file-filtered logging Change-Id: I2dfa762c3e076c7e41b49b4f27c3868bed03eba8 Signed-off-by: Pengfei Ni <feiskyer@gmail.com>
45 lines
1.1 KiB
Go
45 lines
1.1 KiB
Go
package util
|
|
|
|
import (
|
|
"flag"
|
|
"log"
|
|
"time"
|
|
|
|
"github.com/golang/glog"
|
|
"github.com/spf13/pflag"
|
|
"k8s.io/apimachinery/pkg/util/wait"
|
|
)
|
|
|
|
var logFlushFreq = pflag.Duration("log-flush-frequency", 5*time.Second, "Maximum number of seconds between log flushes")
|
|
|
|
func init() {
|
|
flag.Set("logtostderr", "true")
|
|
}
|
|
|
|
// GlogWriter serves as a bridge between the standard log package and the glog package.
|
|
type GlogWriter struct{}
|
|
|
|
// Write implements the io.Writer interface.
|
|
func (writer GlogWriter) Write(data []byte) (n int, err error) {
|
|
glog.Info(string(data))
|
|
return len(data), nil
|
|
}
|
|
|
|
// InitLogs initializes logs the way we want for kubernetes.
|
|
func InitLogs() {
|
|
log.SetOutput(GlogWriter{})
|
|
log.SetFlags(0)
|
|
// The default glog flush interval is 30 seconds, which is frighteningly long.
|
|
go wait.Until(glog.Flush, *logFlushFreq, wait.NeverStop)
|
|
}
|
|
|
|
// FlushLogs flushes logs immediately.
|
|
func FlushLogs() {
|
|
glog.Flush()
|
|
}
|
|
|
|
// NewLogger creates a new log.Logger which sends logs to glog.Info.
|
|
func NewLogger(prefix string) *log.Logger {
|
|
return log.New(GlogWriter{}, prefix, 0)
|
|
}
|