Skip to content
This repository has been archived by the owner on Dec 8, 2020. It is now read-only.

Commit

Permalink
Fix tetss
Browse files Browse the repository at this point in the history
  • Loading branch information
binarylogic committed Aug 21, 2016
1 parent c004549 commit fb6ae51
Show file tree
Hide file tree
Showing 15 changed files with 110 additions and 108 deletions.
34 changes: 22 additions & 12 deletions lib/timber/context.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,41 +8,53 @@ class Context
SECURE_RANDOM_LENGTH = 16.freeze

class << self
def _version
@_version ||= const_get(:VERSION)
def json_shell(&block)
{_root_key => yield}
end

def _path
@_path ||= (const_defined?(:PATH) ? const_get(:PATH) : _root_key).to_s
@path ||= Macros::LogfmtEncoder.encode(json_shell { 1 }).split("=").first
end

def _root_key
@_root_key ||= const_get(:ROOT_KEY)
end

def _version
@_version ||= const_get(:VERSION)
end
end

def _dt
@_dt ||= Time.now.utc
end

def _version
self.class._version
end

def _path
self.class._path
end

def _version
self.class._version
end

def _root_key
self.class._root_key
end

def as_json(*args)
@as_json ||= json_shell { super }
end

def json_shell(&block)
self.class.json_shell(&block)
end

def inspect(*args)
"#<#{self.class.name}:#{object_id} ...>"
end

def to_logfmt
@to_logfmt ||= Macros::LogfmtEncoder.encode(json_payload).freeze
@to_logfmt ||= Macros::LogfmtEncoder.encode(as_json).freeze
end

# Some contexts hold mutable object that change as the context block
Expand All @@ -55,10 +67,8 @@ def valid?
private
def json_payload
@json_payload ||= {
_root_key => {
:_dt => Macros::DateFormatter.format(_dt),
:_version => _version
}
:_dt => Macros::DateFormatter.format(_dt),
:_version => _version
}
end

Expand Down
14 changes: 10 additions & 4 deletions lib/timber/context_snapshot.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ def to_logfmt(options = {})
next if options[:except].is_a?(Array) && options[:except].include?(context.class)
# Delegate to #to_logfmt on the context object for caching.
# Add the index on the fly, as a string, since it's more performant.
context.to_logfmt + " #{context._path}#{Context::PATH_DELIMITER}_index=#{index(context)}"
Macros::LogfmtEncoder.join(context.to_logfmt, "#{context._path}._index=#{index(context)}")
end.compact
items << Macros::LogfmtEncoder.encode(:_version => CONTEXT_VERSION, :_hierarchy => hierarchy)
Macros::LogfmtEncoder.join(*items)
Expand All @@ -34,12 +34,14 @@ def size

private
def context_hash
@context_hash ||= {}.tap do |hash|
hash = stack.inject(hash) do |hash, context|
Macros::DeepMerger.merge(hash, context.as_json)
@context_hash ||= begin
hash = stack.inject({}) do |acc, context|
acc = Macros::DeepMerger.merge(acc, context.as_json)
Macros::DeepMerger.merge(acc, index_hash(context))
end
hash[:_version] = CONTEXT_VERSION
hash[:_hierarchy] = hierarchy
hash
end
end

Expand All @@ -51,6 +53,10 @@ def index(context)
indexes[context] || raise("couldn't find index for #{context}")
end

def index_hash(context)
context.json_shell { {:_index => index(context)}}
end

def json_payload
@json_payload ||= {:context => context_hash}
end
Expand Down
8 changes: 3 additions & 5 deletions lib/timber/contexts/exception.rb
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,9 @@ def message
private
def json_payload
@json_payload ||= Macros::DeepMerger.merge({
_root_key => {
# order is relevant for logfmt styling
:name => name,
:message => message
}
# order is relevant for logfmt styling
:name => name,
:message => message
}, super)
end
end
Expand Down
18 changes: 8 additions & 10 deletions lib/timber/contexts/http_request.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,14 @@ class HTTPRequest < Context
private
def json_payload
@json_payload ||= Macros::DeepMerger.merge({
_root_key => {
# order is relevant for logfmt styling
:method => method,
:scheme => scheme,
:host => host,
:port => port,
:path => path,
:query_params => query_params.as_json,
:headers => headers.as_json
}
# order is relevant for logfmt styling
:method => method,
:scheme => scheme,
:host => host,
:port => port,
:path => path,
:query_params => query_params.as_json,
:headers => headers.as_json
}, super)
end
end
Expand Down
23 changes: 12 additions & 11 deletions lib/timber/contexts/http_requests/action_controller_specific.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,15 @@ module Contexts
module HTTPRequests
# Extend Context since we are a sub context and not an actual HTTPRequest
class ActionControllerSpecific < Context
PATH = "#{Rack._root_key}.action_controller"
ROOT_KEY = :action_controller.freeze
VERSION = 1.freeze

class << self
def json_shell(&block)
Rack.json_shell { super }
end
end

attr_reader :controller_obj

def initialize(controller_obj)
Expand All @@ -30,16 +35,12 @@ def format

