Class: RubyRabbitmqJanus::Tools::Log
- Inherits:
-
Object
- Object
- RubyRabbitmqJanus::Tools::Log
- Includes:
- Singleton
- Defined in:
- lib/rrj/tools/gem/log.rb
Overview
# Manage log in this gem
Singleton object for manipulate logs in this gem
Constant Summary collapse
- LEVELS =
Levels to log
{ DEBUG: Logger::DEBUG, INFO: Logger::INFO, WARN: Logger::WARN, ERROR: Logger::ERROR, FATAL: Logger::FATAL, UNKNOWN: Logger::UNKNOWN }.freeze
- SENSITIVES =
Sensitive data
%i[admin_secret apisecret].freeze
Instance Attribute Summary collapse
-
#level ⇒ Fixnum
readonly
Return a number to log level.
Instance Method Summary collapse
-
#debug(message) ⇒ Object
Write a message in log with a ‘DEBUG` level.
-
#error(message) ⇒ Object
Write a message in log with a ‘ERROR` level.
-
#fatal(message) ⇒ Object
Write a message in log with a ‘FATAL` level.
-
#info(message) ⇒ Object
Write a message in log with a ‘INFO` level.
-
#initialize ⇒ Log
constructor
Returns a new instance to Log and use ‘Tag` element for each line writing in log with name to gem.
-
#logdev ⇒ String
Name of file to logger used.
-
#logger ⇒ RubyRabbitmqJanus::Tools::Log
The instance to logger.
-
#save_level(gem_level) ⇒ Object
Save log level used in this gem.
-
#unknown(message) ⇒ Object
Write a message in log with a ‘UNKNOWN` level.
-
#warn(message) ⇒ Object
Write a message in log with a ‘WARN` level.
Constructor Details
#initialize ⇒ Log
Returns a new instance to Log and use ‘Tag` element for each line writing in log with name to gem.
35 36 37 38 39 40 41 42 43 |
# File 'lib/rrj/tools/gem/log.rb', line 35 def initialize logs = defined?(Rails) ? logger_rails : logger_develop logs.progname = RubyRabbitmqJanus.name logs.level = LEVELS[:DEBUG] logs.info('### Start gem Rails Rabbit Janus ###') @level = logs.level @progname = logs.progname @logs = ActiveSupport::TaggedLogging.new(logs) end |
Instance Attribute Details
#level ⇒ Fixnum (readonly)
Return a number to log level.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
# File 'lib/rrj/tools/gem/log.rb', line 13 class Log include Singleton # Levels to log LEVELS = { DEBUG: Logger::DEBUG, INFO: Logger::INFO, WARN: Logger::WARN, ERROR: Logger::ERROR, FATAL: Logger::FATAL, UNKNOWN: Logger::UNKNOWN }.freeze # Sensitive data SENSITIVES = %i[admin_secret apisecret].freeze attr_reader :level # Returns a new instance to Log and use `Tag` element for each line # writing in log with name to gem. # # @see http://api.rubyonrails.org/classes/ActiveSupport/TaggedLogging.html def initialize logs = defined?(Rails) ? logger_rails : logger_develop logs.progname = RubyRabbitmqJanus.name logs.level = LEVELS[:DEBUG] logs.info('### Start gem Rails Rabbit Janus ###') @level = logs.level @progname = logs.progname @logs = ActiveSupport::TaggedLogging.new(logs) end # Write a message in log with a `UNKNOWN` level # # @param message [String] Message writing in warning level in log def unknown() write_tag { @logs.unknown(filter()) } rescue raise Errors::Tools::Log::Unknown end # Write a message in log with a `FATAL` level # # @param message [String] Message writing in warning level in log def fatal() write_tag { @logs.fatal(filter()) } if test_level?(Logger::FATAL) rescue raise Errors::Tools::Log::Fatal end # Write a message in log with a `ERROR` level # # @param message [String] Message writing in warning level in log def error() write_tag { @logs.error(filter()) } if test_level?(Logger::ERROR) rescue raise Errors::Tools::Log::Error end # Write a message in log with a `WARN` level # @param message [String] Message writing in warning level in log def warn() write_tag { @logs.warn(filter()) } if test_level?(Logger::WARN) rescue raise Errors::Tools::Log::Warn end # Write a message in log with a `INFO` level # # @param message [String] Message writing in info level in log def info() write_tag { @logs.info(filter()) } if test_level?(Logger::INFO) rescue raise Errors::Tools::Log::Info end # Write a message in log with a `DEBUG` level # # @param message [String] Message writing in debug level in log def debug() write_tag { @logs.debug(filter()) } if test_level?(Logger::DEBUG) rescue raise Errors::Tools::Log::Debug end # @return [RubyRabbitmqJanus::Tools::Log] the instance to logger def logger @logs rescue raise Errors::Tools::Log::Logger end # @return [String] name of file to logger used def logdev @logs.instance_variable_get(:'@logdev').filename rescue raise Errors::Tools::Log::Logdev end # Save log level used in this gem # # @param [Symbol] gem_level Level used for log in this gem def save_level(gem_level) @level = LEVELS[gem_level] rescue raise Errors::Tools::Log::SaveLevel end private def logger_rails defined?(RSpec) ? logger_develop : Rails.logger end def logger_develop log = Logger.new('log/ruby-rabbitmq-janus.log') log.formatter = proc do |severity, _datetime, _progname, msg| "#{severity[0, 1].upcase}, #{msg}\n" end log end def test_level?(this_level) this_level >= Log.instance.level end def write_tag @logs.tagged(@logs.progname) { yield } end # @todo fix replace def filter_sensitive_data(log) msg = log SENSITIVES.each do |word| msg = log.gsub(/\"#{word}\".*\".*\"/, "\"#{word}\":\"[FILTERED]\"") \ if log.include?(word.to_s) end msg end alias filter filter_sensitive_data end |
Instance Method Details
#debug(message) ⇒ Object
Write a message in log with a ‘DEBUG` level
92 93 94 95 96 |
# File 'lib/rrj/tools/gem/log.rb', line 92 def debug() write_tag { @logs.debug(filter()) } if test_level?(Logger::DEBUG) rescue raise Errors::Tools::Log::Debug end |
#error(message) ⇒ Object
Write a message in log with a ‘ERROR` level
66 67 68 69 70 |
# File 'lib/rrj/tools/gem/log.rb', line 66 def error() write_tag { @logs.error(filter()) } if test_level?(Logger::ERROR) rescue raise Errors::Tools::Log::Error end |
#fatal(message) ⇒ Object
Write a message in log with a ‘FATAL` level
57 58 59 60 61 |
# File 'lib/rrj/tools/gem/log.rb', line 57 def fatal() write_tag { @logs.fatal(filter()) } if test_level?(Logger::FATAL) rescue raise Errors::Tools::Log::Fatal end |
#info(message) ⇒ Object
Write a message in log with a ‘INFO` level
83 84 85 86 87 |
# File 'lib/rrj/tools/gem/log.rb', line 83 def info() write_tag { @logs.info(filter()) } if test_level?(Logger::INFO) rescue raise Errors::Tools::Log::Info end |
#logdev ⇒ String
Returns name of file to logger used.
106 107 108 109 110 |
# File 'lib/rrj/tools/gem/log.rb', line 106 def logdev @logs.instance_variable_get(:'@logdev').filename rescue raise Errors::Tools::Log::Logdev end |
#logger ⇒ RubyRabbitmqJanus::Tools::Log
Returns the instance to logger.
99 100 101 102 103 |
# File 'lib/rrj/tools/gem/log.rb', line 99 def logger @logs rescue raise Errors::Tools::Log::Logger end |
#save_level(gem_level) ⇒ Object
Save log level used in this gem
115 116 117 118 119 |
# File 'lib/rrj/tools/gem/log.rb', line 115 def save_level(gem_level) @level = LEVELS[gem_level] rescue raise Errors::Tools::Log::SaveLevel end |