chili_logger 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.byebug_history +10 -0
- data/.gitignore +2 -0
- data/Gemfile +3 -2
- data/Gemfile.lock +23 -10
- data/chili_logger-0.0.1.gem +0 -0
- data/chili_logger.gemspec +3 -2
- data/lib/brokers/rabbit_broker.rb +31 -9
- data/lib/chili_logger.rb +20 -5
- data/lib/chili_logger/version.rb +1 -1
- data/lib/errors/{config_error.rb → error_messages/config_error.rb} +0 -0
- data/lib/errors/{rabbitmq_error.rb → error_messages/rabbitmq_error.rb} +0 -0
- data/lib/errors/logging_error_handler/logging_error_handler.rb +37 -0
- data/lib/errors/logging_error_handler/sqs_handler.rb +71 -0
- data/lib/message_writer/aws_ops_metadata.rb +0 -1
- data/lib/message_writer/message_writer.rb +12 -6
- data/log/chili-logger-coverage.yml +50 -0
- metadata +30 -13
- data/lib/helpers/rails_backtrace_cleaner.rb +0 -130
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cd18a0767d4bd7b2bcfb3ab126b667b3d0696d50937b895c555ff3d5a1e9e064
|
4
|
+
data.tar.gz: e4bf5de02cb00478f256b8f72c4d91198ba31f06e3b100ece8b3a8b3f0ea5db4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c7f4297ed8ae37aa9c5288a97df7dfbf4fccb2fefc3088bde8b3b73598625da57bdca91024d8452ddfe0b5d77e73356bef4f369b0c087cbe4b2497360ea40c24
|
7
|
+
data.tar.gz: 407653271688b085a8aa73af94ec54dd87885ff81d4261d7a5de8c65d29d08341e37f0443da5a37d599e3ad88901d4b01bfd60c62394cf6364c03fa0a2ba0f24
|
data/.byebug_history
CHANGED
@@ -1,4 +1,14 @@
|
|
1
1
|
continue
|
2
|
+
e.class
|
3
|
+
e.is_a?(Bunny:TCPConnectionFailed)
|
4
|
+
e
|
5
|
+
@sqs.send_message('queue_message')
|
6
|
+
@sqs.get_queue_url(queue_name: 'mockeesd').queue_url
|
7
|
+
@sqs.get_queue_url(queue_name: 'mock').queue_url
|
8
|
+
@sqs.get_queue_url(queue_name: queue_name).queue_url
|
9
|
+
@sqs
|
10
|
+
response
|
11
|
+
continue
|
2
12
|
cloud_metadata[@cloud_provider]
|
3
13
|
@cloud_provider
|
4
14
|
continue
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
@@ -3,11 +3,12 @@ source 'https://rubygems.org'
|
|
3
3
|
# Specify your gem's dependencies in chili_logger.gemspec
|
4
4
|
gemspec
|
5
5
|
|
6
|
-
gem
|
6
|
+
gem 'activerecord', '~> 5.2'
|
7
|
+
gem 'aws-sdk', '2.9.2'
|
7
8
|
gem 'bunny'
|
8
9
|
gem 'byebug'
|
9
10
|
gem 'rake', '~> 12.0'
|
10
11
|
gem 'rspec', '~> 3.0'
|
11
12
|
gem 'rubocop', '~> 0.60.0', require: false
|
12
13
|
|
13
|
-
gem
|
14
|
+
gem 'httparty', '~> 0.18.1'
|
data/Gemfile.lock
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
chili_logger (0.0.
|
5
|
-
|
6
|
-
|
4
|
+
chili_logger (0.0.3)
|
5
|
+
aws-sdk (~> 2.9.2)
|
6
|
+
bunny (~> 2.15.0)
|
7
|
+
httparty (~> 0.18.1)
|
7
8
|
|
8
9
|
GEM
|
9
10
|
remote: https://rubygems.org/
|
@@ -21,29 +22,40 @@ GEM
|
|
21
22
|
tzinfo (~> 1.1)
|
22
23
|
amq-protocol (2.3.1)
|
23
24
|
arel (9.0.0)
|
24
|
-
ast (2.4.
|
25
|
+
ast (2.4.1)
|
26
|
+
aws-eventstream (1.1.0)
|
27
|
+
aws-sdk (2.9.2)
|
28
|
+
aws-sdk-resources (= 2.9.2)
|
29
|
+
aws-sdk-core (2.9.2)
|
30
|
+
aws-sigv4 (~> 1.0)
|
31
|
+
jmespath (~> 1.0)
|
32
|
+
aws-sdk-resources (2.9.2)
|
33
|
+
aws-sdk-core (= 2.9.2)
|
34
|
+
aws-sigv4 (1.1.4)
|
35
|
+
aws-eventstream (~> 1.0, >= 1.0.2)
|
25
36
|
bunny (2.15.0)
|
26
37
|
amq-protocol (~> 2.3, >= 2.3.1)
|
27
38
|
byebug (11.0.1)
|
28
39
|
concurrent-ruby (1.1.6)
|
29
|
-
diff-lcs (1.
|
40
|
+
diff-lcs (1.4.2)
|
30
41
|
httparty (0.18.1)
|
31
42
|
mime-types (~> 3.0)
|
32
43
|
multi_xml (>= 0.5.2)
|
33
44
|
i18n (1.8.3)
|
34
45
|
concurrent-ruby (~> 1.0)
|
35
46
|
jaro_winkler (1.5.4)
|
47
|
+
jmespath (1.4.0)
|
36
48
|
mime-types (3.3.1)
|
37
49
|
mime-types-data (~> 3.2015)
|
38
50
|
mime-types-data (3.2020.0512)
|
39
51
|
minitest (5.14.1)
|
40
52
|
multi_xml (0.6.0)
|
41
|
-
parallel (1.19.
|
42
|
-
parser (2.7.1.
|
43
|
-
ast (~> 2.4.
|
53
|
+
parallel (1.19.2)
|
54
|
+
parser (2.7.1.4)
|
55
|
+
ast (~> 2.4.1)
|
44
56
|
powerpack (0.1.2)
|
45
57
|
rainbow (3.0.0)
|
46
|
-
rake (12.3.
|
58
|
+
rake (12.3.3)
|
47
59
|
rspec (3.9.0)
|
48
60
|
rspec-core (~> 3.9.0)
|
49
61
|
rspec-expectations (~> 3.9.0)
|
@@ -76,6 +88,7 @@ PLATFORMS
|
|
76
88
|
|
77
89
|
DEPENDENCIES
|
78
90
|
activerecord (~> 5.2)
|
91
|
+
aws-sdk (= 2.9.2)
|
79
92
|
bunny
|
80
93
|
byebug
|
81
94
|
chili_logger!
|
@@ -85,4 +98,4 @@ DEPENDENCIES
|
|
85
98
|
rubocop (~> 0.60.0)
|
86
99
|
|
87
100
|
BUNDLED WITH
|
88
|
-
|
101
|
+
1.17.3
|
Binary file
|
data/chili_logger.gemspec
CHANGED
@@ -11,8 +11,9 @@ Gem::Specification.new do |spec|
|
|
11
11
|
spec.homepage = 'https://gitlab.com/chiligumdev/chili_logger'
|
12
12
|
spec.license = 'MIT'
|
13
13
|
spec.required_ruby_version = Gem::Requirement.new('>= 2.3.0')
|
14
|
-
spec.add_dependency '
|
15
|
-
spec.add_dependency '
|
14
|
+
spec.add_dependency 'aws-sdk', '~> 2.9.2'
|
15
|
+
spec.add_dependency 'bunny', '~> 2.15.0'
|
16
|
+
spec.add_dependency 'httparty', '~> 0.18.1'
|
16
17
|
|
17
18
|
# Specify which files should be added to the gem when it is released.
|
18
19
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
@@ -1,10 +1,15 @@
|
|
1
1
|
require 'bunny'
|
2
|
-
require 'errors/rabbitmq_error'
|
2
|
+
require 'errors/error_messages/rabbitmq_error'
|
3
|
+
require 'errors/logging_error_handler/logging_error_handler'
|
3
4
|
|
4
5
|
# class for centralizing Creative's logging logic
|
5
6
|
class ChiliLogger
|
6
7
|
# class that configures and manages the RabbitMQ client
|
7
8
|
class RabbitBroker
|
9
|
+
def initialize(logging_error_handler)
|
10
|
+
@logging_error_handler = logging_error_handler
|
11
|
+
end
|
12
|
+
|
8
13
|
def config(config)
|
9
14
|
validate_config(config)
|
10
15
|
|
@@ -13,7 +18,7 @@ class ChiliLogger
|
|
13
18
|
@ip = config[:ip]
|
14
19
|
@port = config[:port]
|
15
20
|
@exchange_name = config[:exchange_name]
|
16
|
-
@
|
21
|
+
@routing_key_overwriter = config[:routing_key]
|
17
22
|
|
18
23
|
connect
|
19
24
|
end
|
@@ -21,15 +26,15 @@ class ChiliLogger
|
|
21
26
|
def connect
|
22
27
|
return if ChiliLogger.instance.deactivated
|
23
28
|
|
24
|
-
@connection = Bunny.new(
|
29
|
+
@connection = Bunny.new(connection_config)
|
25
30
|
@connection.start
|
26
31
|
|
27
32
|
@channel = @connection.create_channel
|
28
33
|
@exchange = @channel.topic(@exchange_name, durable: true)
|
29
34
|
|
30
|
-
|
31
|
-
|
32
|
-
|
35
|
+
rescue StandardError => e
|
36
|
+
puts 'Could not connect to RabbitMQ due to the following error:'
|
37
|
+
puts e
|
33
38
|
end
|
34
39
|
|
35
40
|
def disconnect
|
@@ -40,21 +45,38 @@ class ChiliLogger
|
|
40
45
|
return if ChiliLogger.instance.deactivated
|
41
46
|
|
42
47
|
# if no routing_key was provided when configuring RabbitBroker, than use the one received by the method here
|
43
|
-
# temporary solution so we can
|
44
|
-
key = @
|
48
|
+
# temporary solution so we can force configure ChiliLogger to use a specific routing_key
|
49
|
+
key = @routing_key_overwriter || routing_key
|
45
50
|
@exchange.publish(message.to_json, routing_key: key)
|
51
|
+
|
52
|
+
rescue StandardError => e
|
53
|
+
@logging_error_handler.handle_error(e, message)
|
46
54
|
end
|
47
55
|
|
48
56
|
private
|
49
57
|
|
50
58
|
def invalid_config_format_error
|
51
|
-
'The configuration object must
|
59
|
+
'The configuration object must be a Hash'
|
52
60
|
end
|
53
61
|
|
54
62
|
def config_attr_error(attr)
|
55
63
|
"The configuration object must include a ':#{attr}' attribute"
|
56
64
|
end
|
57
65
|
|
66
|
+
def connection_config
|
67
|
+
# shouldn't try to recover connection,
|
68
|
+
# it may cause app in production to collapse if reconnection doesn't work or takes too many attempts!!!
|
69
|
+
recovery_attempts = 0
|
70
|
+
|
71
|
+
{
|
72
|
+
user: @user,
|
73
|
+
password: @password,
|
74
|
+
host: @ip,
|
75
|
+
port: @port,
|
76
|
+
recovery_attempts: recovery_attempts
|
77
|
+
}
|
78
|
+
end
|
79
|
+
|
58
80
|
def validate_config(config)
|
59
81
|
raise(ChiliLogger::ConfigError, invalid_config_format_error) unless config.is_a?(Hash)
|
60
82
|
|
data/lib/chili_logger.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
require 'chili_logger/version'
|
2
2
|
require 'current_log_accessor'
|
3
|
-
require 'errors/config_error'
|
3
|
+
require 'errors/error_messages/config_error'
|
4
4
|
require 'brokers/rabbit_broker'
|
5
5
|
require 'message_writer/message_writer'
|
6
|
+
require 'errors/logging_error_handler/logging_error_handler'
|
6
7
|
require 'singleton'
|
7
8
|
|
8
9
|
# class for centralizing Creative's logging logic
|
@@ -16,6 +17,7 @@ class ChiliLogger
|
|
16
17
|
def config(config)
|
17
18
|
@deactivated = config[:deactivated] || false # ChilLogger can be deactivated for test environents
|
18
19
|
|
20
|
+
config_logging_error_handler(config)
|
19
21
|
config_msg_writer(config)
|
20
22
|
config_msg_broker(config)
|
21
23
|
|
@@ -45,6 +47,14 @@ class ChiliLogger
|
|
45
47
|
|
46
48
|
private
|
47
49
|
|
50
|
+
def config_logging_error_handler(general_config)
|
51
|
+
return @logging_error_handler = nil if @deactivated
|
52
|
+
|
53
|
+
error_handler_name = general_config[:error_handler]
|
54
|
+
handler_config = general_config[:error_handler_config]
|
55
|
+
@logging_error_handler = LoggingErrorHandler.new(error_handler_name, handler_config)
|
56
|
+
end
|
57
|
+
|
48
58
|
def config_msg_writer(general_config)
|
49
59
|
msg_writer_config = {
|
50
60
|
env: general_config[:log_env],
|
@@ -56,12 +66,17 @@ class ChiliLogger
|
|
56
66
|
@msg_writer = MessageWriter.new(msg_writer_config)
|
57
67
|
end
|
58
68
|
|
59
|
-
def config_msg_broker(
|
60
|
-
msg_broker_name =
|
61
|
-
msg_broker_config =
|
69
|
+
def config_msg_broker(general_config)
|
70
|
+
msg_broker_name = general_config[:msg_broker_name] || :rabbitmq
|
71
|
+
msg_broker_config = general_config[:msg_broker_config] || {}
|
62
72
|
@msg_broker = supported_msg_brokers[msg_broker_name.to_sym]
|
63
73
|
raise(ConfigError, broker_name_error(msg_broker_name)) unless @msg_broker
|
64
74
|
|
75
|
+
# TODO: implement MessageBroker class, an interface between ChiliLogger and possible brokers.
|
76
|
+
# TODO: add "supported_msg_broker", "broker_name_error" and "return @msg_broker if @deactivated" to MessageBroker
|
77
|
+
# prevents broker from even starting connection if ChiliLogger is deactivated
|
78
|
+
return @msg_broker if @deactivated
|
79
|
+
|
65
80
|
@msg_broker.config(msg_broker_config)
|
66
81
|
end
|
67
82
|
|
@@ -71,7 +86,7 @@ class ChiliLogger
|
|
71
86
|
|
72
87
|
def supported_msg_brokers
|
73
88
|
{
|
74
|
-
rabbitmq: RabbitBroker.new
|
89
|
+
rabbitmq: RabbitBroker.new(@logging_error_handler)
|
75
90
|
}
|
76
91
|
end
|
77
92
|
end
|
data/lib/chili_logger/version.rb
CHANGED
File without changes
|
File without changes
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'errors/logging_error_handler/sqs_handler'
|
2
|
+
require 'errors/error_messages/config_error'
|
3
|
+
|
4
|
+
# class for centralizing Creative's logging logic
|
5
|
+
class ChiliLogger
|
6
|
+
# class that handles errors when message broker can't be reached, etc...
|
7
|
+
class LoggingErrorHandler
|
8
|
+
def initialize(name, config)
|
9
|
+
raise(ChiliLogger::ConfigError, ':error_handler_config must be present and be a hash') unless config.is_a?(Hash)
|
10
|
+
|
11
|
+
name = name.to_sym if name
|
12
|
+
error_handler_class = supported_error_handlers[name]
|
13
|
+
unsupported_handler_error unless error_handler_class
|
14
|
+
|
15
|
+
@error_handler = error_handler_class.new(config)
|
16
|
+
end
|
17
|
+
|
18
|
+
def handle_error(error, log = nil)
|
19
|
+
@error_handler.handle_error(error, log)
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def unsupported_handler_error
|
25
|
+
error_handlers = supported_error_handlers.keys.join(', ')
|
26
|
+
unsupported_err = ":error_handler must be present and have one of the following values: #{error_handlers}"
|
27
|
+
|
28
|
+
raise(ChiliLogger::ConfigError, unsupported_err)
|
29
|
+
end
|
30
|
+
|
31
|
+
def supported_error_handlers
|
32
|
+
{
|
33
|
+
aws_sqs: AWS::SqsHandler
|
34
|
+
}
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'aws-sdk'
|
2
|
+
require 'errors/error_messages/rabbitmq_error'
|
3
|
+
|
4
|
+
# class for centralizing Creative's logging logic
|
5
|
+
class ChiliLogger
|
6
|
+
# module with classes using Amazon Web Services services
|
7
|
+
module AWS
|
8
|
+
# class that handles errors when message broker can't be reached, etc...
|
9
|
+
class SqsHandler
|
10
|
+
def initialize(config)
|
11
|
+
@sqs_config = validate_config(config)
|
12
|
+
@queue_name = config[:queue_name]
|
13
|
+
|
14
|
+
@sqs = Aws::SQS::Client.new(@sqs_config)
|
15
|
+
end
|
16
|
+
|
17
|
+
def handle_error(error = StandardError.new, log = 'not_specified')
|
18
|
+
message_body = message_body(error, log)
|
19
|
+
queue_message = queue_message(message_body)
|
20
|
+
|
21
|
+
@sqs.send_message(queue_message)
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def queue_message(message_body)
|
27
|
+
{
|
28
|
+
queue_url: queue_url(@queue_name),
|
29
|
+
message_body: message_body.to_json,
|
30
|
+
message_group_id: SecureRandom.hex(8).to_s,
|
31
|
+
message_deduplication_id: SecureRandom.hex(8).to_s
|
32
|
+
}
|
33
|
+
end
|
34
|
+
|
35
|
+
def message_body(error, log)
|
36
|
+
message_body = {
|
37
|
+
error_type: error.class.name,
|
38
|
+
error_message: error.message,
|
39
|
+
log: log
|
40
|
+
}
|
41
|
+
|
42
|
+
{ body: message_body }
|
43
|
+
end
|
44
|
+
|
45
|
+
def queue_url(queue_name)
|
46
|
+
@sqs.get_queue_url(queue_name: queue_name).queue_url
|
47
|
+
end
|
48
|
+
|
49
|
+
def invalid_config_format_error
|
50
|
+
'The :error_hanldler_config object must be a Hash'
|
51
|
+
end
|
52
|
+
|
53
|
+
def config_attr_error(attr)
|
54
|
+
"The configuration object must include a ':#{attr}' attribute"
|
55
|
+
end
|
56
|
+
|
57
|
+
def validate_config(config)
|
58
|
+
raise(ChiliLogger::ConfigError, invalid_config_format_error) unless config.is_a?(Hash)
|
59
|
+
|
60
|
+
main_config_keys = %i[region access_key_id secret_access_key queue_name]
|
61
|
+
main_config_keys.each { |key| raise(ChiliLogger::ConfigError, config_attr_error(key)) unless config[key] }
|
62
|
+
|
63
|
+
{
|
64
|
+
region: config[:region],
|
65
|
+
access_key_id: config[:access_key_id],
|
66
|
+
secret_access_key: config[:secret_access_key]
|
67
|
+
}
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'logs_coverage/coverage_writer'
|
2
|
-
require 'helpers/rails_backtrace_cleaner'
|
3
2
|
require 'message_writer/aws_ops_metadata'
|
4
3
|
|
5
4
|
# class for centralizing Creative's logging logic
|
@@ -11,7 +10,6 @@ class ChiliLogger
|
|
11
10
|
@layer = config[:layer] || 'not_specified'
|
12
11
|
@server_url = config[:server_url] || 'not_specified'
|
13
12
|
@cloud_provider = config[:cloud_provider]
|
14
|
-
@backtrace_cleaner = RailsBacktraceCleaner.new
|
15
13
|
end
|
16
14
|
|
17
15
|
def write(desc = {}, agent = 'not_specified', main_content = {})
|
@@ -20,11 +18,16 @@ class ChiliLogger
|
|
20
18
|
desc ||= {}
|
21
19
|
main_content ||= {}
|
22
20
|
|
23
|
-
main_content.merge!(
|
21
|
+
main_content.merge!( backtrace: clean_backtrace(caller) )
|
24
22
|
update_logs_coverage(desc, main_content)
|
25
23
|
message_hash(desc, agent, main_content)
|
26
24
|
end
|
27
25
|
|
26
|
+
def clean_backtrace(backtrace)
|
27
|
+
backtrace.reject! { |line| line =~ %r{bundle\/gems} }
|
28
|
+
backtrace
|
29
|
+
end
|
30
|
+
|
28
31
|
def write_description_tag(desc)
|
29
32
|
env = desc[:env] || @env
|
30
33
|
layer = desc[:layer] || @layer
|
@@ -39,7 +42,7 @@ class ChiliLogger
|
|
39
42
|
|
40
43
|
# uses message infos to keep logs_coverage up to date with what logs are being generated in the application
|
41
44
|
def update_logs_coverage(desc, main_content)
|
42
|
-
backtrace = main_content[:backtrace] ||
|
45
|
+
backtrace = main_content[:backtrace] || clean_backtrace(caller)
|
43
46
|
CoverageWriter.write(desc, backtrace)
|
44
47
|
end
|
45
48
|
|
@@ -64,15 +67,18 @@ class ChiliLogger
|
|
64
67
|
return unless @cloud_provider
|
65
68
|
|
66
69
|
provider = @cloud_provider.is_a?(String) ? @cloud_provider.to_sym : @cloud_provider
|
70
|
+
cloud_ops_metadata = cloud_metadata[provider]
|
71
|
+
return unless cloud_ops_metadata
|
72
|
+
|
67
73
|
{
|
68
74
|
server_url: @server_url,
|
69
|
-
cloud:
|
75
|
+
cloud: cloud_ops_metadata.write
|
70
76
|
}
|
71
77
|
end
|
72
78
|
|
73
79
|
def cloud_metadata
|
74
80
|
{
|
75
|
-
aws: AwsOpsMetadata
|
81
|
+
aws: AwsOpsMetadata
|
76
82
|
}
|
77
83
|
end
|
78
84
|
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
---
|
2
|
+
test:
|
3
|
+
console:
|
4
|
+
publish_test:
|
5
|
+
- "/home/lucas/.rvm/gems/ruby-2.3.3/gems/chili_logger-0.0.2/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>'"
|
metadata
CHANGED
@@ -1,43 +1,57 @@
|
|
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.3
|
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-
|
11
|
+
date: 2020-07-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: aws-sdk
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 2.9.2
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 2.9.2
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: bunny
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
16
30
|
requirements:
|
17
|
-
- - "
|
31
|
+
- - "~>"
|
18
32
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
33
|
+
version: 2.15.0
|
20
34
|
type: :runtime
|
21
35
|
prerelease: false
|
22
36
|
version_requirements: !ruby/object:Gem::Requirement
|
23
37
|
requirements:
|
24
|
-
- - "
|
38
|
+
- - "~>"
|
25
39
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
40
|
+
version: 2.15.0
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: httparty
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
30
44
|
requirements:
|
31
|
-
- - "
|
45
|
+
- - "~>"
|
32
46
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
47
|
+
version: 0.18.1
|
34
48
|
type: :runtime
|
35
49
|
prerelease: false
|
36
50
|
version_requirements: !ruby/object:Gem::Requirement
|
37
51
|
requirements:
|
38
|
-
- - "
|
52
|
+
- - "~>"
|
39
53
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
54
|
+
version: 0.18.1
|
41
55
|
description: placeholder
|
42
56
|
email:
|
43
57
|
- lucas.sandeville@gmail.com
|
@@ -57,19 +71,22 @@ files:
|
|
57
71
|
- Rakefile
|
58
72
|
- bin/console
|
59
73
|
- bin/setup
|
74
|
+
- chili_logger-0.0.1.gem
|
60
75
|
- chili_logger.gemspec
|
61
76
|
- lib/brokers/rabbit_broker.rb
|
62
77
|
- lib/chili_logger.rb
|
63
78
|
- lib/chili_logger/version.rb
|
64
79
|
- lib/current_log_accessor.rb
|
65
|
-
- lib/errors/config_error.rb
|
66
|
-
- lib/errors/rabbitmq_error.rb
|
67
|
-
- lib/
|
80
|
+
- lib/errors/error_messages/config_error.rb
|
81
|
+
- lib/errors/error_messages/rabbitmq_error.rb
|
82
|
+
- lib/errors/logging_error_handler/logging_error_handler.rb
|
83
|
+
- lib/errors/logging_error_handler/sqs_handler.rb
|
68
84
|
- lib/logs_coverage/chili_logger_coverage.yml
|
69
85
|
- lib/logs_coverage/coverage_writer.rb
|
70
86
|
- lib/logs_coverage/levantamento_provisório.yaml
|
71
87
|
- lib/message_writer/aws_ops_metadata.rb
|
72
88
|
- lib/message_writer/message_writer.rb
|
89
|
+
- log/chili-logger-coverage.yml
|
73
90
|
homepage: https://gitlab.com/chiligumdev/chili_logger
|
74
91
|
licenses:
|
75
92
|
- MIT
|
@@ -1,130 +0,0 @@
|
|
1
|
-
# Backtraces often include many lines that are not relevant for the context
|
2
|
-
# under review. This makes it hard to find the signal amongst the backtrace
|
3
|
-
# noise, and adds debugging time. With a BacktraceCleaner, filters and
|
4
|
-
# silencers are used to remove the noisy lines, so that only the most relevant
|
5
|
-
# lines remain.
|
6
|
-
#
|
7
|
-
# Filters are used to modify lines of data, while silencers are used to remove
|
8
|
-
# lines entirely. The typical filter use case is to remove lengthy path
|
9
|
-
# information from the start of each line, and view file paths relevant to the
|
10
|
-
# app directory instead of the file system root. The typical silencer use case
|
11
|
-
# is to exclude the output of a noisy library from the backtrace, so that you
|
12
|
-
# can focus on the rest.
|
13
|
-
#
|
14
|
-
# bc = ActiveSupport::BacktraceCleaner.new
|
15
|
-
# bc.add_filter { |line| line.gsub(Rails.root.to_s, '') } # strip the Rails.root prefix
|
16
|
-
# bc.add_silencer { |line| line =~ /puma|rubygems/ } # skip any lines from puma or rubygems
|
17
|
-
# bc.clean(exception.backtrace) # perform the cleanup
|
18
|
-
#
|
19
|
-
# To reconfigure an existing BacktraceCleaner (like the default one in Rails)
|
20
|
-
# and show as much data as possible, you can always call
|
21
|
-
# <tt>BacktraceCleaner#remove_silencers!</tt>, which will restore the
|
22
|
-
# backtrace to a pristine state. If you need to reconfigure an existing
|
23
|
-
# BacktraceCleaner so that it does not filter or modify the paths of any lines
|
24
|
-
# of the backtrace, you can call <tt>BacktraceCleaner#remove_filters!</tt>
|
25
|
-
# These two methods will give you a completely untouched backtrace.
|
26
|
-
|
27
|
-
# BacktraceCleaner from Rails, copied ipsis literis
|
28
|
-
# github: https://github.com/rails/rails/blob/fbe2433be6e052a1acac63c7faf287c52ed3c5ba/activesupport/lib/active_support/backtrace_cleaner.rb#L41
|
29
|
-
class RailsBacktraceCleaner
|
30
|
-
def initialize
|
31
|
-
@filters = []
|
32
|
-
@silencers = []
|
33
|
-
add_gem_filter
|
34
|
-
add_gem_silencer
|
35
|
-
add_stdlib_silencer
|
36
|
-
end
|
37
|
-
|
38
|
-
# Returns the backtrace after all filters and silencers have been run
|
39
|
-
# against it. Filters run first, then silencers.
|
40
|
-
def clean(backtrace, kind = :silent)
|
41
|
-
filtered = filter_backtrace(backtrace)
|
42
|
-
|
43
|
-
case kind
|
44
|
-
when :silent
|
45
|
-
silence(filtered)
|
46
|
-
when :noise
|
47
|
-
noise(filtered)
|
48
|
-
else
|
49
|
-
filtered
|
50
|
-
end
|
51
|
-
end
|
52
|
-
alias filter clean
|
53
|
-
|
54
|
-
# Adds a filter from the block provided. Each line in the backtrace will be
|
55
|
-
# mapped against this filter.
|
56
|
-
#
|
57
|
-
# # Will turn "/my/rails/root/app/models/person.rb" into "/app/models/person.rb"
|
58
|
-
# backtrace_cleaner.add_filter { |line| line.gsub(Rails.root, '') }
|
59
|
-
def add_filter(&block)
|
60
|
-
@filters << block
|
61
|
-
end
|
62
|
-
|
63
|
-
# Adds a silencer from the block provided. If the silencer returns +true+
|
64
|
-
# for a given line, it will be excluded from the clean backtrace.
|
65
|
-
#
|
66
|
-
# # Will reject all lines that include the word "puma", like "/gems/puma/server.rb" or "/app/my_puma_server/rb"
|
67
|
-
# backtrace_cleaner.add_silencer { |line| line =~ /puma/ }
|
68
|
-
def add_silencer(&block)
|
69
|
-
@silencers << block
|
70
|
-
end
|
71
|
-
|
72
|
-
# Removes all silencers, but leaves in the filters. Useful if your
|
73
|
-
# context of debugging suddenly expands as you suspect a bug in one of
|
74
|
-
# the libraries you use.
|
75
|
-
def remove_silencers!
|
76
|
-
@silencers = []
|
77
|
-
end
|
78
|
-
|
79
|
-
# Removes all filters, but leaves in the silencers. Useful if you suddenly
|
80
|
-
# need to see entire filepaths in the backtrace that you had already
|
81
|
-
# filtered out.
|
82
|
-
def remove_filters!
|
83
|
-
@filters = []
|
84
|
-
end
|
85
|
-
|
86
|
-
private
|
87
|
-
|
88
|
-
FORMATTED_GEMS_PATTERN = %r{/\A[^\/]+ \([\w.]+\) /}.freeze
|
89
|
-
|
90
|
-
def add_gem_filter
|
91
|
-
gems_paths = (Gem.path | [Gem.default_dir]).map { |p| Regexp.escape(p) }
|
92
|
-
return if gems_paths.empty?
|
93
|
-
|
94
|
-
gems_regexp = %r{(#{gems_paths.join('|')})/(bundler/)?gems/([^/]+)-([\w.]+)/(.*)}
|
95
|
-
gems_result = '\3 (\4) \5'
|
96
|
-
add_filter { |line| line.sub(gems_regexp, gems_result) }
|
97
|
-
end
|
98
|
-
|
99
|
-
def add_gem_silencer
|
100
|
-
add_silencer { |line| FORMATTED_GEMS_PATTERN.match(line).nil? }
|
101
|
-
end
|
102
|
-
|
103
|
-
def add_stdlib_silencer
|
104
|
-
add_silencer { |line| line.start_with?(RbConfig::CONFIG['rubylibdir']) }
|
105
|
-
end
|
106
|
-
|
107
|
-
def filter_backtrace(backtrace)
|
108
|
-
@filters.each do |f|
|
109
|
-
backtrace = backtrace.map { |line| f.call(line) }
|
110
|
-
end
|
111
|
-
|
112
|
-
backtrace
|
113
|
-
end
|
114
|
-
|
115
|
-
def silence(backtrace)
|
116
|
-
@silencers.each do |s|
|
117
|
-
backtrace = backtrace.reject { |line| s.call(line) }
|
118
|
-
end
|
119
|
-
|
120
|
-
backtrace
|
121
|
-
end
|
122
|
-
|
123
|
-
def noise(backtrace)
|
124
|
-
backtrace.select do |line|
|
125
|
-
@silencers.any? do |s|
|
126
|
-
s.call(line)
|
127
|
-
end
|
128
|
-
end
|
129
|
-
end
|
130
|
-
end
|