Sha256: 734bea5785999f19cdf7ff9a3da070ef2bfd3132903579c6cba9acbdbe18b5d0
Contents?: true
Size: 1.04 KB
Versions: 1
Compression:
Stored size: 1.04 KB
Contents
require 'dry-configurable' require 'rouge' module Dry module Monitor module SQL class Logger extend Dry::Configurable setting :theme, Rouge::Themes::Gruvbox setting :colorize, true attr_reader :config attr_reader :logger attr_reader :formatter attr_reader :lexer def initialize(logger, config = self.class.config) @logger = logger @config = config @formatter = Rouge::Formatters::Terminal256.new(config.theme) @lexer = Rouge::Lexers::SQL.new end def subscribe(notifications) notifications.event(:sql).subscribe(:sql) do |time, id, payload| log_query(time, payload[:name], payload[:query]) end end def log_query(time, name, query) logger.info " Loaded #{name.inspect} in #{time}ms #{colorize(query)}" end private def colorize(string) config.colorize ? formatter.format(lexer.lex(string)) : string end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
dry-monitor-0.0.1 | lib/dry/monitor/sql/logger.rb |