| // 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() |
| } |