diff options
| author | Jakob Unterwurzacher | 2016-06-15 23:30:44 +0200 | 
|---|---|---|
| committer | Jakob Unterwurzacher | 2016-06-15 23:30:44 +0200 | 
| commit | 6c3f97399a01a2d8480b39978209099335efbf7d (patch) | |
| tree | 097b34a37b5f62ebcfd7294d096b16f436c180f9 /internal/tlog | |
| parent | 09e88f31d1b4308bf82c7f4eb0dd83855ad67ffc (diff) | |
Rename internal "toggledlog" package to "tlog"
tlog is used heavily everywhere and deserves a shorter name.
Renamed using sed magic, without any manual rework:
   find * -type f -exec sed -i 's/toggledlog/tlog/g' {} +
Diffstat (limited to 'internal/tlog')
| -rw-r--r-- | internal/tlog/log.go | 103 | ||||
| -rw-r--r-- | internal/tlog/log_go1.4.go | 12 | ||||
| -rw-r--r-- | internal/tlog/log_go1.5.go | 17 | 
3 files changed, 132 insertions, 0 deletions
| diff --git a/internal/tlog/log.go b/internal/tlog/log.go new file mode 100644 index 0000000..254a207 --- /dev/null +++ b/internal/tlog/log.go @@ -0,0 +1,103 @@ +package tlog + +import ( +	"encoding/json" +	"fmt" +	"log" +	"os" + +	"golang.org/x/crypto/ssh/terminal" +) + +const ( +	ProgramName = "gocryptfs" +	wpanicMsg   = "-wpanic turns this warning into a panic: " +) + +// Escape sequences for terminal colors. These will be empty strings if stdout +// is not a terminal. +var ColorReset, ColorGrey, ColorRed, ColorGreen, ColorYellow string + +func JSONDump(obj interface{}) string { +	b, err := json.MarshalIndent(obj, "", "\t") +	if err != nil { +		return err.Error() +	} else { +		return string(b) +	} +} + +// 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 +	Wpanic bool +	// Private prefix and postfix are used for coloring +	prefix  string +	postfix string + +	*log.Logger +} + +func (l *toggledLogger) Printf(format string, v ...interface{}) { +	if !l.Enabled { +		return +	} +	l.Logger.Printf(l.prefix + fmt.Sprintf(format, v...) + l.postfix) +	if l.Wpanic { +		l.Logger.Panic(wpanicMsg + fmt.Sprintf(format, v...)) +	} +} +func (l *toggledLogger) Println(v ...interface{}) { +	if !l.Enabled { +		return +	} +	l.Logger.Println(l.prefix + fmt.Sprint(v...) + l.postfix) +	if l.Wpanic { +		l.Logger.Panic(wpanicMsg + fmt.Sprint(v...)) +	} +} + +// Debug messages +// Can be enabled by passing "-d" +var Debug *toggledLogger + +// Informational message +// Can be disabled by passing "-q" +var Info *toggledLogger + +// A warning, meaning nothing serious by itself but might indicate problems. +// Passing "-wpanic" will make this function panic after printing the message. +var Warn *toggledLogger + +// Fatal error, we are about to exit +var Fatal *toggledLogger + +func init() { +	if terminal.IsTerminal(int(os.Stdout.Fd())) { +		ColorReset = "\033[0m" +		ColorGrey = "\033[2m" +		ColorRed = "\033[31m" +		ColorGreen = "\033[32m" +		ColorYellow = "\033[33m" +	} + +	Debug = &toggledLogger{ +		Logger: log.New(os.Stdout, "", 0), +	} +	Info = &toggledLogger{ +		Enabled: true, +		Logger:  log.New(os.Stdout, "", 0), +	} +	Warn = &toggledLogger{ +		Enabled: true, +		Logger:  log.New(os.Stderr, "", 0), +	} +	Fatal = &toggledLogger{ +		Enabled: true, +		Logger:  log.New(os.Stderr, "", 0), +		prefix:  ColorRed, +		postfix: ColorReset, +	} +} diff --git a/internal/tlog/log_go1.4.go b/internal/tlog/log_go1.4.go new file mode 100644 index 0000000..fae0e9b --- /dev/null +++ b/internal/tlog/log_go1.4.go @@ -0,0 +1,12 @@ +// +build !go1.5 +// = go 1.4 or lower + +package tlog + +import ( +	"log/syslog" +) + +func (l *toggledLogger) SwitchToSyslog(p syslog.Priority) { +	Debug.Printf("Cannot switch to syslog - need Go 1.5 or higher") +} diff --git a/internal/tlog/log_go1.5.go b/internal/tlog/log_go1.5.go new file mode 100644 index 0000000..755f623 --- /dev/null +++ b/internal/tlog/log_go1.5.go @@ -0,0 +1,17 @@ +// +build go1.5 +// = go 1.5 or higher + +package tlog + +import ( +	"log/syslog" +) + +func (l *toggledLogger) SwitchToSyslog(p syslog.Priority) { +	w, err := syslog.New(p, ProgramName) +	if err != nil { +		Warn.Printf("Cannot switch 0x%02x to syslog: %v", p, err) +	} else { +		l.SetOutput(w) +	} +} | 
