filebrowser/http/syslog_writer.go
2023-12-24 11:14:46 +08:00

51 lines
918 B
Go

package http
import (
"log"
"log/syslog"
)
type SyslogWriter struct {
Type string
Host string
Writer *syslog.Writer
}
func MakeSyslogWriter(type_ string, host string) *SyslogWriter {
return &SyslogWriter{
Type: type_,
Host: host,
Writer: nil,
}
}
func (w *SyslogWriter) Write(msg string) {
if w.Writer == nil {
w.Writer = syslogConnect(w.Type, w.Host)
}
if w.Writer != nil {
err := w.Writer.Emerg(msg)
if err != nil {
log.Println("ERROR: fail to write syslog")
}
}
}
func syslogConnect(type_ string, host string) *syslog.Writer {
writer, err := syslog.Dial(type_, host, syslog.LOG_EMERG|syslog.LOG_KERN, "filebrowser")
if err != nil {
log.Printf("ERROR: fail to connect to the syslog-%s server: %s", type_, host)
log.Println(err)
return nil
} else {
return writer
}
}
func (w *SyslogWriter) Close() {
if w.Writer != nil {
w.Writer.Close()
w.Writer = nil
}
}