//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 }