Skip to content

Commit 0c66ecd

Browse files
author
Matthew Fisher
committed
fix(logger): properly parse incoming syslog messages
1 parent 8e21710 commit 0c66ecd

9 files changed

Lines changed: 47 additions & 305 deletions

File tree

logger/Dockerfile

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
FROM deis/base:latest
22
MAINTAINER OpDemand <info@opdemand.com>
33

4+
# install go dependencies
5+
RUN apt-get update && apt-get install -yq \
6+
git \
7+
bzr \
8+
mercurial \
9+
--no-install-recommends
10+
411
# install go runtime
512
RUN wget -qO- https://storage.googleapis.com/golang/go1.3.1.linux-amd64.tar.gz | tar -C /usr/local -xz
613

@@ -13,12 +20,13 @@ ENV PATH /usr/local/bin:/usr/bin:/bin:/sbin:/usr/local/go/bin
1320
RUN mkdir -p /var/log/deis
1421

1522
# prepare execution environment
16-
WORKDIR /app
23+
WORKDIR /go/src/github.com/deis/deis/logger
1724
CMD ["/app/bin/boot"]
1825
EXPOSE 514
1926

20-
ADD . /app
27+
ADD bin/ /app/bin/
2128
ADD . /go/src/github.com/deis/deis/logger
2229

23-
# compile the binary
24-
RUN cd /go/src/github.com/deis/deis/logger/syslogd && go install -v .
30+
# install dependencies
31+
RUN go get ./syslog
32+
RUN go install -v ./syslogd

logger/syslog/filehandler.go

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,6 @@ func (h *FileHandler) checkErr(err error) bool {
8181
if err == nil {
8282
return false
8383
}
84-
if h.l == nil {
85-
log.Print(h.filename, ": ", err)
86-
} else {
87-
h.l.Print(h.filename, ": ", err)
88-
}
8984
return true
9085
}
9186

logger/syslog/filehandler_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ func TestSetLogger(t *testing.T) {
2929

3030
func TestHandle(t *testing.T) {
3131
fh := NewFileHandler("/tmp/test", 1, func(m *Message) bool { return true }, true)
32-
handle := fh.Handle(&Message{time.Now(), nil, 0, 0, time.Now(), "localhost", "test", "message", "", ""})
32+
handle := fh.Handle(&Message{time.Now(), 0, time.Now(), "localhost", "test", "message"})
3333
if handle == nil {
3434
t.Errorf("expected a handle, got nil")
3535
}

logger/syslog/message.go

Lines changed: 9 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,46 +2,28 @@ package syslog
22

33
import (
44
"fmt"
5-
"net"
5+
"log/syslog"
66
"time"
77
)
88

99
// Message defines an RFC 3164 syslog message.
1010
type Message struct {
11-
Time time.Time // time the message was logged
12-
Source net.Addr // source address of the log message
13-
Facility // facility tag (see type Facility)
14-
Severity // severity tag (see type Severity)
15-
Timestamp time.Time // optional
16-
Hostname string // optional
17-
Tag string // message tag as defined in RFC 3164
18-
Content string // message content as defined in RFC 3164
19-
Tag1 string // alternate message tag (white rune as separator)
20-
Content1 string // alternate message content (white rune as separator)
21-
}
22-
23-
// NetSrc only network part of Source as string (IP for UDP or Name for UDS)
24-
func (m *Message) NetSrc() string {
25-
switch a := m.Source.(type) {
26-
case *net.UDPAddr:
27-
return a.IP.String()
28-
case *net.UnixAddr:
29-
return a.Name
30-
case *net.TCPAddr:
31-
return a.IP.String()
32-
}
33-
// Unknown type
34-
return m.Source.String()
11+
Time time.Time
12+
Priority syslog.Priority
13+
Timestamp time.Time
14+
Hostname string
15+
Tag string
16+
Content string
3517
}
3618

3719
// String returns the Message in a string format. This satisfies the fmt.Stringer
3820
// interface.
3921
func (m *Message) String() string {
4022
timeLayout := "2006-01-02 15:04:05"
4123
return fmt.Sprintf(
42-
"%s %s %s%s",
24+
"<%d>%s %s: %s",
25+
m.Priority,
4326
m.Time.Format(timeLayout),
44-
m.Hostname,
4527
m.Tag,
4628
m.Content,
4729
)

logger/syslog/message_test.go

Lines changed: 2 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,79 +1,15 @@
11
package syslog
22

33
import (
4-
"net"
54
"testing"
65
"time"
76
)
87

9-
func TestMessageNetSrc(t *testing.T) {
10-
tcpAddress, err := net.ResolveTCPAddr("tcp", "localhost:1234")
11-
12-
if err != nil {
13-
t.Error("could not resolve TCP address")
14-
}
15-
16-
m := &Message{time.Now(), tcpAddress, 0, 0, time.Now(), "", "", "", "", ""}
17-
if m.NetSrc() != "127.0.0.1" {
18-
t.Errorf("expected 127.0.0.1, got %s", m.NetSrc())
19-
}
20-
21-
udpAddress, err := net.ResolveUDPAddr("udp", "localhost:1234")
22-
23-
if err != nil {
24-
t.Error("could not resolve UDP address")
25-
}
26-
27-
m.Source = udpAddress
28-
if m.NetSrc() != "127.0.0.1" {
29-
t.Errorf("expected 127.0.0.1, got %s", m.NetSrc())
30-
}
31-
32-
unixAddress, err := net.ResolveUnixAddr("unix", "/tmp/str")
33-
34-
if err != nil {
35-
t.Error("could not resolve unix address")
36-
}
37-
38-
m.Source = unixAddress
39-
if m.NetSrc() != "/tmp/str" {
40-
t.Errorf("expected /tmp/str, got %s", m.NetSrc())
41-
}
42-
43-
unknownAddress, err := net.ResolveIPAddr("ip4", "localhost")
44-
45-
if err != nil {
46-
t.Error("could not resolve unknown address")
47-
}
48-
49-
m.Source = unknownAddress
50-
if m.NetSrc() != "127.0.0.1" {
51-
t.Errorf("expected 127.0.0.1, got %s", m.NetSrc())
52-
}
53-
}
54-
558
func TestMessageFormat(t *testing.T) {
56-
tcpAddress, err := net.ResolveTCPAddr("tcp", "localhost:1234")
57-
58-
if err != nil {
59-
t.Errorf("could not resolve TCP address")
60-
}
61-
62-
m := &Message{
63-
time.Now(),
64-
tcpAddress,
65-
0,
66-
0,
67-
time.Now(),
68-
"localhost",
69-
"TEST",
70-
"hello world",
71-
"",
72-
"",
73-
}
9+
m := &Message{time.Now(), 34, time.Now(), "localhost", "test", "hello world"}
7410

7511
timeLayout := "2006-01-02 15:04:05"
76-
expectedOutput := m.Time.Format(timeLayout) + " localhost TESThello world"
12+
expectedOutput := "<34>" + m.Time.Format(timeLayout) + " test: hello world"
7713
if m.String() != expectedOutput {
7814
t.Errorf("expected '" + expectedOutput + "', got '" + m.String() + "'.")
7915
}

logger/syslog/priority.go

Lines changed: 0 additions & 110 deletions
This file was deleted.

logger/syslog/priority_test.go

Lines changed: 0 additions & 27 deletions
This file was deleted.

0 commit comments

Comments
 (0)