64 lines
1.3 KiB
Go
64 lines
1.3 KiB
Go
//go:build !(windows || plan9 || wasip1 || js || ios)
|
|
// +build !windows,!plan9,!wasip1,!js,!ios
|
|
|
|
package logging
|
|
|
|
import (
|
|
"os"
|
|
|
|
"github.com/google/uuid"
|
|
"r00t2.io/sysutils/paths"
|
|
)
|
|
|
|
/*
|
|
AddSyslogLogger adds a SyslogLogger to a MultiLogger.
|
|
|
|
identifier is a string to use to identify the added SyslogLogger in MultiLogger.Loggers.
|
|
If empty, one will be automatically generated.
|
|
*/
|
|
func (m *MultiLogger) AddSyslogLogger(identifier string) (err error) {
|
|
|
|
var exists bool
|
|
var hasSyslog bool
|
|
var stat os.FileInfo
|
|
var devlogPath string = devlog
|
|
var prefix string
|
|
|
|
if identifier == "" {
|
|
identifier = uuid.New().String()
|
|
}
|
|
|
|
if _, exists = m.Loggers[identifier]; exists {
|
|
err = ErrExistingLogger
|
|
return
|
|
}
|
|
|
|
if hasSyslog, stat, err = paths.RealPathExistsStat(&devlogPath); hasSyslog && err != nil {
|
|
return
|
|
} else if !hasSyslog {
|
|
err = ErrNoSyslog
|
|
return
|
|
}
|
|
|
|
if stat.Mode().IsRegular() {
|
|
err = ErrInvalidDevLog
|
|
return
|
|
}
|
|
|
|
m.Loggers[identifier] = &SyslogLogger{
|
|
EnableDebug: m.EnableDebug,
|
|
Prefix: m.Prefix,
|
|
}
|
|
if err = m.Loggers[identifier].Setup(); err != nil {
|
|
return
|
|
}
|
|
|
|
if prefix, err = m.Loggers[identifier].GetPrefix(); err != nil {
|
|
return
|
|
}
|
|
|
|
m.Loggers[identifier].Debug("logger initialized of type %T with prefix %v", m.Loggers[identifier], prefix)
|
|
|
|
return
|
|
}
|