do bitmask better, add (COMPLETELY 100% EXPERIMENTAL NOT DONE YET) eventlog support to logger
This commit is contained in:
181
logging/funcs_sysd_linux.go
Normal file
181
logging/funcs_sysd_linux.go
Normal file
@@ -0,0 +1,181 @@
|
||||
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() (prefix string) {
|
||||
|
||||
prefix = l.Prefix
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user