libgocryptfs/cryptfs/log.go

62 lines
1.3 KiB
Go
Raw Normal View History

2015-09-03 18:57:28 +02:00
package cryptfs
2015-09-03 18:22:18 +02:00
import (
2015-12-13 20:10:52 +01:00
"encoding/json"
"fmt"
"log"
"os"
2015-09-03 18:22:18 +02:00
)
func JSONDump(obj interface{}) string {
b, err := json.MarshalIndent(obj, "", "\t")
if err != nil {
return err.Error()
} else {
return string(b)
}
}
2015-09-03 18:22:18 +02:00
// toggledLogger - a Logger than can be enabled and disabled
type toggledLogger struct {
// Enable or disable output
Enabled bool
// Panic after logging a message, useful in regression tests
PanicAfter bool
*log.Logger
}
func (l *toggledLogger) Printf(format string, v ...interface{}) {
if !l.Enabled {
return
}
l.Logger.Printf(format, v...)
if l.PanicAfter {
panic("PanicAfter: " + fmt.Sprintf(format, v...))
}
}
func (l *toggledLogger) Println(v ...interface{}) {
if !l.Enabled {
return
}
l.Logger.Println(v...)
if l.PanicAfter {
panic("PanicAfter: " + fmt.Sprintln(v...))
}
}
2015-11-09 22:33:42 +01:00
// As defined by http://elinux.org/Debugging_by_printing#Log_Levels
2015-11-09 22:33:42 +01:00
// Debug messages
var Debug *toggledLogger
2015-11-14 17:16:17 +01:00
2015-11-09 22:33:42 +01:00
// Informational message e.g. startup information
var Info *toggledLogger
2015-11-14 17:16:17 +01:00
2015-11-09 22:33:42 +01:00
// A warning, meaning nothing serious by itself but might indicate problems
var Warn *toggledLogger
func init() {
Debug = &toggledLogger{false, false, log.New(os.Stdout, "", 0)}
Info = &toggledLogger{true, false, log.New(os.Stdout, "", 0)}
Warn = &toggledLogger{true, false, log.New(os.Stderr, "", 0)}
}