ezlog 0.3.5 → 0.4.0
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/CHANGELOG.md +13 -0
- data/ezlog.gemspec +2 -0
- data/lib/ezlog.rb +2 -0
- data/lib/ezlog/rails.rb +1 -0
- data/lib/ezlog/rails/active_record.rb +7 -0
- data/lib/ezlog/rails/active_record/log_subscriber.rb +49 -0
- data/lib/ezlog/rails/extensions.rb +9 -0
- data/lib/ezlog/rails/log_subscriber.rb +12 -6
- data/lib/ezlog/railtie.rb +15 -6
- data/lib/ezlog/version.rb +1 -1
- data/lib/sequel/extensions/ezlog_logging.rb +15 -0
- metadata +35 -4
- data/lib/ezlog/rails/debug_exceptions.rb +0 -8
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a13352755faf442588dbe56813e8cc770f94c088455497f98b7d826ced91ff10
|
|
4
|
+
data.tar.gz: ea44535055ff6b6d33809e826113a4121277dc9c7e74faaf82f7516e40301daa
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 02e113881e70f1b46123156b2cad9682100a7006b822f5c93a18200be3aba8de8cc852b904591f505236ca1d867f3eb725fd9a310fdef7e395ccf7fe85c8ee2c
|
|
7
|
+
data.tar.gz: 98ef1ef8fc146fd662354db14ae07febbfde6296b4545bc5aace9776164648052fd497953f68b5e7ddca3e26d99e30466bd4f10a24d0632e26f60cbbb97915ee
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
### 0.4.0 (2019-09-06)
|
|
2
|
+
|
|
3
|
+
[Full Changelog](https://github.com/emartech/ezlog/compare/v0.3.5...v0.4.0)
|
|
4
|
+
|
|
5
|
+
* Features & enhancements
|
|
6
|
+
* Added log context management methods `within_log_context` and `add_to_log_context` to Ezlog module.
|
|
7
|
+
* Replaced ActiveRecord query logging with a log subscriber that logs queries via Ezlog.
|
|
8
|
+
* Added automatic query logging (at DEBUG level) to Sequel connections.
|
|
9
|
+
|
|
10
|
+
* Bug fixes
|
|
11
|
+
* ActionDispatch::DebugExceptions is no longer replaced because other gems
|
|
12
|
+
(like [web-console](https://github.com/rails/web-console)) are depending on it.
|
|
13
|
+
|
|
1
14
|
### 0.3.5 (2019-08-14)
|
|
2
15
|
|
|
3
16
|
[Full Changelog](https://github.com/emartech/ezlog/compare/v0.3.4...v0.3.5)
|
data/ezlog.gemspec
CHANGED
|
@@ -28,5 +28,7 @@ Gem::Specification.new do |spec|
|
|
|
28
28
|
spec.add_development_dependency "rake", "~> 10.0"
|
|
29
29
|
spec.add_development_dependency "rspec", "~> 3.0"
|
|
30
30
|
spec.add_development_dependency "sidekiq", "~> 5.0"
|
|
31
|
+
spec.add_development_dependency "sequel", "~> 5.0"
|
|
31
32
|
spec.add_development_dependency "actionpack", "~> 5.0"
|
|
33
|
+
spec.add_development_dependency "activerecord", "~> 5.0"
|
|
32
34
|
end
|
data/lib/ezlog.rb
CHANGED
data/lib/ezlog/rails.rb
CHANGED
|
@@ -4,6 +4,7 @@ require "action_controller/log_subscriber"
|
|
|
4
4
|
module Ezlog
|
|
5
5
|
module Rails
|
|
6
6
|
autoload :AccessLog, 'ezlog/rails/access_log'
|
|
7
|
+
autoload :ActiveRecord, 'ezlog/rails/active_record'
|
|
7
8
|
autoload :DebugExceptions, 'ezlog/rails/debug_exceptions'
|
|
8
9
|
autoload :LogExceptions, 'ezlog/rails/log_exceptions'
|
|
9
10
|
autoload :RequestLogContext, 'ezlog/rails/request_log_context'
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
module Ezlog
|
|
2
|
+
module Rails
|
|
3
|
+
module ActiveRecord
|
|
4
|
+
class LogSubscriber < ::ActiveSupport::LogSubscriber
|
|
5
|
+
def sql(event)
|
|
6
|
+
::ActiveRecord::Base.logger.debug log_message_from(event)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
private
|
|
10
|
+
|
|
11
|
+
def log_message_from(event)
|
|
12
|
+
basic_message_from(event).tap do |message|
|
|
13
|
+
params = params_from event
|
|
14
|
+
message[:params] = params if params.any?
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def basic_message_from(event)
|
|
19
|
+
{
|
|
20
|
+
message: "SQL - #{event.payload[:name]} (#{event.duration.round(3)}ms)",
|
|
21
|
+
sql: event.payload[:sql],
|
|
22
|
+
duration_sec: (event.duration / 1000.0).round(5)
|
|
23
|
+
}
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def params_from(event)
|
|
27
|
+
return {} if event.payload.fetch(:binds, []).empty?
|
|
28
|
+
|
|
29
|
+
params = event.payload[:binds]
|
|
30
|
+
values = type_casted_values_from event
|
|
31
|
+
param_value_pairs = params.zip(values).map do |param, value|
|
|
32
|
+
[param.name, value_of(param, value)]
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
Hash[param_value_pairs]
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def type_casted_values_from(event)
|
|
39
|
+
binds = event.payload[:type_casted_binds]
|
|
40
|
+
binds.respond_to?(:call) ? binds.call : binds
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def value_of(param, value)
|
|
44
|
+
param.type.binary? ? '-binary data-' : value
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
module Ezlog
|
|
2
2
|
module Rails
|
|
3
3
|
class LogSubscriber
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
class << self
|
|
5
|
+
def detach(subscriber_class)
|
|
6
|
+
subscriber = ::ActiveSupport::LogSubscriber.log_subscribers.find { |subscriber| subscriber.is_a? subscriber_class }
|
|
7
|
+
return unless subscriber
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
subscriber.patterns.each do |pattern|
|
|
10
|
+
::ActiveSupport::Notifications.notifier.listeners_for(pattern).each do |listener|
|
|
11
|
+
::ActiveSupport::Notifications.unsubscribe listener if listener.instance_variable_get('@delegate').is_a? subscriber_class
|
|
12
|
+
end
|
|
11
13
|
end
|
|
12
14
|
end
|
|
15
|
+
|
|
16
|
+
def attach(subscriber_class, namespace)
|
|
17
|
+
subscriber_class.attach_to namespace
|
|
18
|
+
end
|
|
13
19
|
end
|
|
14
20
|
end
|
|
15
21
|
end
|
data/lib/ezlog/railtie.rb
CHANGED
|
@@ -1,29 +1,38 @@
|
|
|
1
1
|
module Ezlog
|
|
2
2
|
class Railtie < Rails::Railtie
|
|
3
|
+
initializer "ezlog.initialize" do
|
|
4
|
+
require "ezlog/rails/extensions"
|
|
5
|
+
end
|
|
6
|
+
|
|
3
7
|
initializer 'ezlog.configure_logging' do |app|
|
|
4
8
|
::Logging.logger.root.appenders = ::Logging.appenders.stdout 'stdout', layout: Ezlog::LoggingLayout.new(environment: ::Rails.env)
|
|
5
9
|
::Logging.logger.root.level = app.config.log_level
|
|
6
10
|
end
|
|
7
11
|
|
|
8
|
-
initializer 'ezlog.
|
|
12
|
+
initializer 'ezlog.configure_sidekiq' do |app|
|
|
9
13
|
initialize_sidekiq_logging(app) if defined? ::Sidekiq
|
|
10
14
|
end
|
|
11
15
|
|
|
12
|
-
initializer 'ezlog.
|
|
16
|
+
initializer 'ezlog.configure_sequel' do
|
|
17
|
+
::Sequel::Database.extension :ezlog_logging if defined? ::Sequel
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
initializer 'ezlog.configure_rack_timeout' do
|
|
13
21
|
disable_rack_timeout_logging if defined? ::Rack::Timeout
|
|
14
22
|
end
|
|
15
23
|
|
|
16
|
-
initializer 'ezlog.
|
|
24
|
+
initializer 'ezlog.configure_rails_middlewares' do |app|
|
|
17
25
|
app.config.middleware.insert_after ::ActionDispatch::RequestId, Ezlog::Rails::RequestLogContext
|
|
18
26
|
app.config.middleware.delete ::Rails::Rack::Logger
|
|
19
|
-
app.config.middleware.
|
|
20
|
-
app.config.middleware.
|
|
21
|
-
app.config.middleware.insert_after Ezlog::Rails::DebugExceptions, Ezlog::Rails::LogExceptions, Ezlog.logger('Application')
|
|
27
|
+
app.config.middleware.insert_before ::ActionDispatch::DebugExceptions, Ezlog::Rails::AccessLog, Ezlog.logger('AccessLog')
|
|
28
|
+
app.config.middleware.insert_after ::ActionDispatch::DebugExceptions, Ezlog::Rails::LogExceptions, Ezlog.logger('Application')
|
|
22
29
|
end
|
|
23
30
|
|
|
24
31
|
config.after_initialize do
|
|
25
32
|
Ezlog::Rails::LogSubscriber.detach ::ActionController::LogSubscriber
|
|
26
33
|
Ezlog::Rails::LogSubscriber.detach ::ActionView::LogSubscriber
|
|
34
|
+
Ezlog::Rails::LogSubscriber.detach ::ActiveRecord::LogSubscriber
|
|
35
|
+
Ezlog::Rails::LogSubscriber.attach Ezlog::Rails::ActiveRecord::LogSubscriber, :active_record
|
|
27
36
|
end
|
|
28
37
|
|
|
29
38
|
config.before_configuration do |app|
|
data/lib/ezlog/version.rb
CHANGED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module Ezlog
|
|
2
|
+
module Sequel
|
|
3
|
+
module LoggingExtension
|
|
4
|
+
def self.extended(db)
|
|
5
|
+
db.instance_exec do
|
|
6
|
+
self.sql_log_level = :debug
|
|
7
|
+
self.log_connection_info = false
|
|
8
|
+
@loggers << Ezlog.logger('Sequel')
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
::Sequel::Database.register_extension :ezlog_logging, LoggingExtension
|
|
14
|
+
end
|
|
15
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ezlog
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Zoltan Ormandi
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2019-
|
|
11
|
+
date: 2019-09-06 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: logging
|
|
@@ -80,6 +80,20 @@ dependencies:
|
|
|
80
80
|
- - "~>"
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
82
|
version: '5.0'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: sequel
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - "~>"
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '5.0'
|
|
90
|
+
type: :development
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - "~>"
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '5.0'
|
|
83
97
|
- !ruby/object:Gem::Dependency
|
|
84
98
|
name: actionpack
|
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -94,6 +108,20 @@ dependencies:
|
|
|
94
108
|
- - "~>"
|
|
95
109
|
- !ruby/object:Gem::Version
|
|
96
110
|
version: '5.0'
|
|
111
|
+
- !ruby/object:Gem::Dependency
|
|
112
|
+
name: activerecord
|
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
|
114
|
+
requirements:
|
|
115
|
+
- - "~>"
|
|
116
|
+
- !ruby/object:Gem::Version
|
|
117
|
+
version: '5.0'
|
|
118
|
+
type: :development
|
|
119
|
+
prerelease: false
|
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
+
requirements:
|
|
122
|
+
- - "~>"
|
|
123
|
+
- !ruby/object:Gem::Version
|
|
124
|
+
version: '5.0'
|
|
97
125
|
description:
|
|
98
126
|
email:
|
|
99
127
|
- zoltan.ormandi@emarsys.com
|
|
@@ -117,7 +145,9 @@ files:
|
|
|
117
145
|
- lib/ezlog/logging_layout.rb
|
|
118
146
|
- lib/ezlog/rails.rb
|
|
119
147
|
- lib/ezlog/rails/access_log.rb
|
|
120
|
-
- lib/ezlog/rails/
|
|
148
|
+
- lib/ezlog/rails/active_record.rb
|
|
149
|
+
- lib/ezlog/rails/active_record/log_subscriber.rb
|
|
150
|
+
- lib/ezlog/rails/extensions.rb
|
|
121
151
|
- lib/ezlog/rails/log_exceptions.rb
|
|
122
152
|
- lib/ezlog/rails/log_subscriber.rb
|
|
123
153
|
- lib/ezlog/rails/request_log_context.rb
|
|
@@ -130,6 +160,7 @@ files:
|
|
|
130
160
|
- lib/ezlog/sidekiq/job_context.rb
|
|
131
161
|
- lib/ezlog/sidekiq/job_logger.rb
|
|
132
162
|
- lib/ezlog/version.rb
|
|
163
|
+
- lib/sequel/extensions/ezlog_logging.rb
|
|
133
164
|
homepage: https://github.com/emartech/ezlog
|
|
134
165
|
licenses:
|
|
135
166
|
- MIT
|
|
@@ -150,7 +181,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
150
181
|
- !ruby/object:Gem::Version
|
|
151
182
|
version: '0'
|
|
152
183
|
requirements: []
|
|
153
|
-
rubygems_version: 3.0.
|
|
184
|
+
rubygems_version: 3.0.3
|
|
154
185
|
signing_key:
|
|
155
186
|
specification_version: 4
|
|
156
187
|
summary: A zero-configuration logging solution for projects using Sidekiq, Rails,
|