mirror of
https://github.com/cwinfo/matterbridge.git
synced 2024-11-14 20:10:25 +00:00
133 lines
3.2 KiB
Go
133 lines
3.2 KiB
Go
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
package mlog
|
|
|
|
import (
|
|
"sync"
|
|
)
|
|
|
|
var (
|
|
globalLogger *Logger
|
|
muxGlobalLogger sync.RWMutex
|
|
)
|
|
|
|
func InitGlobalLogger(logger *Logger) {
|
|
muxGlobalLogger.Lock()
|
|
defer muxGlobalLogger.Unlock()
|
|
|
|
globalLogger = logger
|
|
}
|
|
|
|
func getGlobalLogger() *Logger {
|
|
muxGlobalLogger.RLock()
|
|
defer muxGlobalLogger.RUnlock()
|
|
|
|
return globalLogger
|
|
}
|
|
|
|
// IsLevelEnabled returns true only if at least one log target is
|
|
// configured to emit the specified log level. Use this check when
|
|
// gathering the log info may be expensive.
|
|
//
|
|
// Note, transformations and serializations done via fields are already
|
|
// lazily evaluated and don't require this check beforehand.
|
|
func IsLevelEnabled(level Level) bool {
|
|
logger := getGlobalLogger()
|
|
if logger == nil {
|
|
return defaultIsLevelEnabled(level)
|
|
}
|
|
return logger.IsLevelEnabled(level)
|
|
}
|
|
|
|
// Log emits the log record for any targets configured for the specified level.
|
|
func Log(level Level, msg string, fields ...Field) {
|
|
logger := getGlobalLogger()
|
|
if logger == nil {
|
|
defaultLog(level, msg, fields...)
|
|
return
|
|
}
|
|
logger.Log(level, msg, fields...)
|
|
}
|
|
|
|
// LogM emits the log record for any targets configured for the specified levels.
|
|
// Equivalent to calling `Log` once for each level.
|
|
func LogM(levels []Level, msg string, fields ...Field) {
|
|
logger := getGlobalLogger()
|
|
if logger == nil {
|
|
defaultCustomMultiLog(levels, msg, fields...)
|
|
return
|
|
}
|
|
logger.LogM(levels, msg, fields...)
|
|
}
|
|
|
|
// Convenience method equivalent to calling `Log` with the `Trace` level.
|
|
func Trace(msg string, fields ...Field) {
|
|
logger := getGlobalLogger()
|
|
if logger == nil {
|
|
defaultLog(LvlTrace, msg, fields...)
|
|
return
|
|
}
|
|
logger.Trace(msg, fields...)
|
|
}
|
|
|
|
// Convenience method equivalent to calling `Log` with the `Debug` level.
|
|
func Debug(msg string, fields ...Field) {
|
|
logger := getGlobalLogger()
|
|
if logger == nil {
|
|
defaultLog(LvlDebug, msg, fields...)
|
|
return
|
|
}
|
|
logger.Debug(msg, fields...)
|
|
}
|
|
|
|
// Convenience method equivalent to calling `Log` with the `Info` level.
|
|
func Info(msg string, fields ...Field) {
|
|
logger := getGlobalLogger()
|
|
if logger == nil {
|
|
defaultLog(LvlInfo, msg, fields...)
|
|
return
|
|
}
|
|
logger.Info(msg, fields...)
|
|
}
|
|
|
|
// Convenience method equivalent to calling `Log` with the `Warn` level.
|
|
func Warn(msg string, fields ...Field) {
|
|
logger := getGlobalLogger()
|
|
if logger == nil {
|
|
defaultLog(LvlWarn, msg, fields...)
|
|
return
|
|
}
|
|
logger.Warn(msg, fields...)
|
|
}
|
|
|
|
// Convenience method equivalent to calling `Log` with the `Error` level.
|
|
func Error(msg string, fields ...Field) {
|
|
logger := getGlobalLogger()
|
|
if logger == nil {
|
|
defaultLog(LvlError, msg, fields...)
|
|
return
|
|
}
|
|
logger.Error(msg, fields...)
|
|
}
|
|
|
|
// Convenience method equivalent to calling `Log` with the `Critical` level.
|
|
// DEPRECATED: Either use Error or Fatal.
|
|
func Critical(msg string, fields ...Field) {
|
|
logger := getGlobalLogger()
|
|
if logger == nil {
|
|
defaultLog(LvlCritical, msg, fields...)
|
|
return
|
|
}
|
|
logger.Critical(msg, fields...)
|
|
}
|
|
|
|
func Fatal(msg string, fields ...Field) {
|
|
logger := getGlobalLogger()
|
|
if logger == nil {
|
|
defaultLog(LvlFatal, msg, fields...)
|
|
return
|
|
}
|
|
logger.Fatal(msg, fields...)
|
|
}
|