Skip to content

Commit 84015df

Browse files
committed
Add systemd journal handler
1 parent 8da8315 commit 84015df

File tree

3 files changed

+51
-0
lines changed

3 files changed

+51
-0
lines changed

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ require (
88
github.com/aphistic/sweet v0.2.0 // indirect
99
github.com/aws/aws-sdk-go v1.20.6
1010
github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59
11+
github.com/coreos/go-systemd/v22 v22.0.0
1112
github.com/fatih/color v1.7.0
1213
github.com/go-logfmt/logfmt v0.4.0
1314
github.com/golang/protobuf v1.3.1 // indirect

go.sum

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ github.com/aws/aws-sdk-go v1.20.6 h1:kmy4Gvdlyez1fV4kw5RYxZzWKVyuHZHgPWeU/YvRsV4
88
github.com/aws/aws-sdk-go v1.20.6/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
99
github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59 h1:WWB576BN5zNSZc/M9d/10pqEx5VHNhaQ/yOVAkmj5Yo=
1010
github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59/go.mod h1:q/89r3U2H7sSsE2t6Kca0lfwTK8JdoNGS/yzM/4iH5I=
11+
github.com/coreos/go-systemd/v22 v22.0.0 h1:XJIw/+VlJ+87J+doOxznsAWIdmWuViOVhkQamW5YV28=
12+
github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk=
1113
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
1214
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
1315
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
@@ -18,6 +20,7 @@ github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV
1820
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
1921
github.com/go-logfmt/logfmt v0.4.0 h1:MP4Eh7ZCb31lleYCFuwm0oe4/YGak+5l1vA2NOE80nA=
2022
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
23+
github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
2124
github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM=
2225
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
2326
github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg=

handlers/journal/systemdlog.go

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package journal
2+
3+
import (
4+
"errors"
5+
"fmt"
6+
7+
"github.com/apex/log"
8+
"github.com/coreos/go-systemd/v22/journal"
9+
)
10+
11+
// Handler implementation.
12+
type Handler struct {
13+
}
14+
15+
// New handler.
16+
func New() *Handler {
17+
return &Handler{}
18+
}
19+
20+
// HandleLog implements log.Handler.
21+
func (h *Handler) HandleLog(e *log.Entry) error {
22+
23+
fields := make(map[string]string, len(e.Fields))
24+
for k, v := range e.Fields {
25+
fields[k] = fmt.Sprint(v)
26+
}
27+
28+
switch e.Level {
29+
case log.DebugLevel:
30+
return journal.Send(e.Message, journal.PriDebug, fields)
31+
case log.InfoLevel:
32+
return journal.Send(e.Message, journal.PriInfo, fields)
33+
case log.WarnLevel:
34+
return journal.Send(e.Message, journal.PriWarning, fields)
35+
case log.ErrorLevel:
36+
return journal.Send(e.Message, journal.PriErr, fields)
37+
case log.FatalLevel:
38+
return journal.Send(e.Message, journal.PriCrit, fields)
39+
}
40+
41+
return errors.New("unknown log level given for systemd")
42+
}
43+
44+
// Close shuts down the handler.
45+
func (h *Handler) Close() error {
46+
return nil
47+
}

0 commit comments

Comments
 (0)