legion-logging 0.3.1 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +36 -142
- data/.idea/legion-logging.iml +1 -2
- data/.rubocop.yml +1 -1
- data/bitbucket-pipelines.yml +1 -19
- data/legion-logging.gemspec +2 -4
- data/lib/legion/logging.rb +4 -0
- data/lib/legion/logging/builder.rb +22 -4
- data/lib/legion/logging/logger.rb +10 -7
- data/lib/legion/logging/methods.rb +39 -0
- data/lib/legion/logging/version.rb +1 -1
- metadata +11 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 979499ffe521486bed7120fbd78e9bec1754440a536c40fa96eed1b34b744ef7
|
4
|
+
data.tar.gz: 49f500fa85f6e5740815126bbc432eea5975ce6612553c0523d7d4622ed63f13
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ef65f65c39df3a23dfb4e24745255ad4c88f18f4d350da527f876aeca155039905fb9dd71ff0578b7aeb5108d44d0b442d757c50870a3978a125607957e579fc
|
7
|
+
data.tar.gz: 52397bf857f760967064e6d4cd7d9f60598cc38f8466185ac3dd6fcf810dd60b6eeedf57b841ebc4c0af57df9121ca537228cb07467378462a3a4dda7ca1f196
|
data/.circleci/config.yml
CHANGED
@@ -1,167 +1,61 @@
|
|
1
|
-
version: 2
|
1
|
+
version: 2.1
|
2
|
+
orbs:
|
3
|
+
ruby: circleci/ruby@0.2.1
|
4
|
+
|
2
5
|
jobs:
|
3
6
|
"rubocop":
|
4
7
|
docker:
|
5
|
-
- image: circleci/ruby:2.
|
8
|
+
- image: circleci/ruby:2.5-node
|
6
9
|
steps:
|
7
10
|
- checkout
|
8
|
-
-
|
11
|
+
- ruby/load-cache
|
12
|
+
- ruby/install-deps
|
9
13
|
- run:
|
10
14
|
name: Run Rubocop
|
11
|
-
command: rubocop
|
12
|
-
-
|
13
|
-
|
14
|
-
"ruby-2.0":
|
15
|
-
docker:
|
16
|
-
- image: circleci/ruby:2.0
|
17
|
-
steps:
|
18
|
-
- checkout
|
19
|
-
- run:
|
20
|
-
name: Bundle Install
|
21
|
-
command: bundle install
|
22
|
-
- run:
|
23
|
-
name: Run RSpec
|
24
|
-
command: bundle exec rspec --format progress --format RspecJunitFormatter -o test-results/rspec/results.xml
|
25
|
-
when: always
|
26
|
-
- store_test_results:
|
27
|
-
path: test-results
|
28
|
-
"ruby-2.1":
|
29
|
-
docker:
|
30
|
-
- image: circleci/ruby:2.1
|
31
|
-
steps:
|
32
|
-
- checkout
|
33
|
-
- run:
|
34
|
-
name: Bundle Install
|
35
|
-
command: bundle install
|
36
|
-
- run:
|
37
|
-
name: Run RSpec
|
38
|
-
command: bundle exec rspec --format progress --format RspecJunitFormatter -o test-results/rspec/results.xml
|
39
|
-
when: always
|
40
|
-
- store_test_results:
|
41
|
-
path: test-results
|
42
|
-
"ruby-2.2":
|
43
|
-
docker:
|
44
|
-
- image: circleci/ruby:2.2
|
45
|
-
steps:
|
46
|
-
- checkout
|
47
|
-
- run:
|
48
|
-
name: Bundle Install
|
49
|
-
command: bundle install
|
50
|
-
- run:
|
51
|
-
name: Run RSpec
|
52
|
-
command: bundle exec rspec --format progress --format RspecJunitFormatter -o test-results/rspec/results.xml
|
53
|
-
when: always
|
54
|
-
- store_test_results:
|
55
|
-
path: test-results
|
56
|
-
|
57
|
-
"ruby-2.3":
|
58
|
-
docker:
|
59
|
-
- image: circleci/ruby:2.3
|
60
|
-
steps:
|
61
|
-
- checkout
|
62
|
-
- run:
|
63
|
-
name: Bundle Install
|
64
|
-
command: bundle install
|
65
|
-
- run:
|
66
|
-
name: Run RSpec
|
67
|
-
command: bundle exec rspec --format progress --format RspecJunitFormatter -o test-results/rspec/results.xml
|
68
|
-
when: always
|
69
|
-
- store_test_results:
|
70
|
-
path: test-results
|
71
|
-
|
72
|
-
"ruby-2.4":
|
15
|
+
command: bundle exec rubocop
|
16
|
+
- ruby/save-cache
|
17
|
+
"ruby-two-five":
|
73
18
|
docker:
|
74
|
-
- image: circleci/ruby:2.
|
19
|
+
- image: circleci/ruby:2.5
|
20
|
+
- image: memcached:1.5-alpine
|
75
21
|
steps:
|
76
22
|
- checkout
|
77
|
-
-
|
78
|
-
|
79
|
-
|
80
|
-
-
|
81
|
-
|
82
|
-
command: bundle exec rspec --format progress --format RspecJunitFormatter -o test-results/rspec/results.xml
|
83
|
-
when: always
|
84
|
-
- store_test_results:
|
85
|
-
path: test-results
|
86
|
-
"ruby-2.5":
|
23
|
+
- ruby/load-cache
|
24
|
+
- ruby/install-deps
|
25
|
+
- ruby/run-tests
|
26
|
+
- ruby/save-cache
|
27
|
+
"ruby-two-six":
|
87
28
|
docker:
|
88
|
-
- image: circleci/ruby:2.
|
29
|
+
- image: circleci/ruby:2.6
|
30
|
+
- image: memcached:1.5-alpine
|
89
31
|
steps:
|
90
32
|
- checkout
|
91
|
-
-
|
92
|
-
|
93
|
-
|
94
|
-
-
|
95
|
-
|
96
|
-
command: bundle exec rspec --format progress --format RspecJunitFormatter -o test-results/rspec/results.xml
|
97
|
-
when: always
|
98
|
-
- store_test_results:
|
99
|
-
path: test-results
|
100
|
-
"ruby-2.6":
|
33
|
+
- ruby/load-cache
|
34
|
+
- ruby/install-deps
|
35
|
+
- ruby/run-tests
|
36
|
+
- ruby/save-cache
|
37
|
+
"ruby-two-seven":
|
101
38
|
docker:
|
102
|
-
- image: circleci/ruby:2.
|
39
|
+
- image: circleci/ruby:2.7
|
40
|
+
- image: memcached:1.5-alpine
|
103
41
|
steps:
|
104
42
|
- checkout
|
105
|
-
-
|
106
|
-
|
107
|
-
|
108
|
-
-
|
109
|
-
name: Run RSpec
|
110
|
-
command: bundle exec rspec --format progress --format RspecJunitFormatter -o test-results/rspec/results.xml
|
111
|
-
when: always
|
112
|
-
- store_test_results:
|
113
|
-
path: test-results
|
114
|
-
"jruby-9.2":
|
115
|
-
docker:
|
116
|
-
- image: circleci/jruby:9.2
|
117
|
-
steps:
|
118
|
-
- checkout
|
119
|
-
- run:
|
120
|
-
name: Bundle Install
|
121
|
-
command: bundle install
|
122
|
-
- run:
|
123
|
-
name: Run RSpec
|
124
|
-
command: bundle exec rspec --format progress --format RspecJunitFormatter -o test-results/rspec/results.xml
|
125
|
-
when: always
|
126
|
-
- store_test_results:
|
127
|
-
path: test-results
|
43
|
+
- ruby/load-cache
|
44
|
+
- ruby/install-deps
|
45
|
+
- ruby/run-tests
|
46
|
+
- ruby/save-cache
|
128
47
|
|
129
48
|
workflows:
|
130
49
|
version: 2
|
131
|
-
|
50
|
+
rubocop-rspec:
|
132
51
|
jobs:
|
133
52
|
- rubocop
|
134
|
-
|
135
|
-
# requires:
|
136
|
-
# - ruby-2.4
|
137
|
-
# filters:
|
138
|
-
# branches:
|
139
|
-
# only: /\bdevelop\b|\bmaster\b/
|
140
|
-
- ruby-2.3:
|
141
|
-
requires:
|
142
|
-
- ruby-2.4
|
143
|
-
filters:
|
144
|
-
branches:
|
145
|
-
only: /\bdevelop\b|\bmaster\b/
|
146
|
-
- ruby-2.4:
|
53
|
+
- ruby-two-five:
|
147
54
|
requires:
|
148
55
|
- rubocop
|
149
|
-
- ruby-
|
150
|
-
requires:
|
151
|
-
- ruby-2.4
|
152
|
-
filters:
|
153
|
-
branches:
|
154
|
-
only: /\bdevelop\b|\bmaster\b/
|
155
|
-
- ruby-2.6:
|
56
|
+
- ruby-two-six:
|
156
57
|
requires:
|
157
|
-
- ruby-
|
158
|
-
|
159
|
-
branches:
|
160
|
-
only: /\bdevelop\b|\bmaster\b/
|
161
|
-
- jruby-9.2:
|
58
|
+
- ruby-two-five
|
59
|
+
- ruby-two-seven:
|
162
60
|
requires:
|
163
|
-
|
164
|
-
- ruby-2.3
|
165
|
-
- ruby-2.4
|
166
|
-
- ruby-2.5
|
167
|
-
- ruby-2.6
|
61
|
+
- ruby-two-five
|
data/.idea/legion-logging.iml
CHANGED
@@ -14,11 +14,10 @@
|
|
14
14
|
<orderEntry type="library" scope="PROVIDED" name="docile (v1.3.2, RVM: ruby-2.6.3) [gem]" level="application" />
|
15
15
|
<orderEntry type="library" scope="PROVIDED" name="jaro_winkler (v1.5.4, RVM: ruby-2.6.3) [gem]" level="application" />
|
16
16
|
<orderEntry type="library" scope="PROVIDED" name="json (v2.3.0, RVM: ruby-2.6.3) [gem]" level="application" />
|
17
|
-
<orderEntry type="library" scope="PROVIDED" name="logger (v1.4.2, RVM: ruby-2.6.3) [gem]" level="application" />
|
18
17
|
<orderEntry type="library" scope="PROVIDED" name="parallel (v1.19.1, RVM: ruby-2.6.3) [gem]" level="application" />
|
19
18
|
<orderEntry type="library" scope="PROVIDED" name="parser (v2.7.0.4, RVM: ruby-2.6.3) [gem]" level="application" />
|
20
19
|
<orderEntry type="library" scope="PROVIDED" name="rainbow (v3.0.0, RVM: ruby-2.6.3) [gem]" level="application" />
|
21
|
-
<orderEntry type="library" scope="PROVIDED" name="rake (
|
20
|
+
<orderEntry type="library" scope="PROVIDED" name="rake (v13.0.1, RVM: ruby-2.6.3) [gem]" level="application" />
|
22
21
|
<orderEntry type="library" scope="PROVIDED" name="rexml (v3.2.4, RVM: ruby-2.6.3) [gem]" level="application" />
|
23
22
|
<orderEntry type="library" scope="PROVIDED" name="rspec (v3.9.0, RVM: ruby-2.6.3) [gem]" level="application" />
|
24
23
|
<orderEntry type="library" scope="PROVIDED" name="rspec-core (v3.9.1, RVM: ruby-2.6.3) [gem]" level="application" />
|
data/.rubocop.yml
CHANGED
data/bitbucket-pipelines.yml
CHANGED
@@ -1,24 +1,6 @@
|
|
1
|
-
image: ruby:2.
|
1
|
+
image: ruby:2.5.0
|
2
2
|
|
3
3
|
pipelines:
|
4
|
-
branches:
|
5
|
-
master:
|
6
|
-
- step:
|
7
|
-
caches:
|
8
|
-
- bundler
|
9
|
-
script:
|
10
|
-
- gem install bundle rubocop
|
11
|
-
- bundle install
|
12
|
-
- rubocop
|
13
|
-
- rake
|
14
|
-
- step:
|
15
|
-
name: Deploy to test gem server
|
16
|
-
deployment: test
|
17
|
-
script:
|
18
|
-
- gem install bundle geminabox
|
19
|
-
- bundle install
|
20
|
-
- gem build legion-logging.gemspec
|
21
|
-
- gem inabox legion-logging*.gem -g https://gems.whonodes.org/ -o
|
22
4
|
default:
|
23
5
|
- step:
|
24
6
|
caches:
|
data/legion-logging.gemspec
CHANGED
@@ -22,18 +22,16 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
23
23
|
f.match(%r{^(test|spec|features)/})
|
24
24
|
end
|
25
|
-
spec.bindir = 'exe'
|
26
25
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
27
26
|
spec.require_paths = ['lib']
|
28
27
|
|
29
28
|
spec.add_development_dependency 'bundler'
|
30
29
|
spec.add_development_dependency 'codecov'
|
31
|
-
spec.add_development_dependency 'rake'
|
32
|
-
spec.add_development_dependency 'rspec'
|
30
|
+
spec.add_development_dependency 'rake'
|
31
|
+
spec.add_development_dependency 'rspec'
|
33
32
|
spec.add_development_dependency 'rspec_junit_formatter'
|
34
33
|
spec.add_development_dependency 'rubocop'
|
35
34
|
spec.add_development_dependency 'simplecov'
|
36
35
|
|
37
|
-
spec.add_dependency 'logger', '~> 1.3'
|
38
36
|
spec.add_dependency 'rainbow', '~> 3'
|
39
37
|
end
|
data/lib/legion/logging.rb
CHANGED
@@ -1,9 +1,25 @@
|
|
1
1
|
module Legion
|
2
2
|
module Logging
|
3
3
|
module Builder
|
4
|
-
def log_format(
|
4
|
+
def log_format(options = {}, log = @log) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity
|
5
5
|
log.formatter = proc do |severity, datetime, _progname, msg|
|
6
|
-
"[
|
6
|
+
options[:lex_name] = options.key?(:lex) ? "[lex-#{options[:lex]}]" : nil
|
7
|
+
unless options[:lex_name].nil?
|
8
|
+
data = caller_locations[4].to_s.split('/').last(2)
|
9
|
+
runner_trace = {
|
10
|
+
type: data[0],
|
11
|
+
file: data[1].split('.')[0],
|
12
|
+
function: data[1].split('`')[1].delete_suffix('\''),
|
13
|
+
line_number: data[1].split(':')[1]
|
14
|
+
}
|
15
|
+
end
|
16
|
+
string = "[#{datetime}][#{::Process.pid}]"
|
17
|
+
string.concat(options[:lex_name]) unless options[:lex_name].nil?
|
18
|
+
if runner_trace.is_a?(Hash) && (options[:extended] || severity == 'debug')
|
19
|
+
string.concat("[#{runner_trace[:type]}:#{runner_trace[:file]}:#{runner_trace[:line_number]}]")
|
20
|
+
end
|
21
|
+
string.concat(" #{severity} #{msg}\n")
|
22
|
+
string
|
7
23
|
end
|
8
24
|
end
|
9
25
|
|
@@ -12,8 +28,10 @@ module Legion
|
|
12
28
|
@log = ::Logger.new(options[:log_file]) unless options[:log_file].nil?
|
13
29
|
end
|
14
30
|
|
15
|
-
def log_level(level = 'debug', log = @log)
|
16
|
-
if level == '
|
31
|
+
def log_level(level = 'debug', log = @log) # rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
32
|
+
if level == 'trace'
|
33
|
+
log.level = ::Logger::INFO
|
34
|
+
elsif level == 'debug'
|
17
35
|
log.level = ::Logger::DEBUG
|
18
36
|
elsif level == 'info'
|
19
37
|
log.level = ::Logger::INFO
|
@@ -4,16 +4,19 @@ require 'legion/logging/builder'
|
|
4
4
|
module Legion
|
5
5
|
module Logging
|
6
6
|
class Logger
|
7
|
-
|
7
|
+
attr_accessor :log, :color, :level, :lex, :log_file, :trace_enabled, :extended
|
8
8
|
include Legion::Logging::Methods
|
9
9
|
include Legion::Logging::Builder
|
10
10
|
|
11
|
-
def initialize(
|
12
|
-
output(
|
13
|
-
log_level(
|
14
|
-
log_format(
|
15
|
-
@color =
|
16
|
-
@color = true if
|
11
|
+
def initialize(level: 'info', log_file: nil, lex: nil, trace: false, extended: false, trace_size: 4, **opts) # rubocop:disable Metrics/ParameterLists
|
12
|
+
output(logfile: log_file)
|
13
|
+
log_level(level)
|
14
|
+
log_format(lex: lex, extended: extended, **opts)
|
15
|
+
@color = opts[:color]
|
16
|
+
@color = true if opts[:color].nil? && log_file.nil?
|
17
|
+
@trace_enabled = trace
|
18
|
+
@trace_size = trace_size
|
19
|
+
@extended = extended
|
17
20
|
end
|
18
21
|
end
|
19
22
|
end
|
@@ -1,31 +1,55 @@
|
|
1
1
|
module Legion
|
2
2
|
module Logging
|
3
3
|
module Methods
|
4
|
+
def trace(raw_message = nil, log = @log, size: @trace_size, log_caller: true) # rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity, Metrics/AbcSize
|
5
|
+
return unless @trace_enabled
|
6
|
+
|
7
|
+
raw_message = yield if raw_message.nil? && block_given?
|
8
|
+
message = Rainbow('Tracing: ').cyan
|
9
|
+
message.concat Rainbow(raw_message + ' ').cyan
|
10
|
+
if log_caller && size.nil?
|
11
|
+
message.concat Rainbow(caller_locations).cyan.underline
|
12
|
+
elsif log_caller
|
13
|
+
message.concat Rainbow(caller_locations[0..size]).cyan.underline
|
14
|
+
end
|
15
|
+
log.unknown(message)
|
16
|
+
end
|
17
|
+
|
4
18
|
def debug(message = nil, log = @log)
|
19
|
+
return unless log.level < 1
|
20
|
+
|
5
21
|
message = yield if message.nil? && block_given?
|
6
22
|
message = Rainbow(message).blue if @color
|
7
23
|
log.debug(message)
|
8
24
|
end
|
9
25
|
|
10
26
|
def info(message = nil, log = @log)
|
27
|
+
return unless log.level < 2
|
28
|
+
|
11
29
|
message = yield if message.nil? && block_given?
|
12
30
|
message = Rainbow(message).green if @color
|
13
31
|
log.info(message)
|
14
32
|
end
|
15
33
|
|
16
34
|
def warn(message = nil, log = @log)
|
35
|
+
return unless log.level < 3
|
36
|
+
|
17
37
|
message = yield if message.nil? && block_given?
|
18
38
|
message = Rainbow(message).yellow if @color
|
19
39
|
log.warn(message)
|
20
40
|
end
|
21
41
|
|
22
42
|
def error(message = nil, log = @log)
|
43
|
+
return unless log.level < 4
|
44
|
+
|
23
45
|
message = yield if message.nil? && block_given?
|
24
46
|
message = Rainbow(message).red if @color
|
25
47
|
log.error(message)
|
26
48
|
end
|
27
49
|
|
28
50
|
def fatal(message = nil, log = @log)
|
51
|
+
return unless log.level < 5
|
52
|
+
|
29
53
|
message = yield if message.nil? && block_given?
|
30
54
|
message = Rainbow(message).darkred if @color
|
31
55
|
log.fatal(message)
|
@@ -36,6 +60,21 @@ module Legion
|
|
36
60
|
message = Rainbow(message).purple if @color
|
37
61
|
log.unknown(message)
|
38
62
|
end
|
63
|
+
|
64
|
+
def runner_exception(exc, **opts)
|
65
|
+
Legion::Logging.error exc.message
|
66
|
+
Legion::Logging.error exc.backtrace
|
67
|
+
Legion::Logging.error opts
|
68
|
+
{ success: false, message: exc.message, backtrace: exc.backtrace }.merge(opts)
|
69
|
+
end
|
70
|
+
|
71
|
+
def thread(kvl: false)
|
72
|
+
if kvl
|
73
|
+
"thread=#{Thread.current.object_id}"
|
74
|
+
else
|
75
|
+
Thread.current.object_id.to_s
|
76
|
+
end
|
77
|
+
end
|
39
78
|
end
|
40
79
|
end
|
41
80
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: legion-logging
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Esity
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-03-
|
11
|
+
date: 2020-03-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -42,30 +42,30 @@ dependencies:
|
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rspec_junit_formatter
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,20 +108,6 @@ dependencies:
|
|
108
108
|
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: logger
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - "~>"
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '1.3'
|
118
|
-
type: :runtime
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - "~>"
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '1.3'
|
125
111
|
- !ruby/object:Gem::Dependency
|
126
112
|
name: rainbow
|
127
113
|
requirement: !ruby/object:Gem::Requirement
|