discourse/config/initializers/102-truncate-logs.rb

32 lines
900 B
Ruby

# frozen_string_literal: true
if Rails.env.production? || ENV["ENABLE_LOGS_TRUNCATION"] == "1"
def set_or_extend_truncate_logs_formatter(logger)
if logger.formatter
logger.formatter.extend(
Module.new do
def call(*args)
truncate_logs_formatter.call(super(*args))
end
def truncate_logs_formatter
@formatter ||=
TruncateLogsFormatter.new(log_line_max_chars: GlobalSetting.log_line_max_chars)
end
end,
)
else
logger.formatter =
TruncateLogsFormatter.new(log_line_max_chars: GlobalSetting.log_line_max_chars)
end
end
Rails.application.config.to_prepare do
set_or_extend_truncate_logs_formatter(Rails.logger)
if Rails.logger.respond_to? :chained
Rails.logger.chained.each { |logger| set_or_extend_truncate_logs_formatter(logger) }
end
end
end