package logging import ( "fmt" "log" "github.com/coreos/go-systemd/journal" ) func (l *SystemDLogger) Setup() { // NOOP _ = "" } func (l *SystemDLogger) Shutdown() { // NOOP _ = "" } func (l *SystemDLogger) doDebug(d bool) { l.EnableDebug = d } func (l *SystemDLogger) setPrefix(prefix string) { l.Prefix = prefix } func (l *SystemDLogger) GetPrefix() string { return l.Prefix } func (l *SystemDLogger) Alert(s string, v ...interface{}) (err error) { var msg string if v != nil { msg = fmt.Sprintf(s, v...) } else { msg = s } l.renderWrite(msg, journal.PriAlert) return } func (l *SystemDLogger) Crit(s string, v ...interface{}) (err error) { var msg string if v != nil { msg = fmt.Sprintf(s, v...) } else { msg = s } l.renderWrite(msg, journal.PriCrit) return } func (l *SystemDLogger) Debug(s string, v ...interface{}) (err error) { if !l.EnableDebug { return } var msg string if v != nil { msg = fmt.Sprintf(s, v...) } else { msg = s } l.renderWrite(msg, journal.PriDebug) return } func (l *SystemDLogger) Emerg(s string, v ...interface{}) (err error) { var msg string if v != nil { msg = fmt.Sprintf(s, v...) } else { msg = s } l.renderWrite(msg, journal.PriEmerg) return } func (l *SystemDLogger) Err(s string, v ...interface{}) (err error) { var msg string if v != nil { msg = fmt.Sprintf(s, v...) } else { msg = s } l.renderWrite(msg, journal.PriErr) return } func (l *SystemDLogger) Info(s string, v ...interface{}) (err error) { var msg string if v != nil { msg = fmt.Sprintf(s, v...) } else { msg = s } l.renderWrite(msg, journal.PriInfo) return } func (l *SystemDLogger) Notice(s string, v ...interface{}) (err error) { var msg string if v != nil { msg = fmt.Sprintf(s, v...) } else { msg = s } l.renderWrite(msg, journal.PriNotice) return } func (l *SystemDLogger) Warning(s string, v ...interface{}) (err error) { var msg string if v != nil { msg = fmt.Sprintf(s, v...) } else { msg = s } l.renderWrite(msg, journal.PriWarning) return } func (l *SystemDLogger) renderWrite(msg string, prio journal.Priority) { // TODO: implement code line, etc. // https://www.freedesktop.org/software/systemd/man/systemd.journal-fields.html // CODE_FILE=, CODE_LINE=, CODE_FUNC= var err error vars := map[string]string{ "DOCUMENTATION": "https://git.r00t2.io/Go_GoUtils/", "SYSLOG_IDENTIFIER": l.Prefix, "SYSLOG_FACILITY": "1", // USER } if err = journal.Send(msg, prio, vars); err != nil { log.Panicln("could not send to Journald") } return }