chili_logger 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,92 @@
1
+ # class for centralizing Creative's logging logic
2
+ class ChiliLogger
3
+ # module responsible for uniformization of values in ChiliLogger
4
+ module Values
5
+ # class for keeping all default values in a single place
6
+ class Default
7
+ def msg_broker
8
+ :rabbitmq
9
+ end
10
+
11
+ def msg_broker_config
12
+ {}
13
+ end
14
+
15
+ def user
16
+ {
17
+ cognito_id: undefined_string,
18
+ email: undefined_string,
19
+ company_cognito_id: undefined_string,
20
+ company_name: undefined_string,
21
+ ghost_user_cognito_id: undefined_string
22
+ }
23
+ end
24
+
25
+ def env
26
+ undefined_string
27
+ end
28
+
29
+ def layer
30
+ undefined_string
31
+ end
32
+
33
+ def type
34
+ undefined_string
35
+ end
36
+
37
+ def service
38
+ undefined_string
39
+ end
40
+
41
+ def action
42
+ undefined_string
43
+ end
44
+
45
+ def desc
46
+ { type: type, service: service, action: action }
47
+ end
48
+
49
+ def main_content
50
+ { modified_records: modified_records, errors: log_errors }
51
+ end
52
+
53
+ def modified_records
54
+ {}
55
+ end
56
+
57
+ def log_errors
58
+ []
59
+ end
60
+
61
+ def log_error
62
+ sentence1 = 'ChiliLogger received an unsupported type of error, so it replaced it with this generic string.'
63
+ sentence2 = ' Errors must be either a String or a descendant of the Exception class.'
64
+ sentence1 + sentence2
65
+ end
66
+
67
+ def server_url
68
+ undefined_string
69
+ end
70
+
71
+ def log
72
+ {}
73
+ end
74
+
75
+ def sqs_message
76
+ {
77
+ error_type: undefined_string,
78
+ error_message: undefined_string,
79
+ log: undefined_string
80
+ }
81
+ end
82
+
83
+ def invalid_string
84
+ 'invalid_format'
85
+ end
86
+
87
+ def undefined_string
88
+ 'not_specified'
89
+ end
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,64 @@
1
+ # class for centralizing Creative's logging logic
2
+ class ChiliLogger
3
+ # module responsible for uniformization of values in ChiliLogger
4
+ module Values
5
+ # class to enforce consistent typing of values across all classes
6
+ # this is important because of Elasticsearch. Check README, section ##read-before-contributing to know more about it
7
+ class TypeUniformizer
8
+ # responsible for uniformizing log's description primitive types
9
+ class Desc
10
+ def initialize
11
+ @default = ChiliLogger::Values::Default.new
12
+ end
13
+
14
+ def desc(desc)
15
+ return {} unless desc.is_a?(Hash)
16
+
17
+ uniformized_desc = {}
18
+ valid_desc_attrs.each do |attr_name|
19
+ # only overwrite if key was explicitly set in desc
20
+ next unless desc.key?(attr_name)
21
+
22
+ desc_attr = desc[attr_name]
23
+ desc_attr = @default.invalid_string unless valid_desc_attr_formats.include?(desc_attr.class.name)
24
+ desc_attr ||= @default.undefined_string # if type == nil
25
+ uniformized_desc[attr_name] = desc_attr
26
+ end
27
+
28
+ uniformized_desc
29
+ end
30
+
31
+ def type(type)
32
+ return @default.undefined_string if type.nil?
33
+ return @default.invalid_string unless type.is_a?(String)
34
+
35
+ type
36
+ end
37
+
38
+ def service(service)
39
+ return @default.undefined_string if service.nil?
40
+ return @default.invalid_string unless service.is_a?(String)
41
+
42
+ service
43
+ end
44
+
45
+ def action(action)
46
+ return @default.undefined_string if action.nil?
47
+ return @default.invalid_string unless action.is_a?(String)
48
+
49
+ action
50
+ end
51
+
52
+ private
53
+
54
+ def valid_desc_attrs
55
+ %i[type service action]
56
+ end
57
+
58
+ def valid_desc_attr_formats
59
+ %w[String NilClass]
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,62 @@
1
+ # class for centralizing Creative's logging logic
2
+ class ChiliLogger
3
+ # module responsible for uniformization of values in ChiliLogger
4
+ module Values
5
+ # class to enforce consistent typing of values across all classes, this is important because of Elasticsearch
6
+ # Check README, section ##read-before-contributing, to know more about it
7
+ class TypeUniformizer
8
+ # responsible for uniformizing the primitive types of a log's main_content
9
+ class MainContent
10
+ def initialize
11
+ @default = ChiliLogger::Values::Default.new
12
+ end
13
+
14
+ def main_content(content)
15
+ return {} unless content.is_a?(Hash)
16
+
17
+ uniformized_content = {}
18
+
19
+ if content.key?(:modified_records) # only overwrite if :modified_records was explicitly set in main_content
20
+ mod_recs = content[:modified_records]
21
+ uniformized_content[:modified_records] = modified_records(mod_recs)
22
+ end
23
+ # only overwrite if :errors was explicitly set in main_content
24
+ uniformized_content[:errors] = errors(content[:errors]) if content.key?(:errors)
25
+
26
+ uniformized_content
27
+ end
28
+
29
+ def modified_records(records)
30
+ return {} unless records.is_a?(Hash)
31
+
32
+ uniformized_recs = {}
33
+ # modified records should be a hash where each key points to an array of valid modified records
34
+ records.each do |key, val|
35
+ val_as_array = val.is_a?(Array) ? val : [].push(val)
36
+ uniformized_val = val_as_array.map { |record| modified_record(record) }
37
+ uniformized_recs[key.to_s] = uniformized_val
38
+ end
39
+
40
+ uniformized_recs
41
+ end
42
+
43
+ def modified_record(record)
44
+ record.is_a?(Hash) ? record : {}
45
+ end
46
+
47
+ def errors(errors)
48
+ return [] unless errors.is_a?(Array)
49
+
50
+ errors.map { |err| error(err) }
51
+ end
52
+
53
+ # a received error must be either a string or Exception descendent(it will be converted to a string)
54
+ def error(error)
55
+ error = error.inspect if error.class.ancestors.include?(Exception) # stringifies Exception descendents
56
+ error = @default.log_error unless error.is_a?(String)
57
+ error
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,43 @@
1
+ # class for centralizing Creative's logging logic
2
+ class ChiliLogger
3
+ # module responsible for uniformization of values in ChiliLogger
4
+ module Values
5
+ # class to enforce consistent typing of values across all classes
6
+ # this is important because of Elasticsearch. Check README, section ##read-before-contributing to know moreabout it
7
+ class TypeUniformizer
8
+ # responsible for uniformizing log's primitive types
9
+ class User
10
+ def initialize
11
+ @default = ChiliLogger::Values::Default.new
12
+ end
13
+
14
+ def user(user)
15
+ return {} unless user.is_a?(Hash)
16
+
17
+ uniformized_user = {}
18
+ valid_user_attrs.each do |attr_name|
19
+ # don't enforce typing compliance of attrs that weren't explicitly set in user
20
+ next unless user.key?(attr_name)
21
+
22
+ user_attr = user[attr_name]
23
+ user_attr = @default.invalid_string unless valid_user_attr_formats.include?(user_attr.class.name)
24
+ user_attr ||= @default.undefined_string # if type == nil
25
+ uniformized_user[attr_name] = user_attr.to_s
26
+ end
27
+
28
+ uniformized_user
29
+ end
30
+
31
+ private
32
+
33
+ def valid_user_attrs
34
+ %i[cognito_id email company_cognito_id company_name ghost_user_cognito_id]
35
+ end
36
+
37
+ def valid_user_attr_formats
38
+ %w[String NilClass Fixnum Bignum]
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -1,5 +1,5 @@
1
1
  require 'httparty'
