diff --git a/eth/tracers/logger/logger.go b/eth/tracers/logger/logger.go index b8d63ecb27..67e07f78d0 100644 --- a/eth/tracers/logger/logger.go +++ b/eth/tracers/logger/logger.go @@ -94,78 +94,35 @@ func (s *StructLog) ErrorString() string { return "" } -// WriteTo writes the human-readable log data into the supplied writer. -func (s *StructLog) WriteTo(writer io.Writer) (int64, error) { - var written int64 - - writef := func(format string, args ...interface{}) error { - n, err := fmt.Fprintf(writer, format, args...) - written += int64(n) - return err - } - write := func(text string) error { - n, err := io.WriteString(writer, text) - written += int64(n) - return err - } - writeln := func() error { - n, err := fmt.Fprintln(writer) - written += int64(n) - return err - } - - if err := writef("%-16spc=%08d gas=%v cost=%v", s.Op, s.Pc, s.Gas, s.GasCost); err != nil { - return written, err - } +// Write writes the human-readable log data into the supplied writer. +func (s *StructLog) Write(writer io.Writer) { + fmt.Fprintf(writer, "%-16spc=%08d gas=%v cost=%v", s.Op, s.Pc, s.Gas, s.GasCost) if s.Err != nil { - if err := writef(" ERROR: %v", s.Err); err != nil { - return written, err - } - } - if err := writeln(); err != nil { - return written, err + fmt.Fprintf(writer, " ERROR: %v", s.Err) } + fmt.Fprintln(writer) if len(s.Stack) > 0 { - if err := write("Stack:\n"); err != nil { - return written, err - } + fmt.Fprintln(writer, "Stack:") for i := len(s.Stack) - 1; i >= 0; i-- { - if err := writef("%08d %s\n", len(s.Stack)-i-1, s.Stack[i].Hex()); err != nil { - return written, err - } + fmt.Fprintf(writer, "%08d %s\n", len(s.Stack)-i-1, s.Stack[i].Hex()) } } if len(s.Memory) > 0 { - if err := write("Memory:\n"); err != nil { - return written, err - } - if err := write(hex.Dump(s.Memory)); err != nil { - return written, err - } + fmt.Fprintln(writer, "Memory:") + fmt.Fprint(writer, hex.Dump(s.Memory)) } if len(s.Storage) > 0 { - if err := write("Storage:\n"); err != nil { - return written, err - } + fmt.Fprintln(writer, "Storage:") for h, item := range s.Storage { - if err := writef("%x: %x\n", h, item); err != nil { - return written, err - } + fmt.Fprintf(writer, "%x: %x\n", h, item) } } if len(s.ReturnData) > 0 { - if err := write("ReturnData:\n"); err != nil { - return written, err - } - if err := write(hex.Dump(s.ReturnData)); err != nil { - return written, err - } + fmt.Fprintln(writer, "ReturnData:") + fmt.Fprint(writer, hex.Dump(s.ReturnData)) } - if err := writeln(); err != nil { - return written, err - } - return written, nil + fmt.Fprintln(writer) } // structLogLegacy stores a structured log emitted by the EVM while replaying a @@ -367,9 +324,7 @@ func (l *StructLogger) OnOpcode(pc uint64, opcode byte, gas, cost uint64, scope l.logs = append(l.logs, entry) return } - if _, err := log.WriteTo(l.writer); err != nil { - l.Stop(err) - } + log.Write(l.writer) } // OnExit is called a call frame finishes processing. @@ -450,9 +405,7 @@ func (l *StructLogger) Output() []byte { return l.output } // @deprecated func WriteTrace(writer io.Writer, logs []StructLog) { for _, log := range logs { - if _, err := log.WriteTo(writer); err != nil { - return - } + log.Write(writer) } }