@@ -3,9 +3,11 @@ package states
33import (
44 "context"
55 "fmt"
6+ "os"
67 "path"
78
89 "github.com/cockroachdb/errors"
10+ "google.golang.org/protobuf/encoding/protojson"
911 "google.golang.org/protobuf/proto"
1012
1113 "github.com/milvus-io/birdwatcher/framework"
@@ -25,10 +27,19 @@ type ConsumeParam struct {
2527 Topic string `name:"topic" default:"" desc:"topic to consume"`
2628 ShardName string `name:"shard_name" default:"" desc:"shard name(vchannel name) to filter with"`
2729 Detail bool `name:"detail" default:"false" desc:"print msg detail"`
28- ManualID int64 `name:"manual_id" default:"0" desc:"manual id"`
30+ ManualID string `name:"manual-id" default:"" desc:"manual id"`
31+ OutputFile string `name:"output-file" default:"" desc:"output file"`
2932}
3033
3134func (s * InstanceState ) ConsumeCommand (ctx context.Context , p * ConsumeParam ) error {
35+ of := os .Stdout
36+ if p .OutputFile != "" {
37+ var err error
38+ if of , err = os .OpenFile (p .OutputFile , os .O_CREATE | os .O_WRONLY | os .O_APPEND , 0644 ); err != nil {
39+ return err
40+ }
41+ }
42+
3243 var messageID ifc.MessageID
3344 switch p .StartPosition {
3445 case "cp" :
@@ -94,15 +105,20 @@ func (s *InstanceState) ConsumeCommand(ctx context.Context, p *ConsumeParam) err
94105 fmt .Printf ("%s " , msgType )
95106 switch msgType {
96107 case commonpb .MsgType_Insert , commonpb .MsgType_Delete :
108+ msgID := msg .ID ()
97109 v , err := ParseMsg (header .GetBase ().GetMsgType (), msg .Payload ())
98110 if err != nil {
99111 fmt .Println (err .Error ())
100112 }
101113 if p .ShardName == "" || v .GetShardName () == p .ShardName {
114+ fmt .Fprintf (of , "MsgID: %s, Shard: %s\n " , msgID .String (), v .GetShardName ())
102115 if p .Detail {
103- fmt .Print (v )
116+ if s , err := protojson .Marshal (v ); err == nil {
117+ fmt .Fprintln (of , string (s ))
118+ } else {
119+ fmt .Fprintln (of , err .Error ())
120+ }
104121 } else {
105- fmt .Print (v .GetShardName ())
106122 err := ValidateMsg (msgType , msg .Payload ())
107123 if err != nil {
108124 fmt .Println (err .Error ())
@@ -111,7 +127,7 @@ func (s *InstanceState) ConsumeCommand(ctx context.Context, p *ConsumeParam) err
111127 }
112128 default :
113129 }
114- fmt .Println ( )
130+ fmt .Fprintln ( of )
115131 }
116132 if eq , _ := msg .ID ().Equal (latestID .Serialize ()); eq {
117133 break
0 commit comments