Class: Steno::Codec::Json

Inherits:
Base show all
Defined in:
lib/steno/codec/json.rb

Instance Method Summary collapse

Instance Method Details

#encode_record(record) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/steno/codec/json.rb', line 11

def encode_record(record)
  msg =
    if record.message.valid_encoding?
      record.message
    else
      # Treat the message as an arbitrary sequence of bytes.
      escape_nonprintable_ascii(record.message.dup.force_encoding("BINARY"))
    end

  h = {
    "timestamp"  => record.timestamp.to_f,
    "message"    => msg,
    "log_level"  => record.log_level.to_s,
    "source"     => record.source,
    "data"       => record.data,
    "thread_id"  => record.thread_id,
    "fiber_id"   => record.fiber_id,
    "process_id" => record.process_id,
    "file"       => record.file,
    "lineno"     => record.lineno,
    "method"     => record.method,
  }

  Yajl::Encoder.encode(h) + "\n"
end