func (hook *SyslogHook) Fire(entry *logrus.Entry) error { file, lineNumber := caller.GetCallerIgnoringLogMulti(1) if file != "" { sep := fmt.Sprintf("%s/src/", os.Getenv("GOPATH")) fileName := strings.Split(file, sep) if len(fileName) >= 2 { file = fileName[1] } } entry.Data["file"] = file entry.Data["line"] = lineNumber line, err := entry.String() if err != nil { fmt.Fprintf(os.Stderr, "Unable to read entry, %v", err) return err } switch entry.Level { case logrus.PanicLevel: return hook.Writer.Crit(line) case logrus.FatalLevel: return hook.Writer.Crit(line) case logrus.ErrorLevel: return hook.Writer.Err(line) case logrus.WarnLevel: return hook.Writer.Warning(line) case logrus.InfoLevel: return hook.Writer.Info(line) case logrus.DebugLevel: return hook.Writer.Debug(line) default: return nil } }
// Fire is called when a log event is fired. func (hook *PapertrailHook) Fire(entry *logrus.Entry) error { date := time.Now().Format(format) msg, _ := entry.String() payload := fmt.Sprintf("<22> %s %s: %s", date, hook.AppName, msg) bytesWritten, err := hook.UDPConn.Write([]byte(payload)) if err != nil { fmt.Fprintf(os.Stderr, "Unable to send log line to Papertrail via UDP. Wrote %d bytes before error: %v", bytesWritten, err) return err } return nil }