2
- require 'logs_coverage/coverage_writer'
2
+ require 'helpers/logs_coverage/coverage_writer'
3
3
  require 'message_writer/aws_ops_metadata'
4
4
 
5
5
  # class for centralizing Creative's logging logic
@@ -1,4 +1,4 @@
1
- require 'logs_coverage/coverage_writer'
1
+ require 'helpers/logs_coverage/coverage_writer'
2
2
  require 'message_writer/aws_ops_metadata'
3
3
 
4
4
  # class for centralizing Creative's logging logic
@@ -6,21 +6,23 @@ class ChiliLogger
6
6
  # class for writing log messages
7
7
  class MessageWriter
8
8
  def initialize(config)
9
- @env = config[:env] || 'not_specified'
10
- @layer = config[:layer] || 'not_specified'
11
- @server_url = config[:server_url] || 'not_specified'
9
+ @default = ChiliLogger::Values::Default.new
10
+ @env = config[:env] || @default.env
11
+ @layer = config[:layer] || @default.layer
12
+ @server_url = config[:server_url] || @default.server_url
12
13
  @cloud_provider = config[:cloud_provider]
13
14
  end
14
15
 
15
- def write(desc = {}, agent = 'not_specified', main_content = {})
16
+ def write(**options)
16
17
  return if ChiliLogger.instance.deactivated
