11package tarantool
22
33import (
4+ "fmt"
45 "log/slog"
56 "net"
67 "time"
78)
89
910type LogEvent interface {
1011 EventName () string
12+ Message () string
1113 LogLevel () slog.Level
1214 LogAttrs () []slog.Attr
1315}
@@ -41,14 +43,35 @@ type ReconnectFailedEvent struct {
4143 MaxReconnects uint
4244 Error error
4345 IsInitial bool
46+ IsLast bool
47+ }
48+
49+ func (e ReconnectFailedEvent ) EventName () string {
50+ if e .IsLast {
51+ return "last_reconnect_failed"
52+ }
53+ return "reconnect_failed"
54+ }
55+
56+ func (e ReconnectFailedEvent ) Message () string {
57+ if e .IsInitial {
58+ if e .IsLast {
59+ return "Initial connection failed, giving up"
60+ }
61+ return "Initial connection failed"
62+ }
63+ if e .IsLast {
64+ return "Last reconnect attempt failed, giving up"
65+ }
66+ return "Reconnect attempt failed"
4467}
4568
46- func (e ReconnectFailedEvent ) EventName () string { return "reconnect_failed" }
4769func (e ReconnectFailedEvent ) LogLevel () slog.Level { return slog .LevelError }
4870func (e ReconnectFailedEvent ) LogAttrs () []slog.Attr {
4971 attrs := e .baseAttrs ()
5072 attrs = append (attrs ,
5173 slog .String ("event" , e .EventName ()),
74+ slog .String ("message" , e .Message ()),
5275 slog .Uint64 ("reconnects" , uint64 (e .Reconnects )),
5376 slog .Uint64 ("max_reconnects" , uint64 (e .MaxReconnects )),
5477 slog .String ("error" , e .Error .Error ()),
@@ -57,28 +80,15 @@ func (e ReconnectFailedEvent) LogAttrs() []slog.Attr {
5780 return attrs
5881}
5982
60- type LastReconnectFailedEvent struct {
61- baseEvent
62- Error error
63- }
64-
65- func (e LastReconnectFailedEvent ) EventName () string { return "last_reconnect_failed" }
66- func (e LastReconnectFailedEvent ) LogLevel () slog.Level { return slog .LevelError }
67- func (e LastReconnectFailedEvent ) LogAttrs () []slog.Attr {
68- attrs := e .baseAttrs ()
69- attrs = append (attrs ,
70- slog .String ("event" , e .EventName ()),
71- slog .String ("error" , e .Error .Error ()),
72- )
73- return attrs
74- }
75-
7683type UnexpectedResultIdEvent struct {
7784 baseEvent
7885 RequestId uint32
7986}
8087
81- func (e UnexpectedResultIdEvent ) EventName () string { return "unexpected_result_id" }
88+ func (e UnexpectedResultIdEvent ) EventName () string { return "unexpected_result_id" }
89+ func (e UnexpectedResultIdEvent ) Message () string {
90+ return fmt .Sprintf ("Received response with unexpected request ID %d" , e .RequestId )
91+ }
8292func (e UnexpectedResultIdEvent ) LogLevel () slog.Level { return slog .LevelWarn }
8393func (e UnexpectedResultIdEvent ) LogAttrs () []slog.Attr {
8494 attrs := e .baseAttrs ()
@@ -94,7 +104,10 @@ type WatchEventReadFailedEvent struct {
94104 Error error
95105}
96106
97- func (e WatchEventReadFailedEvent ) EventName () string { return "watch_event_read_failed" }
107+ func (e WatchEventReadFailedEvent ) EventName () string { return "watch_event_read_failed" }
108+ func (e WatchEventReadFailedEvent ) Message () string {
109+ return fmt .Sprintf ("Failed to parse watch event: %s" , e .Error )
110+ }
98111func (e WatchEventReadFailedEvent ) LogLevel () slog.Level { return slog .LevelWarn }
99112func (e WatchEventReadFailedEvent ) LogAttrs () []slog.Attr {
100113 attrs := e .baseAttrs ()
@@ -110,7 +123,10 @@ type BoxSessionPushUnsupportedEvent struct {
110123 RequestId uint32
111124}
112125
113- func (e BoxSessionPushUnsupportedEvent ) EventName () string { return "box_session_push_unsupported" }
126+ func (e BoxSessionPushUnsupportedEvent ) EventName () string { return "box_session_push_unsupported" }
127+ func (e BoxSessionPushUnsupportedEvent ) Message () string {
128+ return fmt .Sprintf ("Unsupported box.session.push() for request %d" , e .RequestId )
129+ }
114130func (e BoxSessionPushUnsupportedEvent ) LogLevel () slog.Level { return slog .LevelWarn }
115131func (e BoxSessionPushUnsupportedEvent ) LogAttrs () []slog.Attr {
116132 attrs := e .baseAttrs ()
@@ -126,7 +142,13 @@ type ConnectedEvent struct {
126142 Reconnects uint
127143}
128144
129- func (e ConnectedEvent ) EventName () string { return "connected" }
145+ func (e ConnectedEvent ) EventName () string { return "connected" }
146+ func (e ConnectedEvent ) Message () string {
147+ if e .Reconnects == 0 {
148+ return "Connected to Tarantool"
149+ }
150+ return "Reconnected to Tarantool"
151+ }
130152func (e ConnectedEvent ) LogLevel () slog.Level { return slog .LevelInfo }
131153func (e ConnectedEvent ) LogAttrs () []slog.Attr {
132154 attrs := e .baseAttrs ()
@@ -142,7 +164,13 @@ type DisconnectedEvent struct {
142164 Reason error
143165}
144166
145- func (e DisconnectedEvent ) EventName () string { return "disconnected" }
167+ func (e DisconnectedEvent ) EventName () string { return "disconnected" }
168+ func (e DisconnectedEvent ) Message () string {
169+ if e .Reason != nil {
170+ return fmt .Sprintf ("Disconnected from Tarantool: %s" , e .Reason )
171+ }
172+ return "Disconnected from Tarantool"
173+ }
146174func (e DisconnectedEvent ) LogLevel () slog.Level { return slog .LevelWarn }
147175func (e DisconnectedEvent ) LogAttrs () []slog.Attr {
148176 attrs := e .baseAttrs ()
@@ -169,6 +197,7 @@ type ClosedEvent struct {
169197}
170198
171199func (e ClosedEvent ) EventName () string { return "closed" }
200+ func (e ClosedEvent ) Message () string { return "Connection closed" }
172201func (e ClosedEvent ) LogLevel () slog.Level { return slog .LevelInfo }
173202func (e ClosedEvent ) LogAttrs () []slog.Attr {
174203 attrs := e .baseAttrs ()
@@ -183,7 +212,19 @@ type ConnectionPoolEvent struct {
183212 Event string
184213}
185214
186- func (e ConnectionPoolEvent ) EventName () string { return "connection_pool_" + e .Event }
215+ func (e ConnectionPoolEvent ) EventName () string { return "connection_pool_" + e .Event }
216+ func (e ConnectionPoolEvent ) Message () string {
217+ switch e .Event {
218+ case "added" :
219+ return "Connection added to pool"
220+ case "removed" :
221+ return "Connection removed from pool"
222+ case "full" :
223+ return "Connection pool is full"
224+ default :
225+ return "Connection pool event: " + e .Event
226+ }
227+ }
187228func (e ConnectionPoolEvent ) LogLevel () slog.Level { return slog .LevelInfo }
188229func (e ConnectionPoolEvent ) LogAttrs () []slog.Attr {
189230 attrs := e .baseAttrs ()
@@ -202,7 +243,10 @@ type TimeoutEvent struct {
202243 Timeout time.Duration
203244}
204245
205- func (e TimeoutEvent ) EventName () string { return "timeout" }
246+ func (e TimeoutEvent ) EventName () string { return "timeout" }
247+ func (e TimeoutEvent ) Message () string {
248+ return fmt .Sprintf ("Request %d timed out after %s" , e .RequestId , e .Timeout )
249+ }
206250func (e TimeoutEvent ) LogLevel () slog.Level { return slog .LevelWarn }
207251func (e TimeoutEvent ) LogAttrs () []slog.Attr {
208252 attrs := e .baseAttrs ()
0 commit comments