summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/wiggin77/srslog/formatter.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/wiggin77/srslog/formatter.go')
-rw-r--r--vendor/github.com/wiggin77/srslog/formatter.go58
1 files changed, 58 insertions, 0 deletions
diff --git a/vendor/github.com/wiggin77/srslog/formatter.go b/vendor/github.com/wiggin77/srslog/formatter.go
new file mode 100644
index 00000000..e306fd67
--- /dev/null
+++ b/vendor/github.com/wiggin77/srslog/formatter.go
@@ -0,0 +1,58 @@
+package srslog
+
+import (
+ "fmt"
+ "os"
+ "time"
+)
+
+const appNameMaxLength = 48 // limit to 48 chars as per RFC5424
+
+// Formatter is a type of function that takes the consituent parts of a
+// syslog message and returns a formatted string. A different Formatter is
+// defined for each different syslog protocol we support.
+type Formatter func(p Priority, hostname, tag, content string) string
+
+// DefaultFormatter is the original format supported by the Go syslog package,
+// and is a non-compliant amalgamation of 3164 and 5424 that is intended to
+// maximize compatibility.
+func DefaultFormatter(p Priority, hostname, tag, content string) string {
+ timestamp := time.Now().Format(time.RFC3339)
+ msg := fmt.Sprintf("<%d> %s %s %s[%d]: %s",
+ p, timestamp, hostname, tag, os.Getpid(), content)
+ return msg
+}
+
+// UnixFormatter omits the hostname, because it is only used locally.
+func UnixFormatter(p Priority, hostname, tag, content string) string {
+ timestamp := time.Now().Format(time.Stamp)
+ msg := fmt.Sprintf("<%d>%s %s[%d]: %s",
+ p, timestamp, tag, os.Getpid(), content)
+ return msg
+}
+
+// RFC3164Formatter provides an RFC 3164 compliant message.
+func RFC3164Formatter(p Priority, hostname, tag, content string) string {
+ timestamp := time.Now().Format(time.Stamp)
+ msg := fmt.Sprintf("<%d>%s %s %s[%d]: %s",
+ p, timestamp, hostname, tag, os.Getpid(), content)
+ return msg
+}
+
+// if string's length is greater than max, then use the last part
+func truncateStartStr(s string, max int) string {
+ if (len(s) > max) {
+ return s[len(s) - max:]
+ }
+ return s
+}
+
+// RFC5424Formatter provides an RFC 5424 compliant message.
+func RFC5424Formatter(p Priority, hostname, tag, content string) string {
+ timestamp := time.Now().Format(time.RFC3339)
+ pid := os.Getpid()
+ appName := truncateStartStr(os.Args[0], appNameMaxLength)
+ msg := fmt.Sprintf("<%d>%d %s %s %s %d %s - %s",
+ p, 1, timestamp, hostname, appName, pid, tag, content)
+ return msg
+}