scout_apm_logging 0.0.7 → 0.0.9
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 +9 -0
- data/lib/scout_apm/logging/loggers/formatter.rb +6 -1
- data/lib/scout_apm/logging/loggers/logger.rb +2 -0
- data/lib/scout_apm/logging/loggers/patches/tagged_logging.rb +14 -5
- data/lib/scout_apm/logging/loggers/proxy.rb +3 -3
- data/lib/scout_apm/logging/loggers/swaps/rails.rb +9 -1
- data/lib/scout_apm/logging/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 55f7d2c11024d2dba505a31f9a95face612da9befd41e70cce442655e5647711
|
4
|
+
data.tar.gz: 0d4b6f542d73fd0b435296e465f814b1593d7d52ae5dd31d7b07965c3e52e2a6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 35c113e4c84c336657d4a312385f7b23328518112be3f7a0a234eca56fd66422d264121dd0dbd19bf206ef309904ab9b3a4d40a4b50741185966979a8cb4c1a3
|
7
|
+
data.tar.gz: 6e196f2c3625af8ecc6d898a653be40f1e61511e9e20a4b7a30f5a9efa93c3eba6fda5f6bbcb3d43546800ae64b5b1fdd879d697a57f9e4e740e82b4ee350a3e
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
## 0.0.9
|
2
|
+
* Add Scout Transaction ID to log attributes.
|
3
|
+
|
4
|
+
## 0.0.8
|
5
|
+
* Fix internal method names for proxy logger to prevent accidental overriding.
|
6
|
+
* Re-broadcast to console in development for the proxy logger.
|
7
|
+
* Fix tags not being removed when yielded contents throw an exception.
|
8
|
+
* Fix missing return statement, where tagged logging patches were being added to unintended loggers.
|
9
|
+
|
1
10
|
## 0.0.7
|
2
11
|
* Fix determined logger level comparison
|
3
12
|
|
@@ -12,7 +12,7 @@ module ScoutApm
|
|
12
12
|
class Formatter < ::Logger::Formatter
|
13
13
|
DATETIME_FORMAT = '%Y-%m-%dT%H:%M:%S.%LZ'
|
14
14
|
|
15
|
-
def call(severity, time, progname, msg)
|
15
|
+
def call(severity, time, progname, msg) # rubocop:disable Metrics/AbcSize
|
16
16
|
attributes_to_log = {
|
17
17
|
severity: severity,
|
18
18
|
time: format_datetime(time),
|
@@ -23,6 +23,7 @@ module ScoutApm
|
|
23
23
|
attributes_to_log[:progname] = progname if progname
|
24
24
|
attributes_to_log['service.name'] = service_name
|
25
25
|
|
26
|
+
attributes_to_log.merge!(scout_transaction_id)
|
26
27
|
attributes_to_log.merge!(scout_layer)
|
27
28
|
attributes_to_log.merge!(scout_context)
|
28
29
|
# Naive local benchmarks show this takes around 200 microseconds. As such, we only apply it to WARN and above.
|
@@ -66,6 +67,10 @@ module ScoutApm
|
|
66
67
|
user_context.transform_keys { |key| "user.#{key}" }.merge(extra_context)
|
67
68
|
end
|
68
69
|
|
70
|
+
def scout_transaction_id
|
71
|
+
{ "scout_transaction_id": ScoutApm::RequestManager.lookup.transaction_id }
|
72
|
+
end
|
73
|
+
|
69
74
|
def local_log_location
|
70
75
|
# Should give us the last local stack which called the log within just the last couple frames.
|
71
76
|
last_local_location = caller[0..15].find { |path| path.include?(Rails.root.to_s) }
|
@@ -3,7 +3,9 @@
|
|
3
3
|
module ScoutApm
|
4
4
|
module Logging
|
5
5
|
module Loggers
|
6
|
+
# The actual instance of the logger.
|
6
7
|
class FileLogger < ::Logger
|
8
|
+
include ::ActiveSupport::LoggerSilence if const_defined?('::ActiveSupport::LoggerSilence')
|
7
9
|
end
|
8
10
|
|
9
11
|
# The newly created logger which we can configure, and will log to a filepath.
|
@@ -11,8 +11,8 @@ module ScoutApm
|
|
11
11
|
# Patches TaggedLogging to work with our loggers.
|
12
12
|
module TaggedLogging
|
13
13
|
def tagged(*tags) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
14
|
-
super(*tags) unless (self == ::Rails.logger && is_a?(ScoutApm::Logging::Loggers::Proxy)) ||
|
15
|
-
|
14
|
+
return super(*tags) unless (self == ::Rails.logger && is_a?(ScoutApm::Logging::Loggers::Proxy)) ||
|
15
|
+
(::Rails.logger.respond_to?(:broadcasts) && ::Rails.logger.broadcasts.include?(self))
|
16
16
|
|
17
17
|
if is_a?(ScoutApm::Logging::Loggers::Proxy)
|
18
18
|
if block_given?
|
@@ -20,8 +20,13 @@ module ScoutApm
|
|
20
20
|
loggers = @loggers[1..]
|
21
21
|
pushed_counts = extend_and_push_tags(loggers, *tags)
|
22
22
|
|
23
|
-
|
23
|
+
begin
|
24
|
+
formatter.tagged(*tags) { yield self }.tap do
|
25
|
+
logger_pop_tags(loggers, pushed_counts)
|
26
|
+
end
|
27
|
+
rescue StandardError => e
|
24
28
|
logger_pop_tags(loggers, pushed_counts)
|
29
|
+
raise e
|
25
30
|
end
|
26
31
|
else
|
27
32
|
loggers = instance_variable_get(:@loggers)
|
@@ -36,9 +41,13 @@ module ScoutApm
|
|
36
41
|
# We skip the first logger to prevent double tagging when calling formatter.tagged
|
37
42
|
loggers = ::Rails.logger.broadcasts[1..]
|
38
43
|
pushed_counts = extend_and_push_tags(loggers, *tags)
|
39
|
-
|
40
|
-
|
44
|
+
begin
|
45
|
+
formatter.tagged(*tags) { yield self }.tap do
|
46
|
+
logger_pop_tags(loggers, pushed_counts)
|
47
|
+
end
|
48
|
+
rescue StandardError => e
|
41
49
|
logger_pop_tags(loggers, pushed_counts)
|
50
|
+
raise e
|
42
51
|
end
|
43
52
|
else
|
44
53
|
broadcasts = ::Rails.logger.broadcasts
|
@@ -7,7 +7,7 @@ module ScoutApm
|
|
7
7
|
class Proxy
|
8
8
|
def self.create_with_loggers(*loggers)
|
9
9
|
new.tap do |proxy_logger|
|
10
|
-
loggers.each { |logger| proxy_logger.
|
10
|
+
loggers.each { |logger| proxy_logger.add_scout_loggers(logger) }
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
@@ -15,11 +15,11 @@ module ScoutApm
|
|
15
15
|
@loggers = []
|
16
16
|
end
|
17
17
|
|
18
|
-
def
|
18
|
+
def add_scout_loggers(logger)
|
19
19
|
@loggers << logger
|
20
20
|
end
|
21
21
|
|
22
|
-
def
|
22
|
+
def remove_scout_loggers(logger)
|
23
23
|
@loggers.reject! { |inst_log| inst_log == logger }
|
24
24
|
|
25
25
|
@loggers
|
@@ -38,7 +38,7 @@ module ScoutApm
|
|
38
38
|
end
|
39
39
|
|
40
40
|
# Eseentially creates the original logger.
|
41
|
-
def original_logger
|
41
|
+
def original_logger # rubocop:disable Metrics/AbcSize
|
42
42
|
# We can use the previous logdev. log_device will continuously call write
|
43
43
|
# through the devices until the logdev (@dev) is an IO device other than logdev:
|
44
44
|
# https://github.com/ruby/ruby/blob/master/lib/logger/log_device.rb#L42
|
@@ -48,6 +48,14 @@ module ScoutApm
|
|
48
48
|
::Logger.new(original_logdevice).tap do |logger|
|
49
49
|
logger.level = log_instance.level
|
50
50
|
logger.formatter = log_instance.formatter
|
51
|
+
|
52
|
+
if ::Rails.env.development? && $stdout.tty? && $stderr.tty?
|
53
|
+
next if ActiveSupport::Logger.respond_to?(:logger_outputs_to?) && ActiveSupport::Logger.logger_outputs_to?(
|
54
|
+
logger, $stdout, $stderr
|
55
|
+
)
|
56
|
+
|
57
|
+
logger.extend(ActiveSupport::Logger.broadcast(ActiveSupport::Logger.new($stdout)))
|
58
|
+
end
|
51
59
|
end
|
52
60
|
end
|
53
61
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scout_apm_logging
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Scout APM
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-08-
|
11
|
+
date: 2024-08-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: scout_apm
|