@@ -72,9 +72,8 @@ func NewBaseRecord(rawLog string) (BaseRecord, error) {
7272 }
7373
7474 tag := fields [1 ] // e.g: Begin
75- firstIndex := strings .Index (rawLog , tag )
76- value := rawLog [firstIndex + len (tag ):]
77- value = strings .TrimLeft (value , " \t " )
75+ _ , after , _ := strings .Cut (rawLog , tag )
76+ value := strings .TrimLeft (after , " \t " )
7877
7978 return BaseRecord {Tag : tag , RawValue : value , rawLog : rawLog }, nil
8079}
@@ -239,8 +238,12 @@ type BackendOpenRecord struct {
239238 Reason string // connect or reuse
240239}
241240
241+ func (r BackendOpenRecord ) ConnStr () string {
242+ return net .JoinHostPort (r .RemoteAddr .String (), fmt .Sprintf ("%d" , r .RemotePort ))
243+ }
244+
242245func (r BackendOpenRecord ) String () string {
243- return fmt .Sprintf ("%s (%s:%d ) %s" , r .Name , r .RemoteAddr . String (), r . RemotePort , r .Reason )
246+ return fmt .Sprintf ("%s (%s) %s" , r .Name , r .ConnStr () , r .Reason )
244247}
245248
246249func NewBackendOpenRecord (blr BaseRecord ) (BackendOpenRecord , error ) {
@@ -254,7 +257,7 @@ func NewBackendOpenRecord(blr BaseRecord) (BackendOpenRecord, error) {
254257 return BackendOpenRecord {}, fmt .Errorf ("conversion to BackendOpenRecord failed, bad file descriptor on line %q" , blr .GetRawLog ())
255258 }
256259
257- remoteAddr := net .ParseIP (parts [2 ])
260+ remoteAddr := net .ParseIP (strings . Trim ( parts [2 ], "[]" ) )
258261 if remoteAddr == nil {
259262 return BackendOpenRecord {}, fmt .Errorf ("conversion to BackendOpenRecord failed, bad remoteAddr on line %q" , blr .GetRawLog ())
260263 }
@@ -264,7 +267,7 @@ func NewBackendOpenRecord(blr BaseRecord) (BackendOpenRecord, error) {
264267 return BackendOpenRecord {}, fmt .Errorf ("conversion to BackendOpenRecord failed, bad remotePort on line %q" , blr .GetRawLog ())
265268 }
266269
267- localAddr := net .ParseIP (parts [4 ])
270+ localAddr := net .ParseIP (strings . Trim ( parts [4 ], "[]" ) )
268271 if localAddr == nil {
269272 return BackendOpenRecord {}, fmt .Errorf ("conversion to BackendOpenRecord failed, bad localAddr on line %q" , blr .GetRawLog ())
270273 }
@@ -298,13 +301,21 @@ type BackendStartRecord struct {
298301 RemotePort int // Remote port
299302}
300303
304+ func (r BackendStartRecord ) ConnStr () string {
305+ return net .JoinHostPort (r .RemoteAddr .String (), fmt .Sprintf ("%d" , r .RemotePort ))
306+ }
307+
308+ func (r BackendStartRecord ) String () string {
309+ return r .ConnStr ()
310+ }
311+
301312func NewBackendStartRecord (blr BaseRecord ) (BackendStartRecord , error ) {
302313 parts := strings .Fields (blr .GetRawValue ())
303314 if len (parts ) < 2 {
304315 return BackendStartRecord {}, fmt .Errorf ("conversion to BackendStartRecord failed, incorrect len on line %q" , blr .GetRawLog ())
305316 }
306317
307- remoteAddr := net .ParseIP (parts [0 ] )
318+ remoteAddr := net .ParseIP (strings . Trim ( parts [2 ], "[]" ) )
308319 if remoteAddr == nil {
309320 return BackendStartRecord {}, fmt .Errorf ("conversion to BackendStartRecord failed, bad remoteAddr on line %q" , blr .GetRawLog ())
310321 }
@@ -536,13 +547,21 @@ type ReqStartRecord struct {
536547 Listener string // Listener name (from -a)
537548}
538549
550+ func (r ReqStartRecord ) ConnStr () string {
551+ return net .JoinHostPort (r .ClientIP .String (), fmt .Sprintf ("%d" , r .ClientPort ))
552+ }
553+
554+ func (r ReqStartRecord ) String () string {
555+ return r .ConnStr () + " " + r .Listener
556+ }
557+
539558func NewReqStartRecord (blr BaseRecord ) (ReqStartRecord , error ) {
540559 parts := strings .Fields (blr .GetRawValue ())
541560 if len (parts ) != 3 {
542561 return ReqStartRecord {}, fmt .Errorf ("conversion to ReqStartRecord failed, incorrect len on line %q" , blr .GetRawLog ())
543562 }
544563
545- clientIP := net .ParseIP (parts [0 ])
564+ clientIP := net .ParseIP (strings . Trim ( parts [0 ], "[]" ) )
546565 if clientIP == nil {
547566 return ReqStartRecord {}, fmt .Errorf ("conversion to BackendOpenRecord failed, bad clientAddr on line %q" , blr .GetRawLog ())
548567 }
@@ -982,11 +1001,14 @@ type SessOpenRecord struct {
9821001 FileDescriptor int // File descriptor number
9831002}
9841003
1004+ func (r SessOpenRecord ) ConnStr () string {
1005+ return net .JoinHostPort (r .RemoteAddr .String (), fmt .Sprintf ("%d" , r .RemotePort ))
1006+ }
1007+
9851008func (r SessOpenRecord ) String () string {
9861009 return fmt .Sprintf (
987- "%s:%d %s %s:%d (%s) %d" ,
988- r .RemoteAddr ,
989- r .RemotePort ,
1010+ "%s %s %s:%d (%s) %d" ,
1011+ r .ConnStr (),
9901012 r .SocketName ,
9911013 r .LocalAddr ,
9921014 r .LocalPort ,
@@ -1001,7 +1023,7 @@ func NewSessOpenRecord(blr BaseRecord) (SessOpenRecord, error) {
10011023 return SessOpenRecord {}, fmt .Errorf ("conversion to SessOpenRecord failed, incorrect len on line %q" , blr .GetRawLog ())
10021024 }
10031025
1004- remoteAddr := net .ParseIP (parts [0 ])
1026+ remoteAddr := net .ParseIP (strings . Trim ( parts [0 ], "[]" ) )
10051027 if remoteAddr == nil {
10061028 return SessOpenRecord {}, fmt .Errorf ("conversion to SessOpenRecord failed, bad remoteAddr on line %q" , blr .GetRawLog ())
10071029 }
@@ -1011,7 +1033,7 @@ func NewSessOpenRecord(blr BaseRecord) (SessOpenRecord, error) {
10111033 return SessOpenRecord {}, fmt .Errorf ("conversion to SessOpenRecord failed, bad remotePort on line %q" , blr .GetRawLog ())
10121034 }
10131035
1014- localAddr := net .ParseIP (parts [3 ])
1036+ localAddr := net .ParseIP (strings . Trim ( parts [3 ], "[]" ) )
10151037 if localAddr == nil {
10161038 return SessOpenRecord {}, fmt .Errorf ("conversion to SessOpenRecord failed, bad localAddr on line %q" , blr .GetRawLog ())
10171039 }
0 commit comments