xs/logger/logger_linux.go

101 lines
1.6 KiB
Go

// +build linux
//
// Wrapper around UNIX syslog, so that it also may be wrapped
// with something else for Windows (Sadly, the stdlib log/syslog
// is frozen, and there is no Window implementation.)
package logger
import (
sl "log/syslog"
)
type Priority = sl.Priority
type Writer = sl.Writer
const (
// Severity.
// From /usr/include/sys/syslog.h.
// These are the same on Linux, BSD, and OS X.
LOG_EMERG Priority = iota
LOG_ALERT
LOG_CRIT
LOG_ERR
LOG_WARNING
LOG_NOTICE
LOG_INFO
LOG_DEBUG
)
const (
// Facility.
// From /usr/include/sys/syslog.h.
// These are the same up to LOG_FTP on Linux, BSD, and OS X.
LOG_KERN Priority = iota << 3
LOG_USER
LOG_MAIL
LOG_DAEMON
LOG_AUTH
LOG_SYSLOG
LOG_LPR
LOG_NEWS
LOG_UUCP
LOG_CRON
LOG_AUTHPRIV
LOG_FTP
_ // unused
_ // unused
_ // unused
_ // unused
LOG_LOCAL0
LOG_LOCAL1
LOG_LOCAL2
LOG_LOCAL3
LOG_LOCAL4
LOG_LOCAL5
LOG_LOCAL6
LOG_LOCAL7
)
var (
l *sl.Writer
)
func New(flags Priority, tag string) (w *Writer, e error) {
w, e = sl.New(sl.Priority(flags), tag)
l = w
return w, e
}
func Alert(s string) error {
return l.Alert(s)
}
func LogClose() error {
return l.Close()
}
func LogCrit(s string) error {
return l.Crit(s)
}
func LogDebug(s string) error {
return l.Debug(s)
}
func LogEmerg(s string) error {
return l.Emerg(s)
}
func LogErr(s string) error {
return l.Err(s)
}
func LogInfo(s string) error {
return l.Info(s)
}
func LogNotice(s string) error {
return l.Notice(s)
}
func LogWarning(s string) error {
return l.Warning(s)
}
func LogWrite(b []byte) (int, error) {
return l.Write(b)
}