feat(cheatcodes): add getRecordedLogsJson cheatcode #13093
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Adds a new cheatcode
getRecordedLogsJsonthat returns recorded logs as a JSON string, similar to the existinggetStateDiffJsonpattern.This allows users to easily post-process recorded logs externally without needing to manually transform the
Log[]array to JSON.Motivation
Closes #12854
Users heavily rely on log analysis for simulation and auditing purposes. Currently they have to use
recordLogs-> custom transform to JSON ->writeJson, which is cumbersome. This cheatcode provides a native way to get recorded logs as JSON for external processing.JSON Format
[ { "topics": ["0x...", "0x..."], "data": "0x...", "emitter": "0x..." } ]All binary fields are hex-encoded with
0xprefix.Changes
getRecordedLogsJson()function declaration invm.rsLogJsonstruct for JSON serializationgetStateDiffJsonTesting
testRecordedLogsJson: Verifies emitter address, topics (event signature + indexed args), and hex-encoded datatestRecordedLogsJsonEmpty: Verifies empty logs returns[]