You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
package main
import ( "flag" "fmt" "io" "log" "os"
"google.golang.org/protobuf/proto"
"github.com/seaweedfs/seaweedfs/weed/filer" "github.com/seaweedfs/seaweedfs/weed/pb/filer_pb" "github.com/seaweedfs/seaweedfs/weed/util" )
var ( logdataFile = flag.String("logdata", "", "log data file saved under "+filer.SystemLogDir) )
func main() { flag.Parse()
dst, err := os.OpenFile(*logdataFile, os.O_RDONLY, 0644) if err != nil { log.Fatalf("failed to open %s: %v", *logdataFile, err) } defer dst.Close()
err = walkLogEntryFile(dst) if err != nil { log.Fatalf("failed to visit %s: %v", *logdataFile, err) }
}
func walkLogEntryFile(dst *os.File) error {
sizeBuf := make([]byte, 4)
for { if n, err := dst.Read(sizeBuf); n != 4 { if err == io.EOF { return nil } return err }
size := util.BytesToUint32(sizeBuf)
data := make([]byte, int(size))
if n, err := dst.Read(data); n != len(data) { return err }
logEntry := &filer_pb.LogEntry{} err := proto.Unmarshal(data, logEntry) if err != nil { log.Printf("unexpected unmarshal filer_pb.LogEntry: %v", err) return nil }
event := &filer_pb.SubscribeMetadataResponse{} err = proto.Unmarshal(logEntry.Data, event) if err != nil { log.Printf("unexpected unmarshal filer_pb.SubscribeMetadataResponse: %v", err) return nil }
fmt.Printf("event: %+v\n", event)
}
}
|