Sha256: 804681ff23b2393ea26fe1a41ba08348061a1532cf6e9ef55cd2141bb37bf170
Contents?: true
Size: 1.67 KB
Versions: 2
Compression:
Stored size: 1.67 KB
Contents
# frozen_string_literal: true module SlackWebhookLogger class Formatter < ::Logger::Formatter attr_writer :format MAX_LENGTH = 20000 def format @format ||= proc do |severity, time, _progname, msg| heading = case severity when "FATAL" "đ *#{severity}*" when "ERROR" "đ *#{severity}*" when "WARN" "â ī¸ *#{severity}*" when "INFO" "âšī¸ *#{severity}*" when "DEBUG" "đ *#{severity}*" else "đĒĩ *Logger*" end title = "#{heading} (#{time}) [#{ENV.fetch("RAILS_ENV", nil)}]" text = <<~MSG #{msg2str(msg)} MSG slackify(truncate(title), truncate(text)) end end def call(severity, time, progname, msg) format.call(severity, time, progname, msg) end def slackify(title, text) { text: [title, text].join("\n").to_s, blocks: [ { type: "section", text: { type: "mrkdwn", text: title, }, }, { type: "divider", }, { type: "section", text: { type: "plain_text", text: text, }, }, ], } end private def msg2str(msg) case msg when ::String msg when ::Exception "#{msg.message} (#{msg.class})\n" << (msg.backtrace || []).join("\n") else msg.inspect end end private def truncate(string) string.length > MAX_LENGTH ? "#{string[0...MAX_LENGTH]}..." : string end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
slack_webhook_logger-0.5.4 | lib/slack_webhook_logger/formatter.rb |
slack_webhook_logger-0.5.2 | lib/slack_webhook_logger/formatter.rb |