Bläddra i källkod

Rework logging

tags/0.9
9seconds 7 år sedan
förälder
incheckning
67151746b0

+ 6
- 14
wrappers/blockcipher.go Visa fil

@@ -6,6 +6,8 @@ import (
6 6
 	"crypto/cipher"
7 7
 	"net"
8 8
 
9
+	"go.uber.org/zap"
10
+
9 11
 	"github.com/9seconds/mtg/utils"
10 12
 	"github.com/juju/errors"
11 13
 )
@@ -13,6 +15,7 @@ import (
13 15
 type BlockCipher struct {
14 16
 	buf *bytes.Buffer
15 17
 
18
+	logger    *zap.SugaredLogger
16 19
 	conn      StreamReadWriteCloser
17 20
 	encryptor cipher.BlockMode
18 21
 	decryptor cipher.BlockMode
@@ -60,20 +63,8 @@ func (b *BlockCipher) Write(p []byte) (int, error) {
60 63
 	return b.conn.Write(encrypted)
61 64
 }
62 65
 
63
-func (b *BlockCipher) LogDebug(msg string, data ...interface{}) {
64
-	b.conn.LogDebug(msg, data...)
65
-}
66
-
67
-func (b *BlockCipher) LogInfo(msg string, data ...interface{}) {
68
-	b.conn.LogInfo(msg, data...)
69
-}
70
-
71
-func (b *BlockCipher) LogWarn(msg string, data ...interface{}) {
72
-	b.conn.LogWarn(msg, data...)
73
-}
74
-
75
-func (b *BlockCipher) LogError(msg string, data ...interface{}) {
76
-	b.conn.LogError(msg, data...)
66
+func (b *BlockCipher) Logger() *zap.SugaredLogger {
67
+	return b.logger
77 68
 }
78 69
 
79 70
 func (b *BlockCipher) LocalAddr() *net.TCPAddr {
@@ -92,6 +83,7 @@ func NewBlockCipher(conn StreamReadWriteCloser, encryptor, decryptor cipher.Bloc
92 83
 	return &BlockCipher{
93 84
 		buf:       &bytes.Buffer{},
94 85
 		conn:      conn,
86
+		logger:    conn.Logger().Named("block-cipher"),
95 87
 		encryptor: encryptor,
96 88
 		decryptor: decryptor,
97 89
 	}

+ 4
- 16
wrappers/conn.go Visa fil

@@ -57,7 +57,7 @@ func (c *Conn) Read(p []byte) (int, error) {
57 57
 }
58 58
 
59 59
 func (c *Conn) Close() error {
60
-	defer c.LogDebug("Closed connection")
60
+	defer c.logger.Debugw("Closed connection")
61 61
 	return c.conn.Close()
62 62
 }
63 63
 
@@ -80,20 +80,8 @@ func (c *Conn) RemoteAddr() *net.TCPAddr {
80 80
 	return c.conn.RemoteAddr().(*net.TCPAddr)
81 81
 }
82 82
 
83
-func (c *Conn) LogDebug(msg string, data ...interface{}) {
84
-	c.logger.Debugw(msg, data...)
85
-}
86
-
87
-func (c *Conn) LogInfo(msg string, data ...interface{}) {
88
-	c.logger.Infow(msg, data...)
89
-}
90
-
91
-func (c *Conn) LogWarn(msg string, data ...interface{}) {
92
-	c.logger.Warnw(msg, data...)
93
-}
94
-
95
-func (c *Conn) LogError(msg string, data ...interface{}) {
96
-	c.logger.Errorw(msg, data...)
83
+func (c *Conn) Logger() *zap.SugaredLogger {
84
+	return c.logger
97 85
 }
98 86
 
99 87
 func NewConn(conn net.Conn, connID string, purpose ConnPurpose, publicIPv4, publicIPv6 net.IP) StreamReadWriteCloser {
@@ -102,7 +90,7 @@ func NewConn(conn net.Conn, connID string, purpose ConnPurpose, publicIPv4, publ
102 90
 		"local_address", conn.LocalAddr(),
103 91
 		"remote_address", conn.RemoteAddr(),
104 92
 		"purpose", purpose,
105
-	)
93
+	).Named("conn")
106 94
 
107 95
 	wrapper := Conn{
108 96
 		logger:     logger,

+ 13
- 26
wrappers/mtproto_abridged.go Visa fil

@@ -6,6 +6,7 @@ import (
6 6
 	"net"
7 7
 
8 8
 	"github.com/juju/errors"
9
+	"go.uber.org/zap"
9 10
 
10 11
 	"github.com/9seconds/mtg/mtproto"
11 12
 	"github.com/9seconds/mtg/utils"
@@ -18,15 +19,16 @@ const (
18 19
 )
19 20
 
20 21
 type MTProtoAbridged struct {
21
-	conn StreamReadWriteCloser
22
-	opts *mtproto.ConnectionOpts
22
+	conn   StreamReadWriteCloser
23
+	opts   *mtproto.ConnectionOpts
24
+	logger *zap.SugaredLogger
23 25
 
24 26
 	readCounter  uint32
25 27
 	writeCounter uint32
26 28
 }
27 29
 
28 30
 func (m *MTProtoAbridged) Read() ([]byte, error) {
29
-	m.LogDebug("Read packet",
31
+	m.logger.Debugw("Read packet",
30 32
 		"simple_ack", m.opts.ReadHacks.SimpleAck,
31 33
 		"quick_ack", m.opts.ReadHacks.QuickAck,
32 34
 		"counter", m.readCounter,
@@ -41,7 +43,7 @@ func (m *MTProtoAbridged) Read() ([]byte, error) {
41 43
 	msgLength := uint8(buf.Bytes()[0])
42 44
 	buf.Reset()
43 45
 
44
-	m.LogDebug("Packet first byte",
46
+	m.logger.Debugw("Packet first byte",
45 47
 		"byte", msgLength,
46 48
 		"counter", m.readCounter,
47 49
 		"simple_ack", m.opts.ReadHacks.SimpleAck,
@@ -64,7 +66,7 @@ func (m *MTProtoAbridged) Read() ([]byte, error) {
64 66
 	}
65 67
 	msgLength32 *= 4
66 68
 
67
-	m.LogDebug("Packet length",
69
+	m.logger.Debugw("Packet length",
68 70
 		"length", msgLength32,
69 71
 		"simple_ack", m.opts.ReadHacks.SimpleAck,
70 72
 		"quick_ack", m.opts.ReadHacks.QuickAck,
@@ -83,7 +85,7 @@ func (m *MTProtoAbridged) Read() ([]byte, error) {
83 85
 }
84 86
 
85 87
 func (m *MTProtoAbridged) Write(p []byte) (int, error) {
86
-	m.LogDebug("Write packet",
88
+	m.logger.Debugw("Write packet",
87 89
 		"length", len(p),
88 90
 		"simple_ack", m.opts.WriteHacks.SimpleAck,
89 91
 		"quick_ack", m.opts.WriteHacks.QuickAck,
@@ -124,24 +126,8 @@ func (m *MTProtoAbridged) Write(p []byte) (int, error) {
124 126
 	return 0, errors.Errorf("Packet is too big %d", len(p))
125 127
 }
126 128
 
127
-func (m *MTProtoAbridged) LogDebug(msg string, data ...interface{}) {
128
-	data = append(data, []interface{}{"type", "abridged"}...)
129
-	m.conn.LogDebug(msg, data...)
130
-}
131
-
132
-func (m *MTProtoAbridged) LogInfo(msg string, data ...interface{}) {
133
-	data = append(data, []interface{}{"type", "abridged"}...)
134
-	m.conn.LogInfo(msg, data...)
135
-}
136
-
137
-func (m *MTProtoAbridged) LogWarn(msg string, data ...interface{}) {
138
-	data = append(data, []interface{}{"type", "abridged"}...)
139
-	m.conn.LogWarn(msg, data...)
140
-}
141
-
142
-func (m *MTProtoAbridged) LogError(msg string, data ...interface{}) {
143
-	data = append(data, []interface{}{"type", "abridged"}...)
144
-	m.conn.LogError(msg, data...)
129
+func (m *MTProtoAbridged) Logger() *zap.SugaredLogger {
130
+	return m.logger
145 131
 }
146 132
 
147 133
 func (m *MTProtoAbridged) LocalAddr() *net.TCPAddr {
@@ -158,7 +144,8 @@ func (m *MTProtoAbridged) Close() error {
158 144
 
159 145
 func NewMTProtoAbridged(conn StreamReadWriteCloser, opts *mtproto.ConnectionOpts) PacketReadWriteCloser {
160 146
 	return &MTProtoAbridged{
161
-		conn: conn,
162
-		opts: opts,
147
+		conn:   conn,
148
+		opts:   opts,
149
+		logger: conn.Logger().Named("mtproto-abridged"),
163 150
 	}
164 151
 }

+ 10
- 22
wrappers/mtproto_frame.go Visa fil

@@ -10,6 +10,7 @@ import (
10 10
 	"net"
11 11
 
12 12
 	"github.com/juju/errors"
13
+	"go.uber.org/zap"
13 14
 )
14 15
 
15 16
 const (
@@ -20,7 +21,9 @@ const (
20 21
 var mtprotoFramePadding = []byte{0x04, 0x00, 0x00, 0x00}
21 22
 
22 23
 type MTProtoFrame struct {
23
-	conn       StreamReadWriteCloser
24
+	conn   StreamReadWriteCloser
25
+	logger *zap.SugaredLogger
26
+
24 27
 	readSeqNo  int32
25 28
 	writeSeqNo int32
26 29
 }
@@ -42,7 +45,7 @@ func (m *MTProtoFrame) Read() ([]byte, error) {
42 45
 	}
43 46
 
44 47
 	messageLength := binary.LittleEndian.Uint32(buf.Bytes())
45
-	m.LogDebug("Read MTProto frame",
48
+	m.logger.Debugw("Read MTProto frame",
46 49
 		"messageLength", messageLength,
47 50
 		"sequence_number", m.readSeqNo,
48 51
 	)
@@ -75,7 +78,7 @@ func (m *MTProtoFrame) Read() ([]byte, error) {
75 78
 		return nil, errors.Errorf("CRC32 checksum mismatch. Wait for %d, got %d", sum.Sum32(), checksum)
76 79
 	}
77 80
 
78
-	m.LogDebug("Read MTProto frame",
81
+	m.logger.Debugw("Read MTProto frame",
79 82
 		"messageLength", messageLength,
80 83
 		"sequence_number", m.readSeqNo,
81 84
 		"dataLength", len(data),
@@ -101,7 +104,7 @@ func (m *MTProtoFrame) Write(p []byte) (int, error) {
101 104
 	binary.Write(buf, binary.LittleEndian, checksum)
102 105
 	buf.Write(bytes.Repeat(mtprotoFramePadding, paddingLength/4))
103 106
 
104
-	m.LogDebug("Write MTProto frame",
107
+	m.logger.Debugw("Write MTProto frame",
105 108
 		"length", len(p),
106 109
 		"sequence_number", m.writeSeqNo,
107 110
 		"crc32", checksum,
@@ -114,24 +117,8 @@ func (m *MTProtoFrame) Write(p []byte) (int, error) {
114 117
 	return len(p), err
115 118
 }
116 119
 
117
-func (m *MTProtoFrame) LogDebug(msg string, data ...interface{}) {
118
-	data = append(data, []interface{}{"type", "frame"}...)
119
-	m.conn.LogDebug(msg, data...)
120
-}
121
-
122
-func (m *MTProtoFrame) LogInfo(msg string, data ...interface{}) {
123
-	data = append(data, []interface{}{"type", "frame"}...)
124
-	m.conn.LogInfo(msg, data...)
125
-}
126
-
127
-func (m *MTProtoFrame) LogWarn(msg string, data ...interface{}) {
128
-	data = append(data, []interface{}{"type", "frame"}...)
129
-	m.conn.LogWarn(msg, data...)
130
-}
131
-
132
-func (m *MTProtoFrame) LogError(msg string, data ...interface{}) {
133
-	data = append(data, []interface{}{"type", "frame"}...)
134
-	m.conn.LogError(msg, data...)
120
+func (m *MTProtoFrame) Logger() *zap.SugaredLogger {
121
+	return m.logger
135 122
 }
136 123
 
137 124
 func (m *MTProtoFrame) LocalAddr() *net.TCPAddr {
@@ -149,6 +136,7 @@ func (m *MTProtoFrame) Close() error {
149 136
 func NewMTProtoFrame(conn StreamReadWriteCloser, seqNo int32) PacketReadWriteCloser {
150 137
 	return &MTProtoFrame{
151 138
 		conn:       conn,
139
+		logger:     conn.Logger().Named("mtproto-frame"),
152 140
 		readSeqNo:  seqNo,
153 141
 		writeSeqNo: seqNo,
154 142
 	}

+ 14
- 26
wrappers/mtproto_intermediate.go Visa fil

@@ -6,22 +6,25 @@ import (
6 6
 	"io"
7 7
 	"net"
8 8
 
9
-	"github.com/9seconds/mtg/mtproto"
10 9
 	"github.com/juju/errors"
10
+	"go.uber.org/zap"
11
+
12
+	"github.com/9seconds/mtg/mtproto"
11 13
 )
12 14
 
13 15
 const mtprotoIntermediateQuickAckLength = 0x80000000
14 16
 
15 17
 type MTProtoIntermediate struct {
16
-	conn StreamReadWriteCloser
17
-	opts *mtproto.ConnectionOpts
18
+	conn   StreamReadWriteCloser
19
+	opts   *mtproto.ConnectionOpts
20
+	logger *zap.SugaredLogger
18 21
 
19 22
 	readCounter  uint32
20 23
 	writeCounter uint32
21 24
 }
22 25
 
23 26
 func (m *MTProtoIntermediate) Read() ([]byte, error) {
24
-	m.LogDebug("Read packet",
27
+	m.logger.Debugw("Read packet",
25 28
 		"simple_ack", m.opts.ReadHacks.SimpleAck,
26 29
 		"quick_ack", m.opts.ReadHacks.QuickAck,
27 30
 		"counter", m.readCounter,
@@ -35,7 +38,7 @@ func (m *MTProtoIntermediate) Read() ([]byte, error) {
35 38
 	}
36 39
 	length := binary.LittleEndian.Uint32(buf.Bytes())
37 40
 
38
-	m.LogDebug("Packet message length",
41
+	m.logger.Debugw("Packet message length",
39 42
 		"simple_ack", m.opts.ReadHacks.SimpleAck,
40 43
 		"quick_ack", m.opts.ReadHacks.QuickAck,
41 44
 		"counter", m.readCounter,
@@ -62,7 +65,7 @@ func (m *MTProtoIntermediate) Read() ([]byte, error) {
62 65
 }
63 66
 
64 67
 func (m *MTProtoIntermediate) Write(p []byte) (int, error) {
65
-	m.LogDebug("Write packet",
68
+	m.logger.Debugw("Write packet",
66 69
 		"simple_ack", m.opts.WriteHacks.SimpleAck,
67 70
 		"quick_ack", m.opts.WriteHacks.QuickAck,
68 71
 		"counter", m.writeCounter,
@@ -79,24 +82,8 @@ func (m *MTProtoIntermediate) Write(p []byte) (int, error) {
79 82
 	return m.conn.Write(append(length[:], p...))
80 83
 }
81 84
 
82
-func (m *MTProtoIntermediate) LogDebug(msg string, data ...interface{}) {
83
-	data = append(data, []interface{}{"type", "intermediate"}...)
84
-	m.conn.LogDebug(msg, data...)
85
-}
86
-
87
-func (m *MTProtoIntermediate) LogInfo(msg string, data ...interface{}) {
88
-	data = append(data, []interface{}{"type", "intermediate"}...)
89
-	m.conn.LogInfo(msg, data...)
90
-}
91
-
92
-func (m *MTProtoIntermediate) LogWarn(msg string, data ...interface{}) {
93
-	data = append(data, []interface{}{"type", "intermediate"}...)
94
-	m.conn.LogWarn(msg, data...)
95
-}
96
-
97
-func (m *MTProtoIntermediate) LogError(msg string, data ...interface{}) {
98
-	data = append(data, []interface{}{"type", "intermediate"}...)
99
-	m.conn.LogError(msg, data...)
85
+func (m *MTProtoIntermediate) Logger() *zap.SugaredLogger {
86
+	return m.logger
100 87
 }
101 88
 
102 89
 func (m *MTProtoIntermediate) LocalAddr() *net.TCPAddr {
@@ -113,7 +100,8 @@ func (m *MTProtoIntermediate) Close() error {
113 100
 
114 101
 func NewMTProtoIntermediate(conn StreamReadWriteCloser, opts *mtproto.ConnectionOpts) PacketReadWriteCloser {
115 102
 	return &MTProtoIntermediate{
116
-		conn: conn,
117
-		opts: opts,
103
+		conn:   conn,
104
+		logger: conn.Logger().Named("mtproto-intermediate"),
105
+		opts:   opts,
118 106
 	}
119 107
 }

+ 13
- 26
wrappers/mtproto_proxy.go Visa fil

@@ -5,21 +5,23 @@ import (
5 5
 	"net"
6 6
 
7 7
 	"github.com/juju/errors"
8
+	"go.uber.org/zap"
8 9
 
9 10
 	"github.com/9seconds/mtg/mtproto"
10 11
 	"github.com/9seconds/mtg/mtproto/rpc"
11 12
 )
12 13
 
13 14
 type MTProtoProxy struct {
14
-	conn PacketReadWriteCloser
15
-	req  *rpc.ProxyRequest
15
+	conn   PacketReadWriteCloser
16
+	req    *rpc.ProxyRequest
17
+	logger *zap.SugaredLogger
16 18
 
17 19
 	readCounter  uint32
18 20
 	writeCounter uint32
19 21
 }
20 22
 
21 23
 func (m *MTProtoProxy) Read() ([]byte, error) {
22
-	m.LogDebug("Read packet",
24
+	m.logger.Debugw("Read packet",
23 25
 		"counter", m.readCounter,
24 26
 		"simple_ack", m.req.Options.WriteHacks.SimpleAck,
25 27
 		"quick_ack", m.req.Options.WriteHacks.QuickAck,
@@ -29,7 +31,7 @@ func (m *MTProtoProxy) Read() ([]byte, error) {
29 31
 	if err != nil {
30 32
 		return nil, errors.Annotate(err, "Cannot read packet")
31 33
 	}
32
-	m.LogDebug("Read packet length",
34
+	m.logger.Debugw("Read packet length",
33 35
 		"counter", m.readCounter,
34 36
 		"simple_ack", m.req.Options.WriteHacks.SimpleAck,
35 37
 		"quick_ack", m.req.Options.WriteHacks.QuickAck,
@@ -41,7 +43,7 @@ func (m *MTProtoProxy) Read() ([]byte, error) {
41 43
 	}
42 44
 
43 45
 	tag, packet := packet[:4], packet[4:]
44
-	m.LogDebug("Read RPC tag",
46
+	m.logger.Debugw("Read RPC tag",
45 47
 		"counter", m.readCounter,
46 48
 		"simple_ack", m.req.Options.WriteHacks.SimpleAck,
47 49
 		"quick_ack", m.req.Options.WriteHacks.QuickAck,
@@ -82,7 +84,7 @@ func (m *MTProtoProxy) readCloseExt(data []byte) ([]byte, error) {
82 84
 }
83 85
 
84 86
 func (m *MTProtoProxy) Write(p []byte) (int, error) {
85
-	m.LogDebug("Write packet",
87
+	m.logger.Debugw("Write packet",
86 88
 		"length", len(p),
87 89
 		"counter", m.writeCounter,
88 90
 		"simple_ack", m.req.Options.ReadHacks.SimpleAck,
@@ -97,24 +99,8 @@ func (m *MTProtoProxy) Write(p []byte) (int, error) {
97 99
 	return len(p), nil
98 100
 }
99 101
 
100
-func (m *MTProtoProxy) LogDebug(msg string, data ...interface{}) {
101
-	data = append(data, []interface{}{"type", "proxy"}...)
102
-	m.conn.LogDebug(msg, data...)
103
-}
104
-
105
-func (m *MTProtoProxy) LogInfo(msg string, data ...interface{}) {
106
-	data = append(data, []interface{}{"type", "proxy"}...)
107
-	m.conn.LogInfo(msg, data...)
108
-}
109
-
110
-func (m *MTProtoProxy) LogWarn(msg string, data ...interface{}) {
111
-	data = append(data, []interface{}{"type", "proxy"}...)
112
-	m.conn.LogWarn(msg, data...)
113
-}
114
-
115
-func (m *MTProtoProxy) LogError(msg string, data ...interface{}) {
116
-	data = append(data, []interface{}{"type", "proxy"}...)
117
-	m.conn.LogError(msg, data...)
102
+func (m *MTProtoProxy) Logger() *zap.SugaredLogger {
103
+	return m.logger
118 104
 }
119 105
 
120 106
 func (m *MTProtoProxy) LocalAddr() *net.TCPAddr {
@@ -136,7 +122,8 @@ func NewMTProtoProxy(conn PacketReadWriteCloser, connOpts *mtproto.ConnectionOpt
136 122
 	}
137 123
 
138 124
 	return &MTProtoProxy{
139
-		conn: conn,
140
-		req:  req,
125
+		conn:   conn,
126
+		logger: conn.Logger().Named("mtproto-proxy"),
127
+		req:    req,
141 128
 	}, nil
142 129
 }

+ 5
- 14
wrappers/streamcipher.go Visa fil

@@ -5,12 +5,14 @@ import (
5 5
 	"net"
6 6
 
7 7
 	"github.com/juju/errors"
8
+	"go.uber.org/zap"
8 9
 )
9 10
 
10 11
 type StreamCipher struct {
11 12
 	encryptor cipher.Stream
12 13
 	decryptor cipher.Stream
13 14
 	conn      StreamReadWriteCloser
15
+	logger    *zap.SugaredLogger
14 16
 }
15 17
 
16 18
 func (s *StreamCipher) Read(p []byte) (int, error) {
@@ -30,20 +32,8 @@ func (s *StreamCipher) Write(p []byte) (int, error) {
30 32
 	return s.conn.Write(encrypted)
31 33
 }
32 34
 
33
-func (s *StreamCipher) LogDebug(msg string, data ...interface{}) {
34
-	s.conn.LogDebug(msg, data...)
35
-}
36
-
37
-func (s *StreamCipher) LogInfo(msg string, data ...interface{}) {
38
-	s.conn.LogInfo(msg, data...)
39
-}
40
-
41
-func (s *StreamCipher) LogWarn(msg string, data ...interface{}) {
42
-	s.conn.LogWarn(msg, data...)
43
-}
44
-
45
-func (s *StreamCipher) LogError(msg string, data ...interface{}) {
46
-	s.conn.LogError(msg, data...)
35
+func (s *StreamCipher) Logger() *zap.SugaredLogger {
36
+	return s.logger
47 37
 }
48 38
 
49 39
 func (s *StreamCipher) LocalAddr() *net.TCPAddr {
@@ -61,6 +51,7 @@ func (s *StreamCipher) Close() error {
61 51
 func NewStreamCipher(conn StreamReadWriteCloser, encryptor, decryptor cipher.Stream) StreamReadWriteCloser {
62 52
 	return &StreamCipher{
63 53
 		conn:      conn,
54
+		logger:    conn.Logger().Named("stream-cipher"),
64 55
 		encryptor: encryptor,
65 56
 		decryptor: decryptor,
66 57
 	}

+ 3
- 5
wrappers/wrap.go Visa fil

@@ -3,14 +3,12 @@ package wrappers
3 3
 import (
4 4
 	"io"
5 5
 	"net"
6
+
7
+	"go.uber.org/zap"
6 8
 )
7 9
 
8 10
 type Wrap interface {
9
-	LogDebug(msg string, data ...interface{})
10
-	LogInfo(msg string, data ...interface{})
11
-	LogWarn(msg string, data ...interface{})
12
-	LogError(msg string, data ...interface{})
13
-
11
+	Logger() *zap.SugaredLogger
14 12
 	LocalAddr() *net.TCPAddr
15 13
 	RemoteAddr() *net.TCPAddr
16 14
 }

Laddar…
Avbryt
Spara