logger-logging 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/lib/logger/logging.rb +31 -0
- data/lib/logger/logging/colored_logger.rb +44 -0
- data/lib/logger/logging/extended_logger.rb +23 -0
- data/lib/logger/logging/resolver.rb +22 -0
- metadata +48 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: a3a60891d92bf095eea5dde18974abd657eb3581
|
4
|
+
data.tar.gz: f58dd5a65e1f9b1f1f0c6ce4a359c197dd557ec8
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 6a86403c356d0b05d00c1e1fb0e4bd258c685ae7b23bfb4d8969be0412fd3d379eeae25ec8ec65c85be57408f6b97835174771d179f963b8de056708dc64f65b
|
7
|
+
data.tar.gz: 6147849afdeb9a028572f6f7500f6a8948c73c7f6887d80f7b7e0aed57b6e5448e3a8e61761385792ce419168445202081f3e2077dd1e3b0667835c727b165bb
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require "logger"
|
2
|
+
|
3
|
+
module Logger::Logging
|
4
|
+
autoload :ColoredLogger, "logger/logging/colored_logger"
|
5
|
+
autoload :ExtendedLogger, "logger/logging/extended_logger"
|
6
|
+
autoload :Resolver, "logger/logging/resolver"
|
7
|
+
|
8
|
+
def logger= logger
|
9
|
+
if logger
|
10
|
+
logger = Resolver.(logger)
|
11
|
+
|
12
|
+
if self.is_a? Module
|
13
|
+
logger.progname = "(#{self.name})"
|
14
|
+
else
|
15
|
+
logger.progname = "(#{self.class.name})"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
@logger = logger
|
20
|
+
end
|
21
|
+
|
22
|
+
def logger
|
23
|
+
@logger or NullLogger
|
24
|
+
end
|
25
|
+
|
26
|
+
module NullLogger
|
27
|
+
%i(data trace debug info warn error fatal unknown progname=).each do |log_level|
|
28
|
+
define_singleton_method log_level do |*| end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Logger::Logging
|
2
|
+
class ColoredLogger < ExtendedLogger
|
3
|
+
ANSI_COLORS = %i(black red green yellow blue magenta cyan white)
|
4
|
+
|
5
|
+
DEFAULT_PALETTE = {
|
6
|
+
"ANY" => -> msg { bg(:blue, :bright, fg(:white, :bright, msg)) },
|
7
|
+
"FATAL" => -> msg { bg(:red, :bright, fg(:white, :bright, msg)) },
|
8
|
+
"ERROR" => -> msg { fg(:red, :bright, msg) },
|
9
|
+
"WARN" => -> msg { fg(:yellow, :bright, msg) },
|
10
|
+
"INFO" => -> msg { fg(:default, :normal, msg) },
|
11
|
+
"DEBUG" => -> msg { fg(:cyan, :bright, msg) },
|
12
|
+
"TRACE" => -> msg { fg(:magenta, :bright, msg) },
|
13
|
+
"DATA" => -> msg { fg(:green, :bright, msg) },
|
14
|
+
}
|
15
|
+
|
16
|
+
attr_writer :palette
|
17
|
+
|
18
|
+
def bg *args
|
19
|
+
col :bg, *args
|
20
|
+
end
|
21
|
+
|
22
|
+
def col fgbg, color_code, intensity_code, str
|
23
|
+
color_num = ANSI_COLORS.index color_code
|
24
|
+
intensity_num = { :normal => 0, :bright => 1 }.fetch intensity_code
|
25
|
+
fgbg_num = { :fg => 3, :bg => 4 }.fetch fgbg
|
26
|
+
"\e[#{fgbg_num}#{color_num};#{intensity_num}m#{str}\e[0m"
|
27
|
+
end
|
28
|
+
|
29
|
+
def fg *args
|
30
|
+
col :fg, *args
|
31
|
+
end
|
32
|
+
|
33
|
+
def format_message severity, *args, progname, message
|
34
|
+
formatter = palette.fetch severity
|
35
|
+
colored_message = instance_exec message, &formatter
|
36
|
+
colored_progname = instance_exec progname, &formatter
|
37
|
+
super severity, *args, colored_progname, colored_message
|
38
|
+
end
|
39
|
+
|
40
|
+
def palette
|
41
|
+
@palette or DEFAULT_PALETTE
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Logger::Logging
|
2
|
+
class ExtendedLogger < ::Logger
|
3
|
+
def format_severity severity
|
4
|
+
case severity
|
5
|
+
when -1 then "TRACE"
|
6
|
+
when -2 then "DATA"
|
7
|
+
else super
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def trace progname = nil, &block
|
12
|
+
add -1, nil, progname, &block
|
13
|
+
end
|
14
|
+
|
15
|
+
def data progname = nil, &block
|
16
|
+
add -2, nil, progname, &block
|
17
|
+
end
|
18
|
+
|
19
|
+
def io
|
20
|
+
@logdev and @logdev.dev
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Logger::Logging
|
2
|
+
class Resolver
|
3
|
+
def self.call logger
|
4
|
+
if logger.is_a? ExtendedLogger
|
5
|
+
logger
|
6
|
+
elsif logger.is_a? Logger
|
7
|
+
logdev = logger.instance_variable_get :@logdev
|
8
|
+
device = logdev.dev
|
9
|
+
if device.tty?
|
10
|
+
new_logger = ColoredLogger.new device
|
11
|
+
else
|
12
|
+
new_logger = ExtendedLogger.new device
|
13
|
+
end
|
14
|
+
new_logger.level = logger.level
|
15
|
+
new_logger.progname = logger.progname
|
16
|
+
new_logger
|
17
|
+
else
|
18
|
+
raise ArgumentError, "could not resolve logger for #{logger.inspect}"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
metadata
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: logger-logging
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Nathan Ladd
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-09-17 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: Logging module that adds colored logging to any class and puts the class
|
14
|
+
name in the log output for easy grepping
|
15
|
+
email: nathanladd+github@gmail.com
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- lib/logger/logging.rb
|
21
|
+
- lib/logger/logging/colored_logger.rb
|
22
|
+
- lib/logger/logging/extended_logger.rb
|
23
|
+
- lib/logger/logging/resolver.rb
|
24
|
+
homepage: https://github.com/ntl/logger-logging
|
25
|
+
licenses:
|
26
|
+
- MIT
|
27
|
+
metadata: {}
|
28
|
+
post_install_message:
|
29
|
+
rdoc_options: []
|
30
|
+
require_paths:
|
31
|
+
- lib
|
32
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
33
|
+
requirements:
|
34
|
+
- - ">="
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: '0'
|
37
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
42
|
+
requirements: []
|
43
|
+
rubyforge_project:
|
44
|
+
rubygems_version: 2.4.5.1
|
45
|
+
signing_key:
|
46
|
+
specification_version: 4
|
47
|
+
summary: Logging module that adds colored logging to any class
|
48
|
+
test_files: []
|