logatron 0.2.5 → 0.2.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -2
- data/README.md +3 -5
- data/lib/logatron/basic_logger.rb +7 -3
- data/lib/logatron/basic_scoped_logger.rb +6 -10
- data/lib/logatron/configuration.rb +3 -7
- data/lib/logatron/const.rb +21 -10
- data/lib/logatron/message_formatting.rb +11 -12
- data/logatron.gemspec +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c0d3fc64e66b4cdc0f85cdd1dd9124edb59a77ce
|
4
|
+
data.tar.gz: d0cc1924c4c28c1a475224e3146710635d7fb0a0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: adea0b753a1eb719124166d3aadc7b507054cd971c3873c62ffc9b7464b922ea105cf01348cab27ae7b5da57ac36e324517695c4d5440e9304b9c02052e8f2b1
|
7
|
+
data.tar.gz: 64d1ee8c85bc03a8dfb056758d429f3a793d65a22ec94427f5940547c33bb5fba84e676c0760b62344cbfa8adbc603808896f7dce120bbd67288a47ee0b05c34
|
data/Gemfile.lock
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
logatron (0.2.
|
4
|
+
logatron (0.2.6)
|
5
5
|
activesupport (~> 4.2, >= 4.2.1)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
|
-
activesupport (4.2.5)
|
10
|
+
activesupport (4.2.5.1)
|
11
11
|
i18n (~> 0.7)
|
12
12
|
json (~> 1.7, >= 1.7.7)
|
13
13
|
minitest (~> 5.1)
|
data/README.md
CHANGED
@@ -1,9 +1,5 @@
|
|
1
1
|
# Logatron
|
2
2
|
|
3
|
-
Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/logatron/logatron`. To experiment with that code, run `bin/console` for an interactive prompt.
|
4
|
-
|
5
|
-
TODO: Delete this and the text above, and describe your gem
|
6
|
-
|
7
3
|
## Installation
|
8
4
|
|
9
5
|
Add this line to your application's Gemfile:
|
@@ -26,13 +22,15 @@ Or install it yourself as:
|
|
26
22
|
Severities are used to examine and filter server logs, create alerts, and analyze user behavior.
|
27
23
|
|
28
24
|
* Debug - use for fixing production bugs or deeper inspection into behavior
|
29
|
-
* Invalid Use - use for user errors due to invalid inputs
|
30
25
|
* Info - use for general information (successful operations, ec.)
|
26
|
+
* Invalid Use - use for user errors due to invalid inputs
|
31
27
|
* Warn - use for recoverable errors
|
32
28
|
* Error - use for known unrecoverable errors
|
33
29
|
* Critical - use for unknown unrecoverable errors (system-level rescues)
|
34
30
|
* Fatal - use for system errors
|
35
31
|
|
32
|
+
*Invalid Use* - inappropriate inputs from a user - are not immediately actionable for a development team, but may provide input into customer care, future features, or bug fixes for poorly implemented features. This makes them a discrete category similar to `INFO` so that any queries on the logs can be readily consumed by such information seekers.
|
33
|
+
|
36
34
|
## Development
|
37
35
|
|
38
36
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake rspec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
@@ -22,6 +22,10 @@ module Logatron
|
|
22
22
|
write(format_log(msg: msg, severity: DEBUG), SEVERITY_MAP[DEBUG])
|
23
23
|
end
|
24
24
|
|
25
|
+
def invalid_use(msg)
|
26
|
+
write(format_log(msg: msg, severity: INVALID_USE), SEVERITY_MAP[INVALID_USE])
|
27
|
+
end
|
28
|
+
|
25
29
|
def error(msg)
|
26
30
|
write(format_log(msg: msg, severity: ERROR), SEVERITY_MAP[ERROR])
|
27
31
|
end
|
@@ -39,16 +43,16 @@ module Logatron
|
|
39
43
|
start = Time.now
|
40
44
|
begin
|
41
45
|
res = block.call(ml)
|
42
|
-
write(format_log(severity: severity, msg: msg, status: status, duration: milliseconds_elapsed(Time.now, start), inputs: source, request: request),SEVERITY_MAP[severity])
|
46
|
+
write(format_log(severity: severity, msg: msg, status: status, duration: milliseconds_elapsed(Time.now, start), inputs: source, request: request), SEVERITY_MAP[severity])
|
43
47
|
res
|
44
48
|
rescue Exception => e
|
45
|
-
write(format_log(severity: severity, msg: msg, status: status, duration: milliseconds_elapsed(Time.now, start), inputs: source, request: request),SEVERITY_MAP[severity])
|
49
|
+
write(format_log(severity: severity, msg: msg, status: status, duration: milliseconds_elapsed(Time.now, start), inputs: source, request: request), SEVERITY_MAP[severity])
|
46
50
|
ml.flush
|
47
51
|
raise e
|
48
52
|
end
|
49
53
|
end
|
50
54
|
|
51
|
-
def write(string,severity)
|
55
|
+
def write(string, severity)
|
52
56
|
Logatron.configuration.logger.log(severity, string)
|
53
57
|
end
|
54
58
|
end
|
@@ -9,14 +9,7 @@ module Logatron
|
|
9
9
|
|
10
10
|
def initialize(logger)
|
11
11
|
@logger = logger
|
12
|
-
@logs = {
|
13
|
-
DEBUG => [],
|
14
|
-
INFO => [],
|
15
|
-
WARN => [],
|
16
|
-
ERROR => [],
|
17
|
-
CRITICAL => [],
|
18
|
-
FATAL => []
|
19
|
-
}
|
12
|
+
@logs = Hash[Logatron::SEVERITY_MAP.keys.map{|key| [key, []]}]
|
20
13
|
end
|
21
14
|
|
22
15
|
def info(msg)
|
@@ -31,6 +24,10 @@ module Logatron
|
|
31
24
|
write(format_log(msg: msg, severity: DEBUG), DEBUG)
|
32
25
|
end
|
33
26
|
|
27
|
+
def invalid_use(msg)
|
28
|
+
write(format_log(msg: msg, severity: INVALID_USE), INVALID_USE)
|
29
|
+
end
|
30
|
+
|
34
31
|
def error(msg)
|
35
32
|
write(format_log(msg: msg, severity: ERROR), ERROR)
|
36
33
|
end
|
@@ -50,10 +47,9 @@ module Logatron
|
|
50
47
|
def flush
|
51
48
|
Logatron.configuration.loggable_levels.each do |key|
|
52
49
|
@logs[key].each do |item|
|
53
|
-
@logger.write(item,SEVERITY_MAP[key])
|
50
|
+
@logger.write(item, SEVERITY_MAP[key])
|
54
51
|
end
|
55
52
|
end
|
56
53
|
end
|
57
54
|
end
|
58
|
-
|
59
55
|
end
|
@@ -30,13 +30,9 @@ module Logatron
|
|
30
30
|
@transformer = proc {|x| x.to_json}
|
31
31
|
@host = `hostname`.chomp
|
32
32
|
@level = INFO
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
ERROR,
|
37
|
-
CRITICAL,
|
38
|
-
FATAL]
|
39
|
-
@loggable_levels = levels.slice(levels.index(@level), levels.size-1)
|
33
|
+
level_threshold = SEVERITY_MAP[@level]
|
34
|
+
levels = Logatron::SEVERITY_MAP.keys
|
35
|
+
@loggable_levels = levels.select{|level| SEVERITY_MAP[level] >= level_threshold}
|
40
36
|
bc = ActiveSupport::BacktraceCleaner.new
|
41
37
|
bc.add_filter { |line| line.gsub(Rails.root.to_s, '') } if defined? Rails
|
42
38
|
bc.add_silencer { |line| line =~ /gems/ }
|
data/lib/logatron/const.rb
CHANGED
@@ -1,20 +1,31 @@
|
|
1
1
|
module Logatron
|
2
|
-
|
2
|
+
MSG_ID = :msg_id
|
3
|
+
SITE = :site
|
4
|
+
|
5
|
+
DEBUG = 'DEBUG'.freeze
|
6
|
+
INVALID_USE = 'INVALID_USE'.freeze
|
3
7
|
INFO = 'INFO'.freeze
|
8
|
+
WARN = 'WARN'.freeze
|
4
9
|
ERROR = 'ERROR'.freeze
|
5
10
|
CRITICAL = 'CRITICAL'.freeze
|
6
11
|
FATAL = 'FATAL'.freeze
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
12
|
+
|
13
|
+
# Maps Constants to the Logger Severity Integers:
|
14
|
+
# DEBUG = 0
|
15
|
+
# INFO = 1
|
16
|
+
# WARN = 2
|
17
|
+
# ERROR = 3
|
18
|
+
# FATAL = 4
|
19
|
+
# UNKNOWN = 5
|
20
|
+
# Note that the Logatron Severities will be put into
|
21
|
+
# the logs (severity => INVALID_USE), for filtering purposes
|
11
22
|
SEVERITY_MAP = {
|
12
23
|
Logatron::DEBUG => 0,
|
24
|
+
Logatron::INFO => 1,
|
13
25
|
Logatron::INVALID_USE => 1,
|
14
|
-
Logatron::
|
15
|
-
Logatron::
|
16
|
-
Logatron::
|
17
|
-
Logatron::
|
18
|
-
Logatron::FATAL => 6
|
26
|
+
Logatron::WARN => 2,
|
27
|
+
Logatron::ERROR => 3,
|
28
|
+
Logatron::CRITICAL => 4,
|
29
|
+
Logatron::FATAL => 5
|
19
30
|
}
|
20
31
|
end
|
@@ -7,18 +7,17 @@ module Logatron
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def format_log(msg: '-', status: '-', duration: '-', request: '-', inputs: '-', severity: '-')
|
10
|
-
Logatron.configuration.transformer.call(
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
}) + "\n"
|
10
|
+
Logatron.configuration.transformer.call(
|
11
|
+
timestamp: Time.now.iso8601,
|
12
|
+
severity: severity,
|
13
|
+
host: Logatron.configuration.host,
|
14
|
+
id: Contexts.msg_id,
|
15
|
+
site: Contexts.site,
|
16
|
+
status: status,
|
17
|
+
duration: duration,
|
18
|
+
request: request,
|
19
|
+
source: inputs,
|
20
|
+
body: msg) + "\n"
|
22
21
|
end
|
23
22
|
end
|
24
23
|
end
|
data/logatron.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logatron
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Grimes
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-04-
|
11
|
+
date: 2016-04-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|