mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-22 20:56:42 +00:00
Update logger.go
This commit is contained in:
parent
2da0d290ae
commit
19daa89117
1 changed files with 16 additions and 63 deletions
|
|
@ -94,78 +94,35 @@ func (s *StructLog) ErrorString() string {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
// WriteTo writes the human-readable log data into the supplied writer.
|
// Write writes the human-readable log data into the supplied writer.
|
||||||
func (s *StructLog) WriteTo(writer io.Writer) (int64, error) {
|
func (s *StructLog) Write(writer io.Writer) {
|
||||||
var written int64
|
fmt.Fprintf(writer, "%-16spc=%08d gas=%v cost=%v", s.Op, s.Pc, s.Gas, s.GasCost)
|
||||||
|
|
||||||
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
|
|
||||||
}
|
|
||||||
if s.Err != nil {
|
if s.Err != nil {
|
||||||
if err := writef(" ERROR: %v", s.Err); err != nil {
|
fmt.Fprintf(writer, " ERROR: %v", s.Err)
|
||||||
return written, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if err := writeln(); err != nil {
|
|
||||||
return written, err
|
|
||||||
}
|
}
|
||||||
|
fmt.Fprintln(writer)
|
||||||
|
|
||||||
if len(s.Stack) > 0 {
|
if len(s.Stack) > 0 {
|
||||||
if err := write("Stack:\n"); err != nil {
|
fmt.Fprintln(writer, "Stack:")
|
||||||
return written, err
|
|
||||||
}
|
|
||||||
for i := len(s.Stack) - 1; i >= 0; i-- {
|
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 {
|
fmt.Fprintf(writer, "%08d %s\n", len(s.Stack)-i-1, s.Stack[i].Hex())
|
||||||
return written, err
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if len(s.Memory) > 0 {
|
if len(s.Memory) > 0 {
|
||||||
if err := write("Memory:\n"); err != nil {
|
fmt.Fprintln(writer, "Memory:")
|
||||||
return written, err
|
fmt.Fprint(writer, hex.Dump(s.Memory))
|
||||||
}
|
|
||||||
if err := write(hex.Dump(s.Memory)); err != nil {
|
|
||||||
return written, err
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if len(s.Storage) > 0 {
|
if len(s.Storage) > 0 {
|
||||||
if err := write("Storage:\n"); err != nil {
|
fmt.Fprintln(writer, "Storage:")
|
||||||
return written, err
|
|
||||||
}
|
|
||||||
for h, item := range s.Storage {
|
for h, item := range s.Storage {
|
||||||
if err := writef("%x: %x\n", h, item); err != nil {
|
fmt.Fprintf(writer, "%x: %x\n", h, item)
|
||||||
return written, err
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if len(s.ReturnData) > 0 {
|
if len(s.ReturnData) > 0 {
|
||||||
if err := write("ReturnData:\n"); err != nil {
|
fmt.Fprintln(writer, "ReturnData:")
|
||||||
return written, err
|
fmt.Fprint(writer, hex.Dump(s.ReturnData))
|
||||||
}
|
}
|
||||||
if err := write(hex.Dump(s.ReturnData)); err != nil {
|
fmt.Fprintln(writer)
|
||||||
return written, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if err := writeln(); err != nil {
|
|
||||||
return written, err
|
|
||||||
}
|
|
||||||
return written, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// structLogLegacy stores a structured log emitted by the EVM while replaying a
|
// 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)
|
l.logs = append(l.logs, entry)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if _, err := log.WriteTo(l.writer); err != nil {
|
log.Write(l.writer)
|
||||||
l.Stop(err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// OnExit is called a call frame finishes processing.
|
// OnExit is called a call frame finishes processing.
|
||||||
|
|
@ -450,9 +405,7 @@ func (l *StructLogger) Output() []byte { return l.output }
|
||||||
// @deprecated
|
// @deprecated
|
||||||
func WriteTrace(writer io.Writer, logs []StructLog) {
|
func WriteTrace(writer io.Writer, logs []StructLog) {
|
||||||
for _, log := range logs {
|
for _, log := range logs {
|
||||||
if _, err := log.WriteTo(writer); err != nil {
|
log.Write(writer)
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue