discourse/app/models/imap_sync_log.rb
Martin Brennan f34fa999a2
DEV: IMAP debugging improvements ()
Improvements to make console access to IncomingEmail more pleasant, and stopping certain IMAP logs from landing in the DB because they just create too much noise,
2021-01-21 11:37:47 +10:00

65 lines
1.7 KiB
Ruby

# frozen_string_literal: true
class ImapSyncLog < ActiveRecord::Base
RETAIN_LOGS_DAYS ||= 5
belongs_to :group
def self.levels
@levels ||= Enum.new(:debug, :info, :warn, :error)
end
def self.log(message, level, group_id = nil, db = true)
now = Time.now.strftime("%Y-%m-%d %H:%M:%S.%L")
new_log = if db
create(message: message, level: ImapSyncLog.levels[level], group_id: group_id)
end
if ENV["DEBUG_IMAP"]
Rails.logger.send(:warn, "#{level[0].upcase}, [#{now}] [IMAP] (group_id #{group_id}) #{message}")
else
Rails.logger.send(level, "#{level[0].upcase}, [#{now}] [IMAP] (group_id #{group_id}) #{message}")
end
new_log
end
def self.debug(message, group_or_id, db: true)
group_id = group_or_id.is_a?(Integer) ? group_or_id : group_or_id.id
log(message, :debug, group_id, db)
end
def self.info(message, group_or_id)
group_id = group_or_id.is_a?(Integer) ? group_or_id : group_or_id.id
log(message, :info, group_id)
end
def self.warn(message, group_or_id)
group_id = group_or_id.is_a?(Integer) ? group_or_id : group_or_id.id
log(message, :warn, group_id)
end
def self.error(message, group_or_id)
group_id = group_or_id.is_a?(Integer) ? group_or_id : group_or_id.id
log(message, :error, group_id)
end
end
# == Schema Information
#
# Table name: imap_sync_logs
#
# id :bigint not null, primary key
# level :integer not null
# message :string not null
# group_id :bigint
# created_at :datetime not null
# updated_at :datetime not null
#
# Indexes
#
# index_imap_sync_logs_on_group_id (group_id)
# index_imap_sync_logs_on_level (level)
#