1. refactor kubesphere dependency service client creation, we can disable dependency by config 2. dependencies can be configured by configuration file 3. refactor cmd package using cobra.Command, so we can use hypersphere to invoke command sepearately. Later we only need to build one image to contains all kubesphere core components. One command to rule them all! 4. live reloading configuration currently not implemented
114 lines
2.9 KiB
Go
114 lines
2.9 KiB
Go
// Copyright © 2016 Steve Francia <spf@spf13.com>.
|
|
//
|
|
// Use of this source code is governed by an MIT-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package jwalterweatherman
|
|
|
|
import (
|
|
"io"
|
|
"io/ioutil"
|
|
"log"
|
|
"os"
|
|
)
|
|
|
|
var (
|
|
TRACE *log.Logger
|
|
DEBUG *log.Logger
|
|
INFO *log.Logger
|
|
WARN *log.Logger
|
|
ERROR *log.Logger
|
|
CRITICAL *log.Logger
|
|
FATAL *log.Logger
|
|
|
|
LOG *log.Logger
|
|
FEEDBACK *Feedback
|
|
|
|
defaultNotepad *Notepad
|
|
)
|
|
|
|
func reloadDefaultNotepad() {
|
|
TRACE = defaultNotepad.TRACE
|
|
DEBUG = defaultNotepad.DEBUG
|
|
INFO = defaultNotepad.INFO
|
|
WARN = defaultNotepad.WARN
|
|
ERROR = defaultNotepad.ERROR
|
|
CRITICAL = defaultNotepad.CRITICAL
|
|
FATAL = defaultNotepad.FATAL
|
|
|
|
LOG = defaultNotepad.LOG
|
|
FEEDBACK = defaultNotepad.FEEDBACK
|
|
}
|
|
|
|
func init() {
|
|
defaultNotepad = NewNotepad(LevelError, LevelWarn, os.Stdout, ioutil.Discard, "", log.Ldate|log.Ltime)
|
|
reloadDefaultNotepad()
|
|
}
|
|
|
|
// SetLogThreshold set the log threshold for the default notepad. Trace by default.
|
|
func SetLogThreshold(threshold Threshold) {
|
|
defaultNotepad.SetLogThreshold(threshold)
|
|
reloadDefaultNotepad()
|
|
}
|
|
|
|
// SetLogOutput set the log output for the default notepad. Discarded by default.
|
|
func SetLogOutput(handle io.Writer) {
|
|
defaultNotepad.SetLogOutput(handle)
|
|
reloadDefaultNotepad()
|
|
}
|
|
|
|
// SetStdoutThreshold set the standard output threshold for the default notepad.
|
|
// Info by default.
|
|
func SetStdoutThreshold(threshold Threshold) {
|
|
defaultNotepad.SetStdoutThreshold(threshold)
|
|
reloadDefaultNotepad()
|
|
}
|
|
|
|
// SetPrefix set the prefix for the default logger. Empty by default.
|
|
func SetPrefix(prefix string) {
|
|
defaultNotepad.SetPrefix(prefix)
|
|
reloadDefaultNotepad()
|
|
}
|
|
|
|
// SetFlags set the flags for the default logger. "log.Ldate | log.Ltime" by default.
|
|
func SetFlags(flags int) {
|
|
defaultNotepad.SetFlags(flags)
|
|
reloadDefaultNotepad()
|
|
}
|
|
|
|
// Level returns the current global log threshold.
|
|
func LogThreshold() Threshold {
|
|
return defaultNotepad.logThreshold
|
|
}
|
|
|
|
// Level returns the current global output threshold.
|
|
func StdoutThreshold() Threshold {
|
|
return defaultNotepad.stdoutThreshold
|
|
}
|
|
|
|
// GetStdoutThreshold returns the defined Treshold for the log logger.
|
|
func GetLogThreshold() Threshold {
|
|
return defaultNotepad.GetLogThreshold()
|
|
}
|
|
|
|
// GetStdoutThreshold returns the Treshold for the stdout logger.
|
|
func GetStdoutThreshold() Threshold {
|
|
return defaultNotepad.GetStdoutThreshold()
|
|
}
|
|
|
|
// LogCountForLevel returns the number of log invocations for a given threshold.
|
|
func LogCountForLevel(l Threshold) uint64 {
|
|
return defaultNotepad.LogCountForLevel(l)
|
|
}
|
|
|
|
// LogCountForLevelsGreaterThanorEqualTo returns the number of log invocations
|
|
// greater than or equal to a given threshold.
|
|
func LogCountForLevelsGreaterThanorEqualTo(threshold Threshold) uint64 {
|
|
return defaultNotepad.LogCountForLevelsGreaterThanorEqualTo(threshold)
|
|
}
|
|
|
|
// ResetLogCounters resets the invocation counters for all levels.
|
|
func ResetLogCounters() {
|
|
defaultNotepad.ResetLogCounters()
|
|
}
|