// Copyright 2015 CoreOS, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // // +build !windows package capnslog import ( "fmt" "log/syslog" ) func NewSyslogFormatter(w *syslog.Writer) Formatter { return &syslogFormatter{w} } func NewDefaultSyslogFormatter(tag string) (Formatter, error) { w, err := syslog.New(syslog.LOG_DEBUG, tag) if err != nil { return nil, err } return NewSyslogFormatter(w), nil } type syslogFormatter struct { w *syslog.Writer } func (s *syslogFormatter) Format(pkg string, l LogLevel, _ int, entries ...interface{}) { for _, entry := range entries { str := fmt.Sprint(entry) switch l { case CRITICAL: s.w.Crit(str) case ERROR: s.w.Err(str) case WARNING: s.w.Warning(str) case NOTICE: s.w.Notice(str) case INFO: s.w.Info(str) case DEBUG: s.w.Debug(str) case TRACE: s.w.Debug(str) default: panic("Unhandled loglevel") } } } func (s *syslogFormatter) Flush() { }