17
18
 
18
- desc ||= {}
19
- main_content ||= {}
19
+ desc = options[:desc] || @default.desc
20
+ user = options[:user] || @default.user
21
+ main_content = options[:main_content] || @default.main_content
20
22
 
21
- main_content.merge!( backtrace: clean_backtrace(caller) )
23
+ main_content[:backtrace] = clean_backtrace(caller)
22
24
  update_logs_coverage(desc, main_content)
23
- message_hash(desc, agent, main_content)
25
+ message_hash(desc: desc, user: user, main_content: main_content)
24
26
  end
25
27
 
26
28
  def clean_backtrace(backtrace)
@@ -31,9 +33,9 @@ class ChiliLogger
31
33
  def write_description_tag(desc)
32
34
  env = desc[:env] || @env
33
35
  layer = desc[:layer] || @layer
34
- type = desc[:type] || 'not_specified'
35
- service = desc[:service] || 'not_specified'
36
- action = desc[:action] || 'not_specified'
36
+ type = desc[:type] || @default.type
37
+ service = desc[:service] || @default.service
38
+ action = desc[:action] || @default.action
37
39
 
38
40
  "#{env}.#{layer}.#{type}.#{service}.#{action}"
39
41
  end
@@ -47,17 +49,18 @@ class ChiliLogger
47
49
  end
48
50
 
49
51
  # rubocop:disable Metrics/MethodLength
50
- def message_hash(desc, agent, main_content)
52
+ def message_hash(**options)
53
+ desc = options[:desc]
51
54
  {
52
55
  desc: write_description_tag(desc),
53
56
  env: @env,
54
57
  layer: @layer,
55
- type: desc[:type] || 'not_specified',
56
- service: desc[:service] || 'not_specified',
57
- action: desc[:action] || 'not_specified',
58
- user_info: agent || 'not_specified',
58
+ type: desc[:type] || @default.type,
59
+ service: desc[:service] || @default.service,
60
+ action: desc[:action] || @default.action,
61
+ user: options[:user] || @default.undefined_string,
59
62
  timestamp: DateTime.now,
60
- "#{desc[:type]}": main_content || {},
63
+ "#{desc[:type]}": options[:main_content] || {},
61
64
  ops_metadata: write_ops_metadata
62
65
  }
63
66
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chili_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - lucas sandeville
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-07-01 00:00:00.000000000 Z
11
+ date: 2020-07-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk
@@ -75,24 +75,31 @@ files:
75
75
  - LICENSE.txt
76
76
  - README.md
77
77
  - Rakefile
78
+ - assets/images/chili-logger-flow.png
79
+ - assets/images/chiligum-logging-system.gif
80
+ - assets/images/rabbit-basic-functioning.png
81
+ - assets/images/rabbit-topic-explanation.webp
78
82
  - bin/console
79
83
  - bin/setup
80
84
  - chili_logger-0.0.6.gem
85
+ - chili_logger-0.0.7.gem
81
86
  - chili_logger.gemspec
82
87
  - lib/brokers/rabbit_broker.rb
88
+ - lib/brokers/sqs_broker.rb
83
89
  - lib/chili_logger.rb
84
90
  - lib/chili_logger/version.rb
85
91
  - lib/current_log_accessor.rb
86
92
  - lib/errors/error_messages/config_error.rb
87
- - lib/errors/error_messages/rabbitmq_error.rb
88
93
  - lib/errors/logging_error_handler/logging_error_handler.rb
89
- - lib/errors/logging_error_handler/sqs_handler.rb
90
- - lib/logs_coverage/chili_logger_coverage.yml
91
- - lib/logs_coverage/coverage_writer.rb
92
- - lib/logs_coverage/levantamento_provisório.yaml
94
+ - lib/helpers/logs_coverage/chili_logger_coverage.yml
95
+ - lib/helpers/logs_coverage/coverage_writer.rb
96
+ - lib/helpers/logs_coverage/levantamento_provisório.yaml
97
+ - lib/helpers/values/default.rb
98
+ - lib/helpers/values/type_uniformizer/desc.rb
99
+ - lib/helpers/values/type_uniformizer/main_content.rb
100
+ - lib/helpers/values/type_uniformizer/user.rb
93
101
  - lib/message_writer/aws_ops_metadata.rb
94
102
  - lib/message_writer/message_writer.rb
95
- - log/chili-logger-coverage.yml
96
103
  homepage: https://gitlab.com/chiligumdev/chili_logger
97
104
  licenses:
98
105
  - MIT
