discourse/app/models/imap_sync_log.rb

69 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 = (create(message: message, level: ImapSyncLog.levels[level], group_id: group_id) if db)
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)
#