91 lines
1.7 KiB
Go
91 lines
1.7 KiB
Go
package logging
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"log/syslog"
|
|
"os"
|
|
)
|
|
|
|
type Logger struct {
|
|
syslogWriter *syslog.Writer
|
|
debugMode bool
|
|
}
|
|
|
|
var defaultLogger *Logger
|
|
|
|
func init() {
|
|
defaultLogger = NewLogger()
|
|
}
|
|
|
|
func NewLogger() *Logger {
|
|
l := &Logger{
|
|
debugMode: os.Getenv("DEBUG") == "true",
|
|
}
|
|
|
|
// Try to connect to syslog
|
|
if writer, err := syslog.New(syslog.LOG_INFO|syslog.LOG_DAEMON, "nannyagentv2"); err == nil {
|
|
l.syslogWriter = writer
|
|
}
|
|
|
|
return l
|
|
}
|
|
|
|
func (l *Logger) Info(format string, args ...interface{}) {
|
|
msg := fmt.Sprintf(format, args...)
|
|
if l.syslogWriter != nil {
|
|
l.syslogWriter.Info(msg)
|
|
}
|
|
log.Printf("[INFO] %s", msg)
|
|
}
|
|
|
|
func (l *Logger) Debug(format string, args ...interface{}) {
|
|
if !l.debugMode {
|
|
return
|
|
}
|
|
msg := fmt.Sprintf(format, args...)
|
|
if l.syslogWriter != nil {
|
|
l.syslogWriter.Debug(msg)
|
|
}
|
|
log.Printf("[DEBUG] %s", msg)
|
|
}
|
|
|
|
func (l *Logger) Warning(format string, args ...interface{}) {
|
|
msg := fmt.Sprintf(format, args...)
|
|
if l.syslogWriter != nil {
|
|
l.syslogWriter.Warning(msg)
|
|
}
|
|
log.Printf("[WARNING] %s", msg)
|
|
}
|
|
|
|
func (l *Logger) Error(format string, args ...interface{}) {
|
|
msg := fmt.Sprintf(format, args...)
|
|
if l.syslogWriter != nil {
|
|
l.syslogWriter.Err(msg)
|
|
}
|
|
log.Printf("[ERROR] %s", msg)
|
|
}
|
|
|
|
func (l *Logger) Close() {
|
|
if l.syslogWriter != nil {
|
|
l.syslogWriter.Close()
|
|
}
|
|
}
|
|
|
|
// Global logging functions
|
|
func Info(format string, args ...interface{}) {
|
|
defaultLogger.Info(format, args...)
|
|
}
|
|
|
|
func Debug(format string, args ...interface{}) {
|
|
defaultLogger.Debug(format, args...)
|
|
}
|
|
|
|
func Warning(format string, args ...interface{}) {
|
|
defaultLogger.Warning(format, args...)
|
|
}
|
|
|
|
func Error(format string, args ...interface{}) {
|
|
defaultLogger.Error(format, args...)
|
|
}
|