Class: Browserctl::Trace::Renderer
- Inherits:
-
Object
- Object
- Browserctl::Trace::Renderer
- Defined in:
- lib/browserctl/trace/renderer.rb
Overview
Renders structured log records as a human-scannable timeline. Output format is intentionally compact:
HH:MM:SS.mmm I LEVEL COMPONENT LABEL k=v k=v
Colour is enabled when the target IO is a TTY (or when ‘color: true` is forced). Redaction is optional and injected as a dependency so callers can substitute a stricter `Browserctl::Redactor` or pass `nil` to disable.
Constant Summary collapse
- LEVEL_COLORS =
{ "DEBUG" => "\e[2;37m", # dim grey "INFO" => "\e[36m", # cyan "WARN" => "\e[33m", # yellow "ERROR" => "\e[31m" # red }.freeze
- RESET =
red
"\e[0m"- CATEGORY_ICONS =
{ error: "!", snapshot: "S", network: "N", event: "." }.freeze
- OMIT_KEYS =
%w[ts level component event msg].freeze
Instance Method Summary collapse
-
#initialize(io:, color: nil, redactor: nil) ⇒ Renderer
constructor
A new instance of Renderer.
- #render(stream) ⇒ Object
Constructor Details
#initialize(io:, color: nil, redactor: nil) ⇒ Renderer
Returns a new instance of Renderer.
34 35 36 37 38 |
# File 'lib/browserctl/trace/renderer.rb', line 34 def initialize(io:, color: nil, redactor: nil) @io = io @color = color.nil? ? tty?(io) : color @redactor = redactor end |
Instance Method Details
#render(stream) ⇒ Object
40 41 42 |
# File 'lib/browserctl/trace/renderer.rb', line 40 def render(stream) stream.each { |record| @io.puts(format_line(record)) } end |