Class: Browserctl::Trace::Renderer

Inherits:
Object
  • Object
show all
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

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