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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d2b6f8eb657b6f10e4a02806f4faa9f2d50788a0aad4f2b64ca87b9836472d78
4
- data.tar.gz: cac716412021a31196391741bd02a8304bcbde0da67216b078b36825e5d9f532
3
+ metadata.gz: 979499ffe521486bed7120fbd78e9bec1754440a536c40fa96eed1b34b744ef7
4
+ data.tar.gz: 49f500fa85f6e5740815126bbc432eea5975ce6612553c0523d7d4622ed63f13
5
5
  SHA512:
6
- metadata.gz: aa80f207159a21c67a6624478f83bd4cae0c2dc850f50e56b0b0b594d6e6f345e6f38b047ddced0bdc08ee43ee24447858e3c9a3b4bdc72070f3479e148351ff
7
- data.tar.gz: 9675b5e00fae346f39c23abd658029389d5584ce48be3b504b99461cd3086f14cb3588cd2e23e32bd0061f971bf14929ca1336dccfd7eee9b3c42a44068ba70a
6
+ metadata.gz: ef65f65c39df3a23dfb4e24745255ad4c88f18f4d350da527f876aeca155039905fb9dd71ff0578b7aeb5108d44d0b442d757c50870a3978a125607957e579fc
7
+ data.tar.gz: 52397bf857f760967064e6d4cd7d9f60598cc38f8466185ac3dd6fcf810dd60b6eeedf57b841ebc4c0af57df9121ca537228cb07467378462a3a4dda7ca1f196
@@ -1,167 +1,61 @@
1
- version: 2 # use CircleCI 2.0
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.4-node
8
+ - image: circleci/ruby:2.5-node
6
9
  steps:
7
10
  - checkout
8
- - run: gem install rubocop
11
+ - ruby/load-cache
12
+ - ruby/install-deps
9
13
  - run:
10
14
  name: Run Rubocop
11
- command: rubocop
12
- - store_test_results:
13
- path: test_results
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.4-node
19
+ - image: circleci/ruby:2.5
20
+ - image: memcached:1.5-alpine
75
21
  steps:
76
22
  - checkout
77
- - run:
78
- name: Bundle Install
79
- command: bundle install
80
- - run:
81
- name: Run RSpec
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.5-node
29
+ - image: circleci/ruby:2.6
30
+ - image: memcached:1.5-alpine
89
31
  steps:
90
32
  - checkout
91
- - run:
92
- name: Bundle Install
93
- command: bundle install
94
- - run:
95
- name: Run RSpec
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.6-node
39
+ - image: circleci/ruby:2.7
40
+ - image: memcached:1.5-alpine
103
41
  steps:
104
42
  - checkout
105
- - run:
106
- name: Bundle Install
107
- command: bundle install
108
- - run:
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
- cop_rake_deploy:
50
+ rubocop-rspec:
132
51
  jobs:
133
52
  - rubocop
134
- # - ruby-2.2:
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-2.5:
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-2.4
158
- filters:
159
- branches:
160
- only: /\bdevelop\b|\bmaster\b/
161
- - jruby-9.2:
58
+ - ruby-two-five
59
+ - ruby-two-seven:
162
60
  requires:
163
- #- ruby-2.2
164
- - ruby-2.3
165
- - ruby-2.4
166
- - ruby-2.5
167
- - ruby-2.6
61
+ - ruby-two-five
@@ -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 (v10.5.0, RVM: ruby-2.6.3) [gem]" level="application" />
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" />
@@ -5,7 +5,7 @@ Metrics/MethodLength:
5
5
  Metrics/ClassLength:
6
6
  Max: 1500
7
7
  Metrics/BlockLength:
8
- Max: 50
8
+ Max: 75
9
9
  Layout/SpaceAroundEqualsInParameterDefault:
10
10
  EnforcedStyle: space
11
11
  Style/SymbolArray:
@@ -1,24 +1,6 @@
1
- image: ruby:2.4.0
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:
@@ -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', '~> 10.0'
32
- spec.add_development_dependency 'rspec', '~> 3.0'
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
@@ -13,6 +13,10 @@ module Legion
13
13
  include Legion::Logging::Builder
14
14
  attr_reader :log, :color
15
15
 
16
+ def level
17
+ @log.level
18
+ end
19
+
16
20
  def setup(options = {})
17
21
  output(options)
18
22
  log_level(options[:level])
@@ -1,9 +1,25 @@
1
1
  module Legion
2
2
  module Logging
3
3
  module Builder
4
- def log_format(_options = {}, log = @log)
4
+ def log_format(options = {}, log = @log) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity
5
5
  log.formatter = proc do |severity, datetime, _progname, msg|
6
- "[#{datetime}][#{::Process.pid}] #{severity} #{msg}\n"
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 == 'debug'
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
- attr_reader :log, :color
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(options = {})
12
- output(options)
13
- log_level(options[:level])
14
- log_format(options)
15
- @color = options[:color]
16
- @color = true if options[:color].nil? && options[:log_file].nil?
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
@@ -1,5 +1,5 @@
1
1
  module Legion
2
2
  module Logging
3
- VERSION = '0.3.1'.freeze
3
+ VERSION = '1.0.0'.freeze
4
4
  end
5
5
  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.3.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esity
8
8
  autorequire:
9
- bindir: exe
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-08 00:00:00.000000000 Z
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: '10.0'
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: '10.0'
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: '3.0'
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: '3.0'
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