Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 25 additions & 3 deletions lib/appydays/loggable/sequel_logger.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,34 @@ class Sequel::Database
# Use nil to disable the full message logging.
module AppydaysLogger
class << self
attr_accessor :truncate_messages_over, :truncation_message, :truncation_context, :log_full_message_level
# Messages more than this many characters are truncated.
# Defaults to 2000.
attr_accessor :truncate_messages_over

# Placeholder message when truncation occurs.
# Defaults to '<truncated>'.
attr_accessor :truncation_message

# How many characters to preserve before and after truncation.
# Defaults to 200 (400 total).
attr_accessor :truncation_context

# If set, log the full message at this level when truncation occurs.
# For example, a truncated message may be logged at :info,
# and the full message logged at +:default+.
# Defaults to +nil+ (does not log full messages when truncation occurs).
attr_accessor :log_full_message_level

# Log slow queries at this level.
# See +Sequel::Database#log_warn_duration+.
# Default to +:warn+.
attr_accessor :slow_query_log_level

def setdefaults
@truncate_messages_over = 2000
@truncation_message = "<truncated, full message logged at debug>"
@truncation_message = "<truncated>"
@truncation_context = 200
@slow_query_log_level = :warn
end

def truncate_message(message)
Expand Down Expand Up @@ -58,7 +80,7 @@ def log_duration(duration, message)
lwd = log_warn_duration
was_truncated = false
log_each(
lwd && (duration >= lwd) ? :warn : sql_log_level,
lwd && (duration >= lwd) ? AppydaysLogger.slow_query_log_level : sql_log_level,
proc { "(#{'%0.6fs' % duration}) #{message}" },
proc do
query = AppydaysLogger.truncate_message(message)
Expand Down
14 changes: 13 additions & 1 deletion lib/appydays/loggable/sidekiq_job_logger.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,14 @@ class Appydays::Loggable::SidekiqJobLogger < Sidekiq::JobLogger

Sidekiq.logger = self.logger

# Level to log 'job_done' messages at.
# Defaults to +:info+.
attr_accessor :log_level_job_done

# Level to log slow jobs at.
# Defaults to +:warn+.
attr_accessor :log_level_slow_job

def call(item, _queue, &)
start = self.now
self.with_log_tags(job_id: item["jid"]) do
Expand All @@ -38,7 +46,11 @@ def call(item, _queue, &)
extra_tags = {job_class: item["class"], thread_id: self.tid}
yield
duration = self.elapsed(start)
log_method = duration >= self.slow_job_seconds ? :warn : :info
log_method = if duration >= self.slow_job_seconds
(self.log_level_slow_job || :warn)
else
(self.log_level_job_done || :info)
end
self.logger.send(log_method, "job_done", duration: duration * 1000, **extra_tags, **self.class.job_tags)
rescue StandardError
# Do not log the error since it is probably a sidekiq retry error
Expand Down
Loading