Class: Brut::CLI::Logger
- Inherits:
-
SimpleDelegator
- Object
- SimpleDelegator
- Brut::CLI::Logger
- Defined in:
- lib/brut/cli/logger.rb
Instance Method Summary collapse
-
#add(severity, message = nil, progname = nil, &block) ⇒ Object
-
#debug(message = nil, &block) ⇒ Object
-
#error(message = nil, &block) ⇒ Object
-
#fatal(message = nil, &block) ⇒ Object
-
#info(message = nil, &block) ⇒ Object
-
#initialize(app_name:, stdout:, stderr:, theme: nil) ⇒ Logger
constructor
A new instance of Logger.
-
#level=(level) ⇒ Object
-
#log_file=(log_file) ⇒ Object
-
#log_to_stdout=(log_to_stdout) ⇒ Object
-
#warn(message = nil, &block) ⇒ Object
-
#without_stderr ⇒ Object
Constructor Details
#initialize(app_name:, stdout:, stderr:, theme: nil) ⇒ Logger
Returns a new instance of Logger.
7 8 9 10 11 12 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 |
# File 'lib/brut/cli/logger.rb', line 7 def initialize(app_name:, stdout:, stderr:, theme: nil) @app_name = app_name @stdout = stdout @logger = ::Logger.new("/dev/null") super(@logger) @simple_formatter = ->(severity, _time, progname, msg) { formatted_severity = if theme case severity when "DEBUG" theme.weak.render("DEBUG") when "INFO" theme.header.render("INFO") when "WARN" theme.warning.render("WARN") when "ERROR" theme.error.render("ERROR") when "FATAL" theme.error.render("FATAL") else severity end else severity end [ theme ? theme.weak.render("[ #{progname} ]") : "[ #{progname} ]", "{#{formatted_severity}}", msg, ].join(" ") + "\n" } @file_formatter = ->(severity, time, progname, msg) { "#{time} - [ #{progname} ]{#{severity}} #{msg}\n" } @stdout_logger = ::Logger.new("/dev/null") @stderr_logger = if stderr.nil? ::Logger.new("/dev/null") else ::Logger.new(stderr, progname: @app_name, formatter: @simple_formatter) end @log_file = nil end |
Instance Method Details
#add(severity, message = nil, progname = nil, &block) ⇒ Object
110 111 112 113 114 115 116 |
# File 'lib/brut/cli/logger.rb', line 110 def add(severity, =nil, progname=nil, &block) @logger.add(severity, , progname, &block) @stdout_logger.add(severity, , progname, &block) if severity >= ::Logger::WARN @stderr_logger.add(severity, , progname, &block) end end |
#debug(message = nil, &block) ⇒ Object
86 87 88 89 |
# File 'lib/brut/cli/logger.rb', line 86 def debug(=nil,&block) @logger.debug(,&block) @stdout_logger.debug(,&block) end |
#error(message = nil, &block) ⇒ Object
99 100 101 102 103 |
# File 'lib/brut/cli/logger.rb', line 99 def error(=nil,&block) @logger.error(,&block) @stdout_logger.error(,&block) @stderr_logger.error(,&block) end |
#fatal(message = nil, &block) ⇒ Object
104 105 106 107 108 |
# File 'lib/brut/cli/logger.rb', line 104 def fatal(=nil,&block) @logger.fatal(,&block) @stdout_logger.fatal(,&block) @stderr_logger.fatal(,&block) end |
#info(message = nil, &block) ⇒ Object
90 91 92 93 |
# File 'lib/brut/cli/logger.rb', line 90 def info(=nil,&block) @logger.info(,&block) @stdout_logger.info(,&block) end |
#level=(level) ⇒ Object
53 54 55 56 57 58 59 |
# File 'lib/brut/cli/logger.rb', line 53 def level=(level) if level @logger.level = level @stdout_logger.level = level @stderr_logger.level = level end end |
#log_file=(log_file) ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/brut/cli/logger.rb', line 61 def log_file=(log_file) if log_file @log_file = Pathname(log_file) log_dir = @log_file.dirname if !log_dir.exist? FileUtils.mkdir_p(log_dir) end @logger = ::Logger.new(@log_file, formatter: @file_formatter, progname: @app_name, level: @logger.level) __setobj__(@logger) if @logger.level == ::Logger::DEBUG @stdout.puts "Logging to file #{@log_file}" end else @log_file = nil end end |
#log_to_stdout=(log_to_stdout) ⇒ Object
78 79 80 81 82 83 84 85 |
# File 'lib/brut/cli/logger.rb', line 78 def log_to_stdout=(log_to_stdout) @log_to_stdout = log_to_stdout if @log_to_stdout @stdout_logger = ::Logger.new(@stdout, formatter: @simple_formatter, progname: @app_name, level: @logger.level) else @stdout_logger = ::Logger.new("/dev/null") end end |
#warn(message = nil, &block) ⇒ Object
94 95 96 97 98 |
# File 'lib/brut/cli/logger.rb', line 94 def warn(=nil,&block) @logger.warn(,&block) @stdout_logger.warn(,&block) @stderr_logger.warn(,&block) end |
#without_stderr ⇒ Object
118 119 120 121 122 123 124 |
# File 'lib/brut/cli/logger.rb', line 118 def without_stderr logger = self.class.new(app_name: @app_name, stdout: @stdout, stderr: nil) logger.level = @logger.level logger.log_file = @log_file logger.log_to_stdout = @log_to_stdout logger end |