@@ -1,9 +0,0 @@
1
- # class for wrapping all other gem's classes
2
- class ChiliLogger
3
- # class for wrapping RabbitMQ/Bunny errors
4
- class RabbitMQError < StandardError
5
- def initialize(msg = "The provided data couldn't be converted")
6
- super(msg)
7
- end
8
- end
9
- end
@@ -1,50 +0,0 @@
1
- ---
2
- test:
3
- console:
4
- publish_test:
5
- - "/home/lucas/.rvm/gems/ruby-2.3.3/gems/chili_logger-0.0.6/lib/chili_logger.rb:42:in
6
- `publish_instant_log'"
7
- - "(pry):28:in `__pry__'"
8
- - "/home/lucas/.rvm/gems/ruby-2.3.3/gems/pry-0.13.1/lib/pry/pry_instance.rb:290:in
9
- `eval'"
10
- - "/home/lucas/.rvm/gems/ruby-2.3.3/gems/pry-0.13.1/lib/pry/pry_instance.rb:290:in
11
- `evaluate_ruby'"
12
- - "/home/lucas/.rvm/gems/ruby-2.3.3/gems/pry-0.13.1/lib/pry/pry_instance.rb:659:in
13
- `handle_line'"
14
- - "/home/lucas/.rvm/gems/ruby-2.3.3/gems/pry-0.13.1/lib/pry/pry_instance.rb:261:in
15
- `block (2 levels) in eval'"
16
- - "/home/lucas/.rvm/gems/ruby-2.3.3/gems/pry-0.13.1/lib/pry/pry_instance.rb:260:in
17
- `catch'"
18
- - "/home/lucas/.rvm/gems/ruby-2.3.3/gems/pry-0.13.1/lib/pry/pry_instance.rb:260:in
19
- `block in eval'"
20
- - "/home/lucas/.rvm/gems/ruby-2.3.3/gems/pry-0.13.1/lib/pry/pry_instance.rb:259:in
21
- `catch'"
22
- - "/home/lucas/.rvm/gems/ruby-2.3.3/gems/pry-0.13.1/lib/pry/pry_instance.rb:259:in
23
- `eval'"
24
- - "/home/lucas/.rvm/gems/ruby-2.3.3/gems/pry-0.13.1/lib/pry/repl.rb:77:in `block
25
- in repl'"
26
- - "/home/lucas/.rvm/gems/ruby-2.3.3/gems/pry-0.13.1/lib/pry/repl.rb:67:in `loop'"
27
- - "/home/lucas/.rvm/gems/ruby-2.3.3/gems/pry-0.13.1/lib/pry/repl.rb:67:in `repl'"
28
- - "/home/lucas/.rvm/gems/ruby-2.3.3/gems/pry-0.13.1/lib/pry/repl.rb:38:in `block
29
- in start'"
30
- - "/home/lucas/.rvm/gems/ruby-2.3.3/gems/pry-0.13.1/lib/pry/input_lock.rb:61:in
31
- `__with_ownership'"
32
- - "/home/lucas/.rvm/gems/ruby-2.3.3/gems/pry-0.13.1/lib/pry/input_lock.rb:78:in
33
- `with_ownership'"
34
- - "/home/lucas/.rvm/gems/ruby-2.3.3/gems/pry-0.13.1/lib/pry/repl.rb:38:in `start'"
35
- - "/home/lucas/.rvm/gems/ruby-2.3.3/gems/pry-0.13.1/lib/pry/repl.rb:15:in `start'"
36
- - "/home/lucas/.rvm/gems/ruby-2.3.3/gems/pry-0.13.1/lib/pry/pry_class.rb:191:in
37
- `start'"
38
- - "/home/lucas/.irbrc:8:in `<top (required)>'"
39
- - "/usr/share/rvm/scripts/irbrc.rb:40:in `load'"
40
- - "/usr/share/rvm/scripts/irbrc.rb:40:in `<top (required)>'"
41
- - "/usr/share/rvm/rubies/ruby-2.3.3/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:54:in
42
- `require'"
43
- - "/usr/share/rvm/rubies/ruby-2.3.3/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:54:in
44
- `require'"
45
- - "/usr/share/rvm/rubies/ruby-2.3.3/.irbrc:11:in `<top (required)>'"
46
- - "/usr/share/rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/irb/init.rb:231:in `load'"
47
- - "/usr/share/rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/irb/init.rb:231:in `run_config'"
48
- - "/usr/share/rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/irb/init.rb:20:in `setup'"
49
- - "/usr/share/rvm/rubies/ruby-2.3.3/lib/ruby/2.3.0/irb.rb:378:in `start'"
50
- - "/usr/share/rvm/rubies/ruby-2.3.3/bin/irb:11:in `<main>'"