Class: Maze::LogUtil

Inherits:
Object
  • Object
show all
Defined in:
lib/maze/logger.rb

Overview

A collection of logging utilities

Class Method Summary collapse

Class Method Details

.linkify(url, text) ⇒ Object

Produces a clickable link when logged in Buildkite

Parameters:

  • url (String)

    Link URL

  • text (String)

    Link text



77
78
79
80
81
82
83
# File 'lib/maze/logger.rb', line 77

def linkify(url, text)
  if ENV['BUILDKITE']
    "\033]1339;url='#{url}';content='#{text}'\a"
  else
    "#{text}: #{url}"
  end
end

.log_hash(severity, data) ⇒ Object

Logs Hash-based data, accounting for things like file upload requests that are too big to log meaningfully.

Parameters:

  • severity (Integer)

    A constant from Logger::Severity

  • data (Hash)

    The data to log (currently needs to be a Hash)



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/maze/logger.rb', line 42

def log_hash(severity, data)
  return unless data.is_a? Hash

  # Try to pretty print as JSON, if not too big
  begin
    json = JSON.pretty_generate data
    if json.length < 128 * 1024
      $logger.add severity, json
    else
      log_hash_by_field severity, data
    end
  rescue Encoding::UndefinedConversionError
    log_hash_by_field severity, data
  end
end

.log_hash_by_field(severity, hash) ⇒ Object

Logs a hash field by field,

Parameters:

  • severity (Integer)

    A Logger::Severity

  • hash (Hash)

    The Hash



62
63
64
65
66
67
68
69
70
71
72
# File 'lib/maze/logger.rb', line 62

def log_hash_by_field(severity, hash)
  hash.keys.each do |key|
    value = hash[key].to_s
    if value.length < 1024
      $logger.add severity, "  #{key}: #{value}"
    else
      $logger.add severity, "  #{key} (length): #{value.length}"
      $logger.add severity, "  #{key} (start): #{value[0, 1024]}"
    end
  end
end