github.com/nya3jp/tast@v0.0.0-20230601000426-85c8e4d83a9b/src/go.chromium.org/tast/core/internal/logging/syslog.go (about) 1 // Copyright 2021 The ChromiumOS Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 package logging 6 7 import ( 8 "log/syslog" 9 "os" 10 "path/filepath" 11 "time" 12 ) 13 14 // SyslogLogger is a Logger that routes logs to syslog. 15 type SyslogLogger struct { 16 w *syslog.Writer 17 } 18 19 var _ Logger = &SyslogLogger{} 20 21 // NewSyslogLogger creates a new SyslogLogger. 22 // It returns an error if it fails to connect to the syslog endpoint. 23 func NewSyslogLogger() (*SyslogLogger, error) { 24 w, err := syslog.New(syslog.LOG_DEBUG, filepath.Base(os.Args[0])) 25 if err != nil { 26 return nil, err 27 } 28 return &SyslogLogger{w}, nil 29 } 30 31 // Close closes the underlying connection to the syslog endpoint. 32 func (l *SyslogLogger) Close() error { 33 return l.w.Close() 34 } 35 36 // Log sends a log to syslog. 37 func (l *SyslogLogger) Log(level Level, ts time.Time, msg string) { 38 switch level { 39 case LevelInfo: 40 l.w.Info(msg) 41 case LevelDebug: 42 l.w.Debug(msg) 43 } 44 }