private
def json_payload
@json_payload ||= {
Rack._root_key => Macros::DeepMerger.merge({
_root_key => {
# order is relevant for logfmt styling
:controller => controller,
:action => action,
:format => format
}
}, super)
}
@json_payload ||= Macros::DeepMerger.merge({
# order is relevant for logfmt styling
:controller => controller,
:action => action,
:format => format
}, super)
end
end
end
Expand Down
10 changes: 4 additions & 6 deletions lib/timber/contexts/http_response.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,10 @@ class HTTPResponse < Context
private
def json_payload
@json_payload ||= Macros::DeepMerger.merge({
_root_key => {
# order is relevant for logfmt styling
:status => status,
:headers => headers.as_json,
:time_ms => time_ms
}
# order is relevant for logfmt styling
:status => status,
:headers => headers.as_json,
:time_ms => time_ms
}, super)
end
end
Expand Down
8 changes: 3 additions & 5 deletions lib/timber/contexts/logger.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,9 @@ def initialize(level, progname)
private
def json_payload
@json_payload ||= Macros::DeepMerger.merge({
_root_key => {
# order is relevant for logfmt styling
:level => level,
:progname => progname
}
# order is relevant for logfmt styling
:level => level,
:progname => progname
}, super)
end
end
Expand Down
8 changes: 3 additions & 5 deletions lib/timber/contexts/organization.rb
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,9 @@ def valid?
private
def json_payload
@json_payload ||= Macros::DeepMerger.merge({
_root_key => {
# order is relevant for logfmt styling
:id => id,
:name => name
}
# order is relevant for logfmt styling
:id => id,
:name => name
}, super)
end
end
Expand Down
4 changes: 1 addition & 3 deletions lib/timber/contexts/server.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,7 @@ def hostname
private
def json_payload
@json_payload ||= Macros::DeepMerger.merge({
_root_key => {
:hostname => hostname
}
:hostname => hostname
}, super)
end
end
Expand Down
21 changes: 11 additions & 10 deletions lib/timber/contexts/servers/heroku_specific.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,16 @@ module Contexts
module Servers
# Because this is a sub context we do not extend Server.
class HerokuSpecific < Context
PATH = "#{Server._root_key}.heroku"
ROOT_KEY = :heroku.freeze
VERSION = 1.freeze
DELIMITER = ".".freeze

class << self
def json_shell(&block)
Server.json_shell { super }
end
end

attr_reader :dyno

def initialize(dyno)
Expand All @@ -31,15 +36,11 @@ def parts
end

def json_payload
@json_payload ||= {
Server._root_key => Macros::DeepMerger.merge({
_root_key => {
# order is relevant for logfmt styling
:process_type => process_type,
:dyno_id => dyno_id
}
}, super)
}
@json_payload ||= Macros::DeepMerger.merge({
# order is relevant for logfmt styling
:process_type => process_type,
:dyno_id => dyno_id
}, super)
end
end
end
Expand Down
23 changes: 12 additions & 11 deletions lib/timber/contexts/sql_queries/active_record_specific.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,15 @@ module Contexts
module SQLQueries
# Because this is a sub context we extend Context
class ActiveRecordSpecific < Context
PATH = "#{SQLQuery._root_key}.active_record"
ROOT_KEY = :active_record.freeze
VERSION = 1.freeze

class << self
def json_shell(&block)
SQLQuery.json_shell { super }
end
end

attr_reader :log_subscriber, :event

def initialize(log_subscriber, event)
Expand Down Expand Up @@ -37,16 +42,12 @@ def transaction_id

private
def json_payload
@json_payload ||= {
SQLQuery._root_key => Macros::DeepMerger.merge({
_root_key => {
:binds => binds.as_json,
:connection_id => connection_id,
:statement_name => statement_name,
:transaction_id => transaction_id
}
}, super)
}
@json_payload ||= Macros::DeepMerger.merge({
:binds => binds.as_json,
:connection_id => connection_id,
:statement_name => statement_name,
:transaction_id => transaction_id
}, super)
end

def payload
Expand Down
8 changes: 3 additions & 5 deletions lib/timber/contexts/sql_query.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,9 @@ class SQLQuery < Context
private
def json_payload
@json_payload ||= Macros::DeepMerger.merge({
_root_key => {
# order is relevant for logfmt styling
:sql => sql,
:time_ms => time_ms
}
# order is relevant for logfmt styling
:sql => sql,
:time_ms => time_ms
}, super)
end
end
Expand Down
8 changes: 3 additions & 5 deletions lib/timber/contexts/template_render.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,9 @@ class TemplateRender < Context
private
def json_payload
@json_payload ||= Macros::DeepMerger.merge({
_root_key => {
# order is relevant for logfmt styling
:name => name,
:time_ms => time_ms
}
# order is relevant for logfmt styling
:name => name,
:time_ms => time_ms
}, super)
end
end
Expand Down
21 changes: 11 additions & 10 deletions lib/timber/contexts/template_renders/action_view_specific.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,15 @@ module Contexts
module TemplateRenders
# Because this is a sub type we extend Context
class ActionViewSpecific < Context
PATH = "#{TemplateRender._root_key}.action_view"
ROOT_KEY = :action_view.freeze
VERSION = 1.freeze

class << self
def json_shell(&block)
TemplateRender.json_shell { super }
end
end

attr_reader :event

def initialize(event)
Expand All @@ -30,15 +35,11 @@ def layout

private
def json_payload
@json_payload ||= {
TemplateRender._root_key => Macros::DeepMerger.merge({
_root_key => {
:cache_hits => cache_hits,
:count => count,
:layout => layout
}
}, super)
}
@json_payload ||= Macros::DeepMerger.merge({
:cache_hits => cache_hits,
:count => count,
:layout => layout
}, super)
end

def payload
Expand Down
Loading

0 comments on commit fb6ae51

Please sign in to comment.