surrealpatch/log/log.go

328 lines
7 KiB
Go
Raw Normal View History

2016-04-07 18:38:24 +00:00
// Copyright © 2016 Abcum Ltd
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package log
import (
2018-05-02 01:31:31 +00:00
"fmt"
2017-02-22 01:40:24 +00:00
"io/ioutil"
2019-11-21 00:44:44 +00:00
"os"
"time"
2017-02-22 01:40:24 +00:00
2018-04-06 08:47:44 +00:00
"github.com/sirupsen/logrus"
2016-04-07 18:38:24 +00:00
)
2017-02-10 20:31:41 +00:00
const (
PanicLevel = logrus.PanicLevel
FatalLevel = logrus.FatalLevel
ErrorLevel = logrus.ErrorLevel
WarnLevel = logrus.WarnLevel
InfoLevel = logrus.InfoLevel
DebugLevel = logrus.DebugLevel
2019-01-14 10:37:15 +00:00
TraceLevel = logrus.TraceLevel
2017-02-10 20:31:41 +00:00
)
2018-05-02 01:31:31 +00:00
var (
PanicLevels = []logrus.Level{
PanicLevel,
}
FatalLevels = []logrus.Level{
PanicLevel,
FatalLevel,
}
ErrorLevels = []logrus.Level{
PanicLevel,
FatalLevel,
ErrorLevel,
}
WarnLevels = []logrus.Level{
PanicLevel,
FatalLevel,
ErrorLevel,
WarnLevel,
}
InfoLevels = []logrus.Level{
PanicLevel,
FatalLevel,
ErrorLevel,
WarnLevel,
InfoLevel,
}
DebugLevels = []logrus.Level{
PanicLevel,
FatalLevel,
ErrorLevel,
WarnLevel,
InfoLevel,
DebugLevel,
}
2019-01-14 10:37:15 +00:00
TraceLevels = []logrus.Level{
PanicLevel,
FatalLevel,
ErrorLevel,
WarnLevel,
InfoLevel,
DebugLevel,
TraceLevel,
}
2018-05-02 01:31:31 +00:00
)
2016-04-07 18:38:24 +00:00
var log *Logger
// Logger ...
type Logger struct {
*logrus.Logger
}
func init() {
2018-05-02 01:31:31 +00:00
log = &Logger{
2019-11-29 23:43:29 +00:00
logrus.New(),
2018-05-02 01:31:31 +00:00
}
2016-04-07 18:38:24 +00:00
}
2016-04-08 14:16:16 +00:00
// Instance returns the underlying logger instance
2016-04-07 18:38:24 +00:00
func Instance() *logrus.Logger {
return log.Logger
}
2019-11-29 23:43:29 +00:00
// Hook adds a logging hook to the logger instance
func Hook(hook logrus.Hook) {
log.AddHook(hook)
}
// IsPanic returns whether panic level logs are enabled
func IsPanic() bool {
return log.IsLevelEnabled(PanicLevel)
}
2019-11-29 23:43:29 +00:00
// IsFatal returns whether fatal level logs are enabled
func IsFatal() bool {
return log.IsLevelEnabled(FatalLevel)
}
2019-11-29 23:43:29 +00:00
// IsError returns whether error level logs are enabled
func IsError() bool {
return log.IsLevelEnabled(ErrorLevel)
}
2019-11-29 23:43:29 +00:00
// IsWarn returns whether warning level logs are enabled
func IsWarn() bool {
return log.IsLevelEnabled(WarnLevel)
}
2019-11-29 23:43:29 +00:00
// IsInfo returns whether info level logs are enabled
func IsInfo() bool {
return log.IsLevelEnabled(InfoLevel)
}
2019-11-29 23:43:29 +00:00
// IsDebug returns whether debug level logs are enabled
func IsDebug() bool {
return log.IsLevelEnabled(DebugLevel)
}
2019-11-29 23:43:29 +00:00
// IsTrace returns whether trace level logs are enabled
func IsTrace() bool {
return log.IsLevelEnabled(TraceLevel)
}
2019-11-21 00:44:44 +00:00
// SetLevel sets the logging level of the logger instance.
func SetLevel(v string) {
switch v {
case "trace":
log.Logger.SetLevel(TraceLevel)
case "debug":
log.Logger.SetLevel(DebugLevel)
case "info":
log.Logger.SetLevel(InfoLevel)
case "warn":
log.Logger.SetLevel(WarnLevel)
case "error":
log.Logger.SetLevel(ErrorLevel)
case "fatal":
log.Logger.SetLevel(FatalLevel)
case "panic":
log.Logger.SetLevel(PanicLevel)
}
}
// SetOutput sets the logging output of the logger instance.
func SetOutput(v string) {
switch v {
case "none":
log.Logger.SetOutput(ioutil.Discard)
case "stdout":
log.Logger.SetOutput(os.Stdout)
case "stderr":
log.Logger.SetOutput(os.Stderr)
2019-11-29 23:43:29 +00:00
case "stackdriver":
log.Logger.SetOutput(ioutil.Discard)
log.Logger.AddHook(NewStackDriver())
2019-11-21 00:44:44 +00:00
}
}
// SetFormat sets the logging format of the logger instance.
func SetFormat(v string) {
switch v {
case "json":
log.Logger.SetFormatter(&JSONFormatter{
IgnoreFields: []string{
"ctx",
"span",
"trace",
"fibre",
"prefix",
2019-11-21 00:44:44 +00:00
},
TimestampFormat: time.RFC3339,
})
case "text":
log.Logger.SetFormatter(&TextFormatter{
IgnoreFields: []string{
"ctx",
"vars",
"span",
"trace",
"fibre",
"prefix",
2019-11-21 00:44:44 +00:00
},
TimestampFormat: time.RFC3339,
})
}
}
2018-05-02 01:31:31 +00:00
func Display(v ...interface{}) {
if isTerminal {
fmt.Print(v...)
}
2016-04-08 14:16:16 +00:00
}
// Debug logs a message at level Debug on the standard logger.
2016-04-07 18:38:24 +00:00
func Debug(v ...interface{}) {
log.Debug(v...)
}
2016-04-08 14:16:16 +00:00
// Debugf logs a message at level Debug on the standard logger.
2016-04-07 18:38:24 +00:00
func Debugf(format string, v ...interface{}) {
log.Debugf(format, v...)
}
2016-04-08 14:16:16 +00:00
// Debugln logs a message at level Debug on the standard logger.
2016-04-07 18:38:24 +00:00
func Debugln(v ...interface{}) {
log.Debugln(v...)
}
2016-04-08 14:16:16 +00:00
// Error loggs a message at level Error on the standard logger.
2016-04-07 18:38:24 +00:00
func Error(v ...interface{}) {
log.Error(v...)
}
2016-04-08 14:16:16 +00:00
// Errorf loggs a message at level Error on the standard logger.
2016-04-07 18:38:24 +00:00
func Errorf(format string, v ...interface{}) {
log.Errorf(format, v...)
}
2016-04-08 14:16:16 +00:00
// Errorln loggs a message at level Error on the standard logger.
2016-04-07 18:38:24 +00:00
func Errorln(v ...interface{}) {
log.Errorln(v...)
}
2016-04-08 14:16:16 +00:00
// Fatal loggs a message at level Fatal on the standard logger.
2016-04-07 18:38:24 +00:00
func Fatal(v ...interface{}) {
log.Fatal(v...)
}
2016-04-08 14:16:16 +00:00
// Fatalf loggs a message at level Fatal on the standard logger.
2016-04-07 18:38:24 +00:00
func Fatalf(format string, v ...interface{}) {
log.Fatalf(format, v...)
}
2016-04-08 14:16:16 +00:00
// Fatalln loggs a message at level Fatal on the standard logger.
2016-04-07 18:38:24 +00:00
func Fatalln(v ...interface{}) {
log.Fatalln(v...)
}
2016-04-08 14:16:16 +00:00
// Info loggs a message at level Info on the standard logger.
2016-04-07 18:38:24 +00:00
func Info(v ...interface{}) {
log.Info(v...)
}
2016-04-08 14:16:16 +00:00
// Infof loggs a message at level Info on the standard logger.
2016-04-07 18:38:24 +00:00
func Infof(format string, v ...interface{}) {
log.Infof(format, v...)
}
2016-04-08 14:16:16 +00:00
// Infoln loggs a message at level Info on the standard logger.
2016-04-07 18:38:24 +00:00
func Infoln(v ...interface{}) {
log.Infoln(v...)
}
2016-04-08 14:16:16 +00:00
// Panic loggs a message at level Panic on the standard logger.
2016-04-07 18:38:24 +00:00
func Panic(v ...interface{}) {
log.Panic(v...)
}
2016-04-08 14:16:16 +00:00
// Panicf loggs a message at level Panic on the standard logger.
2016-04-07 18:38:24 +00:00
func Panicf(format string, v ...interface{}) {
log.Panicf(format, v...)
}
2016-04-08 14:16:16 +00:00
// Panicln loggs a message at level Panic on the standard logger.
2016-04-07 18:38:24 +00:00
func Panicln(v ...interface{}) {
log.Panicln(v...)
}
2016-04-08 14:16:16 +00:00
// Print loggs a message at level Print on the standard logger.
2016-04-07 18:38:24 +00:00
func Print(v ...interface{}) {
log.Print(v...)
}
2016-04-08 14:16:16 +00:00
// Printf loggs a message at level Print on the standard logger.
2016-04-07 18:38:24 +00:00
func Printf(format string, v ...interface{}) {
log.Printf(format, v...)
}
2016-04-08 14:16:16 +00:00
// Println loggs a message at level Print on the standard logger.
2016-04-07 18:38:24 +00:00
func Println(v ...interface{}) {
log.Println(v...)
}
2016-04-08 14:16:16 +00:00
// Warn loggs a message at level Warn on the standard logger.
2016-04-07 18:38:24 +00:00
func Warn(v ...interface{}) {
log.Warn(v...)
}
2016-04-08 14:16:16 +00:00
// Warnf loggs a message at level Warn on the standard logger.
2016-04-07 18:38:24 +00:00
func Warnf(format string, v ...interface{}) {
log.Warnf(format, v...)
}
2016-04-08 14:16:16 +00:00
// Warnln loggs a message at level Warn on the standard logger.
2016-04-07 18:38:24 +00:00
func Warnln(v ...interface{}) {
log.Warnln(v...)
}
2016-07-04 10:33:59 +00:00
// WithPrefix prepares a log entry with a prefix.
func WithPrefix(value interface{}) *logrus.Entry {
return log.WithField("prefix", value)
}
2016-04-08 14:16:16 +00:00
// WithField prepares a log entry with a single data field.
2016-04-07 18:38:24 +00:00
func WithField(key string, value interface{}) *logrus.Entry {
return log.WithField(key, value)
}
2016-04-08 14:16:16 +00:00
// WithFields prepares a log entry with multiple data fields.
2016-04-07 18:38:24 +00:00
func WithFields(fields map[string]interface{}) *logrus.Entry {
return log.WithFields(fields)
}