Пакет syslog
Обзор
Пакет syslog предоставляет простой интерфейс к службе системного журнала. Он может отправлять сообщения демону syslog с использованием сокетов домена UNIX, UDP или TCP.
Требуется только один вызов Dial. При сбоях записи клиент syslog попытается повторно подключиться к серверу и выполнить запись снова.
Пакет syslog заморожен и не принимает новые возможности. Некоторые внешние пакеты предоставляют более широкую функциональность. См.:
https://godoc.org/?q=syslog
Указатель
Примеры
Файлы пакета
doc.go syslog.go syslog_unix.go
func NewLogger
func NewLogger(p Priority, logFlag int) (*log.Logger, error)
NewLogger создает log.Logger, вывод которого записывается в службу системного журнала с указанным приоритетом — комбинацией категории (facility) и важности (severity) syslog. Аргумент logFlag представляет собой набор флагов, передаваемый в log.New для создания Logger.
type Priority
Priority представляет собой комбинацию категории (facility) и важности (severity) syslog. Например, LOG_ALERT | LOG_FTP отправляет сообщение с уровнем важности alert из категории FTP. Важность по умолчанию — LOG_EMERG; категория по умолчанию — LOG_KERN.
type Priority int
const (
// From /usr/include/sys/syslog.h.
// These are the same on Linux, BSD, and OS X.
LOG_EMERG Priority = iota
LOG_ALERT
LOG_CRIT
LOG_ERR
LOG_WARNING
LOG_NOTICE
LOG_INFO
LOG_DEBUG
) const (
// From /usr/include/sys/syslog.h.
// These are the same up to LOG_FTP on Linux, BSD, and OS X.
LOG_KERN Priority = iota << 3
LOG_USER
LOG_MAIL
LOG_DAEMON
LOG_AUTH
LOG_SYSLOG
LOG_LPR
LOG_NEWS
LOG_UUCP
LOG_CRON
LOG_AUTHPRIV
LOG_FTP
LOG_LOCAL0
LOG_LOCAL1
LOG_LOCAL2
LOG_LOCAL3
LOG_LOCAL4
LOG_LOCAL5
LOG_LOCAL6
LOG_LOCAL7
) type Writer
Writer представляет собой соединение с сервером syslog.
type Writer struct {
// contains filtered or unexported fields
}
func Dial
func Dial(network, raddr string, priority Priority, tag string) (*Writer, error)
Dial устанавливает соединение с демоном журнала, подключаясь к адресу raddr в указанной сети. Каждая запись в возвращенный writer отправляет сообщение журнала с категорией и важностью (из priority) и тегом tag. Если tag пуст, используется os.Args[0]. Если network пуст, Dial подключится к локальному серверу syslog. В противном случае см. документацию по net.Dial для допустимых значений network и raddr.
Пример
Код:
sysLog, err := syslog.Dial("tcp", "localhost:1234",
syslog.LOG_WARNING|syslog.LOG_DAEMON, "demotag")
if err != nil {
log.Fatal(err)
}
fmt.Fprintf(sysLog, "This is a daemon warning with demotag.")
sysLog.Emerg("And this is a daemon emergency with demotag.")
func New
func New(priority Priority, tag string) (*Writer, error)
New устанавливает новое соединение с демоном системного журнала. Каждая запись в возвращенный writer отправляет сообщение журнала с заданным приоритетом (комбинацией категории и важности syslog) и префиксным тегом tag. Если tag пуст, используется os.Args[0].
func (*Writer) Alert
func (w *Writer) Alert(m string) error
Alert записывает в журнал сообщение с уровнем важности LOG_ALERT, игнорируя уровень важности, переданный в New.
func (*Writer) Close
func (w *Writer) Close() error
Close закрывает соединение с демоном syslog.
func (*Writer) Crit
func (w *Writer) Crit(m string) error
Crit записывает в журнал сообщение с уровнем важности LOG_CRIT, игнорируя уровень важности, переданный в New.
func (*Writer) Debug
func (w *Writer) Debug(m string) error
Debug записывает в журнал сообщение с уровнем важности LOG_DEBUG, игнорируя уровень важности, переданный в New.
func (*Writer) Emerg
func (w *Writer) Emerg(m string) error
Emerg записывает в журнал сообщение с уровнем важности LOG_EMERG, игнорируя уровень важности, переданный в New.
func (*Writer) Err
func (w *Writer) Err(m string) error
Err записывает в журнал сообщение с уровнем важности LOG_ERR, игнорируя уровень важности, переданный в New.
func (*Writer) Info
func (w *Writer) Info(m string) error
Info записывает в журнал сообщение с уровнем важности LOG_INFO, игнорируя уровень важности, переданный в New.
func (*Writer) Notice
func (w *Writer) Notice(m string) error
Notice записывает в журнал сообщение с уровнем важности LOG_NOTICE, игнорируя уровень важности, переданный в New.
func (*Writer) Warning
func (w *Writer) Warning(m string) error
Warning записывает в журнал сообщение с уровнем важности LOG_WARNING, игнорируя уровень важности, переданный в New.
func (*Writer) Write
func (w *Writer) Write(b []byte) (int, error)
Write отправляет сообщение журнала демону syslog.
Ошибки
- ☞
Этот пакет не реализован для Windows. Поскольку пакет syslog заморожен, пользователям Windows рекомендуется использовать пакет не из стандартной библиотеки. Подробнее см. https://golang.org/issue/1108.
- ☞
Этот пакет не реализован для Plan 9.
- ☞
Начиная с Darwin macOS 12.X (Monterey), демон syslog от Apple больше не прослушивает сокет домена UNIX, а вместо этого использует собственную систему Apple Unified Logging (AUL), поэтому этот пакет больше не будет работать. См. https://developer.apple.com/documentation/os/logging.
© Google, Inc.
Licensed under the Creative Commons Attribution License 3.0.
http://golang.org/pkg/log/syslog/