Skip to content

Commit

Permalink
Added TRACE level logging.
Browse files Browse the repository at this point in the history
  • Loading branch information
drampull authored and Loren Osborn committed Oct 18, 2018
1 parent eb0072e commit 04bda4e
Show file tree
Hide file tree
Showing 10 changed files with 81 additions and 3 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
logrus
vendor
18 changes: 18 additions & 0 deletions entry.go
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,12 @@ func (entry *Entry) Debug(args ...interface{}) {
}
}

func (entry *Entry) Trace(args ...interface{}) {
if entry.Logger.IsLevelEnabled(TraceLevel) {
entry.log(TraceLevel, fmt.Sprint(args...))
}
}

func (entry *Entry) Print(args ...interface{}) {
entry.Info(args...)
}
Expand Down Expand Up @@ -216,6 +222,12 @@ func (entry *Entry) Debugf(format string, args ...interface{}) {
}
}

func (entry *Entry) Tracef(format string, args ...interface{}) {
if entry.Logger.IsLevelEnabled(TraceLevel) {
entry.Trace(fmt.Sprintf(format, args...))
}
}

func (entry *Entry) Infof(format string, args ...interface{}) {
if entry.Logger.IsLevelEnabled(InfoLevel) {
entry.Info(fmt.Sprintf(format, args...))
Expand Down Expand Up @@ -257,6 +269,12 @@ func (entry *Entry) Panicf(format string, args ...interface{}) {

// Entry Println family functions

func (entry *Entry) Traceln(args ...interface{}) {
if entry.Logger.IsLevelEnabled(TraceLevel) {
entry.Trace(entry.sprintlnn(args...))
}
}

func (entry *Entry) Debugln(args ...interface{}) {
if entry.Logger.IsLevelEnabled(DebugLevel) {
entry.Debug(entry.sprintlnn(args...))
Expand Down
8 changes: 7 additions & 1 deletion example_basic_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ func Example_basic() {
log.Formatter = new(logrus.TextFormatter) //default
log.Formatter.(*logrus.TextFormatter).DisableColors = true // remove colors
log.Formatter.(*logrus.TextFormatter).DisableTimestamp = true // remove timestamp from test output
log.Level = logrus.DebugLevel
log.Level = logrus.TraceLevel
log.Out = os.Stdout

// file, err := os.OpenFile("logrus.log", os.O_CREATE|os.O_WRONLY, 0666)
Expand All @@ -37,6 +37,11 @@ func Example_basic() {
}
}()

log.WithFields(logrus.Fields{
"animal": "walrus",
"number": 0,
}).Trace("Went to the beach")

log.WithFields(logrus.Fields{
"animal": "walrus",
"number": 8,
Expand All @@ -62,6 +67,7 @@ func Example_basic() {
}).Panic("It's over 9000!")

// Output:
// level=trace msg="Went to the beach" animal=walrus number=0
// level=debug msg="Started observing beach" animal=walrus number=8
// level=info msg="A group of walrus emerges from the ocean" animal=walrus size=10
// level=warning msg="The group's number increased tremendously!" number=122 omg=true
Expand Down
15 changes: 15 additions & 0 deletions exported.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,11 @@ func WithTime(t time.Time) *Entry {
return std.WithTime(t)
}

// Trace logs a message at level Trace on the standard logger.
func Trace(args ...interface{}) {
std.Trace(args...)
}

// Debug logs a message at level Debug on the standard logger.
func Debug(args ...interface{}) {
std.Debug(args...)
Expand Down Expand Up @@ -117,6 +122,11 @@ func Fatal(args ...interface{}) {
std.Fatal(args...)
}

// Tracef logs a message at level Debug on the standard logger.
func Tracef(format string, args ...interface{}) {
std.Tracef(format, args...)
}

// Debugf logs a message at level Debug on the standard logger.
func Debugf(format string, args ...interface{}) {
std.Debugf(format, args...)
Expand Down Expand Up @@ -157,6 +167,11 @@ func Fatalf(format string, args ...interface{}) {
std.Fatalf(format, args...)
}

// Traceln logs a message at level Debug on the standard logger.
func Traceln(args ...interface{}) {
std.Traceln(args...)
}

// Debugln logs a message at level Debug on the standard logger.
func Debugln(args ...interface{}) {
std.Debugln(args...)
Expand Down
2 changes: 2 additions & 0 deletions hook_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ func (hook *TestHook) Fire(entry *Entry) error {

func (hook *TestHook) Levels() []Level {
return []Level{
TraceLevel,
DebugLevel,
InfoLevel,
WarnLevel,
Expand Down Expand Up @@ -53,6 +54,7 @@ func (hook *ModifyHook) Fire(entry *Entry) error {

func (hook *ModifyHook) Levels() []Level {
return []Level{
TraceLevel,
DebugLevel,
InfoLevel,
WarnLevel,
Expand Down
2 changes: 1 addition & 1 deletion hooks/syslog/syslog.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ func (hook *SyslogHook) Fire(entry *logrus.Entry) error {
return hook.Writer.Warning(line)
case logrus.InfoLevel:
return hook.Writer.Info(line)
case logrus.DebugLevel:
case logrus.DebugLevel, logrus.TraceLevel:
return hook.Writer.Debug(line)
default:
return nil
Expand Down
24 changes: 24 additions & 0 deletions logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,14 @@ func (logger *Logger) WithTime(t time.Time) *Entry {
return entry.WithTime(t)
}

func (logger *Logger) Tracef(format string, args ...interface{}) {
if logger.IsLevelEnabled(TraceLevel) {
entry := logger.newEntry()
entry.Tracef(format, args...)
logger.releaseEntry(entry)
}
}

func (logger *Logger) Debugf(format string, args ...interface{}) {
if logger.IsLevelEnabled(DebugLevel) {
entry := logger.newEntry()
Expand Down Expand Up @@ -189,6 +197,14 @@ func (logger *Logger) Panicf(format string, args ...interface{}) {
}
}

func (logger *Logger) Trace(args ...interface{}) {
if logger.IsLevelEnabled(TraceLevel) {
entry := logger.newEntry()
entry.Trace(args...)
logger.releaseEntry(entry)
}
}

func (logger *Logger) Debug(args ...interface{}) {
if logger.IsLevelEnabled(DebugLevel) {
entry := logger.newEntry()
Expand Down Expand Up @@ -252,6 +268,14 @@ func (logger *Logger) Panic(args ...interface{}) {
}
}

func (logger *Logger) Traceln(args ...interface{}) {
if logger.IsLevelEnabled(TraceLevel) {
entry := logger.newEntry()
entry.Traceln(args...)
logger.releaseEntry(entry)
}
}

func (logger *Logger) Debugln(args ...interface{}) {
if logger.IsLevelEnabled(DebugLevel) {
entry := logger.newEntry()
Expand Down
10 changes: 10 additions & 0 deletions logrus.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ type Level uint32
// Convert the Level to a string. E.g. PanicLevel becomes "panic".
func (level Level) String() string {
switch level {
case TraceLevel:
return "trace"
case DebugLevel:
return "debug"
case InfoLevel:
Expand Down Expand Up @@ -47,6 +49,8 @@ func ParseLevel(lvl string) (Level, error) {
return InfoLevel, nil
case "debug":
return DebugLevel, nil
case "trace":
return TraceLevel, nil
}

var l Level
Expand All @@ -61,6 +65,7 @@ var AllLevels = []Level{
WarnLevel,
InfoLevel,
DebugLevel,
TraceLevel,
}

// These are the different logging levels. You can set the logging level to log
Expand All @@ -82,6 +87,8 @@ const (
InfoLevel
// DebugLevel level. Usually only enabled when debugging. Very verbose logging.
DebugLevel
// TraceLevel level. Usually only enabled when debugging. Very verbose logging. Usually reserved for message traces
TraceLevel
)

// Won't compile if StdLogger can't be realized by a log.Logger
Expand Down Expand Up @@ -114,6 +121,7 @@ type FieldLogger interface {
WithFields(fields Fields) *Entry
WithError(err error) *Entry

Tracef(format string, args ...interface{})
Debugf(format string, args ...interface{})
Infof(format string, args ...interface{})
Printf(format string, args ...interface{})
Expand All @@ -123,6 +131,7 @@ type FieldLogger interface {
Fatalf(format string, args ...interface{})
Panicf(format string, args ...interface{})

Trace(args ...interface{})
Debug(args ...interface{})
Info(args ...interface{})
Print(args ...interface{})
Expand All @@ -132,6 +141,7 @@ type FieldLogger interface {
Fatal(args ...interface{})
Panic(args ...interface{})

Traceln(args ...interface{})
Debugln(args ...interface{})
Infoln(args ...interface{})
Println(args ...interface{})
Expand Down
2 changes: 1 addition & 1 deletion text_formatter.go
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ func (f *TextFormatter) Format(entry *Entry) ([]byte, error) {
func (f *TextFormatter) printColored(b *bytes.Buffer, entry *Entry, keys []string, timestampFormat string) {
var levelColor int
switch entry.Level {
case DebugLevel:
case DebugLevel, TraceLevel:
levelColor = gray
case WarnLevel:
levelColor = yellow
Expand Down
2 changes: 2 additions & 0 deletions writer.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ func (entry *Entry) WriterLevel(level Level) *io.PipeWriter {
var printFunc func(args ...interface{})

switch level {
case TraceLevel:
printFunc = entry.Trace
case DebugLevel:
printFunc = entry.Debug
case InfoLevel:
Expand Down

0 comments on commit 04bda4e

Please sign in to comment.