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.
- checksums.yaml +4 -4
- data/.byebug_history +78 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +9 -1
- data/README.md +692 -34
- data/assets/images/chili-logger-flow.png +0 -0
- data/assets/images/chiligum-logging-system.gif +0 -0
- data/assets/images/rabbit-basic-functioning.png +0 -0
- data/assets/images/rabbit-topic-explanation.webp +0 -0
- data/chili_logger-0.0.7.gem +0 -0
- data/lib/brokers/rabbit_broker.rb +8 -3
- data/lib/{errors/logging_error_handler/sqs_handler.rb → brokers/sqs_broker.rb} +4 -14
- data/lib/chili_logger.rb +33 -14
- data/lib/chili_logger/version.rb +1 -1
- data/lib/current_log_accessor.rb +77 -53
- data/lib/errors/logging_error_handler/logging_error_handler.rb +23 -14
- data/lib/{logs_coverage → helpers/logs_coverage}/chili_logger_coverage.yml +0 -0
- data/lib/{logs_coverage → helpers/logs_coverage}/coverage_writer.rb +20 -14
- data/lib/{logs_coverage → helpers/logs_coverage}/levantamento_provis/303/263rio.yaml +0 -0
- data/lib/helpers/values/default.rb +92 -0
- data/lib/helpers/values/type_uniformizer/desc.rb +64 -0
- data/lib/helpers/values/type_uniformizer/main_content.rb +62 -0
- data/lib/helpers/values/type_uniformizer/user.rb +43 -0
- data/lib/message_writer/aws_ops_metadata.rb +1 -1
- data/lib/message_writer/message_writer.rb +21 -18
- metadata +15 -8
- data/lib/errors/error_messages/rabbitmq_error.rb +0 -9
- data/log/chili-logger-coverage.yml +0 -50
File without changes
|
@@ -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,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
|
-
@
|
10
|
-
@
|
11
|
-
@
|
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(
|
16
|
+
def write(**options)
|
16
17
|
return if ChiliLogger.instance.deactivated
|
17
18
|
|
18
|
-
desc
|
19
|
-
|
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
|
23
|
+
main_content[:backtrace] = clean_backtrace(caller)
|
22
24
|
update_logs_coverage(desc, main_content)
|
23
|
-
message_hash(desc,
|
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] ||
|
35
|
-
service = desc[:service] ||
|
36
|
-
action = desc[:action] ||
|
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(
|
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] ||
|
56
|
-
service: desc[:service] ||
|
57
|
-
action: desc[:action] ||
|
58
|
-
|
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.
|
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-
|
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/
|
90
|
-
- lib/logs_coverage/
|
91
|
-
- lib/logs_coverage/
|
92
|
-
- lib/
|
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,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>'"
|