File: syslog_linux.go

package info (click to toggle)
incus 6.0.4-2
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 23,864 kB
  • sloc: sh: 16,015; ansic: 3,121; python: 456; makefile: 321; ruby: 51; sql: 50; lisp: 6
file content (38 lines) | stat: -rw-r--r-- 703 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//go:build linux

package logger

import (
	"log/syslog"

	"github.com/sirupsen/logrus"
	lSyslog "github.com/sirupsen/logrus/hooks/syslog"
)

type syslogHandler struct {
	handler logrus.Hook
}

func (h syslogHandler) Fire(entry *logrus.Entry) error {
	return h.handler.Fire(entry)
}

func (h syslogHandler) Levels() []logrus.Level {
	return []logrus.Level{
		logrus.PanicLevel,
		logrus.FatalLevel,
		logrus.ErrorLevel,
		logrus.WarnLevel,
		logrus.InfoLevel,
	}
}

func setupSyslog(logger *logrus.Logger, syslogName string) error {
	syslogHook, err := lSyslog.NewSyslogHook("", "", syslog.LOG_INFO, syslogName)
	if err != nil {
		return err
	}

	logger.AddHook(syslogHandler{syslogHook})
	return nil
}