blob: 27ce5101fec024192170348678166ada81fedc34 [file] [log] [blame]
// Copyright 2021 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package logging
import (
"log/syslog"
"os"
"path/filepath"
"time"
)
// SyslogLogger is a Logger that routes logs to syslog.
type SyslogLogger struct {
w *syslog.Writer
}
var _ Logger = &SyslogLogger{}
// NewSyslogLogger creates a new SyslogLogger.
// It returns an error if it fails to connect to the syslog endpoint.
func NewSyslogLogger() (*SyslogLogger, error) {
w, err := syslog.New(syslog.LOG_DEBUG, filepath.Base(os.Args[0]))
if err != nil {
return nil, err
}
return &SyslogLogger{w}, nil
}
// Close closes the underlying connection to the syslog endpoint.
func (l *SyslogLogger) Close() error {
return l.w.Close()
}
// Log sends a log to syslog.
func (l *SyslogLogger) Log(level Level, ts time.Time, msg string) {
switch level {
case LevelInfo:
l.w.Info(msg)
case LevelDebug:
l.w.Debug(msg)
}
}