researchable_loggable 1.7.1 → 1.8.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 +14 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +257 -238
- data/README.md +17 -0
- data/lib/loggable/pyroscope_config.rb +57 -0
- data/lib/loggable/railtie.rb +6 -0
- data/lib/loggable/version.rb +1 -1
- data/lib/researchable_loggable.rb +1 -0
- data/node_modules/semantic-release-rubygem/src/__tests__/fixtures/valid/lib/test-gem/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/concurrent-ruby-1.2.0/lib/concurrent-ruby/concurrent/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/crass-1.0.6/lib/crass/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/lograge-0.12.0/lib/lograge/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/method_source-1.0.0/lib/method_source/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-api-1.3.0/lib/opentelemetry/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-common-0.21.0/lib/opentelemetry/common/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-exporter-otlp-0.28.1/lib/opentelemetry/exporter/otlp/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-helpers-mysql-0.1.1/lib/opentelemetry/helpers/mysql/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-helpers-sql-obfuscation-0.2.0/lib/opentelemetry/helpers/sql_obfuscation/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-action_mailer-0.1.0/lib/opentelemetry/instrumentation/action_mailer/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-action_pack-0.9.0/lib/opentelemetry/instrumentation/action_pack/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-action_view-0.7.3/lib/opentelemetry/instrumentation/action_view/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-active_job-0.7.7/lib/opentelemetry/instrumentation/active_job/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-active_model_serializers-0.20.2/lib/opentelemetry/instrumentation/active_model_serializers/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-active_record-0.7.4/lib/opentelemetry/instrumentation/active_record/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-active_support-0.6.0/lib/opentelemetry/instrumentation/active_support/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-all-0.63.0/lib/opentelemetry/instrumentation/all/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-aws_lambda-0.1.1/lib/opentelemetry/instrumentation/aws_lambda/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-aws_sdk-0.5.4/lib/opentelemetry/instrumentation/aws_sdk/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-base-0.22.6/lib/opentelemetry/instrumentation/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-bunny-0.21.4/lib/opentelemetry/instrumentation/bunny/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-concurrent_ruby-0.21.4/lib/opentelemetry/instrumentation/concurrent_ruby/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-dalli-0.25.4/lib/opentelemetry/instrumentation/dalli/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-delayed_job-0.22.4/lib/opentelemetry/instrumentation/delayed_job/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-ethon-0.21.8/lib/opentelemetry/instrumentation/ethon/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-excon-0.22.4/lib/opentelemetry/instrumentation/excon/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-faraday-0.24.6/lib/opentelemetry/instrumentation/faraday/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-grape-0.2.0/lib/opentelemetry/instrumentation/grape/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-graphql-0.28.4/lib/opentelemetry/instrumentation/graphql/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-gruf-0.2.1/lib/opentelemetry/instrumentation/gruf/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-http-0.23.4/lib/opentelemetry/instrumentation/http/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-http_client-0.22.7/lib/opentelemetry/instrumentation/http_client/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-koala-0.20.5/lib/opentelemetry/instrumentation/koala/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-lmdb-0.22.3/lib/opentelemetry/instrumentation/lmdb/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-mongo-0.22.4/lib/opentelemetry/instrumentation/mongo/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-mysql2-0.27.2/lib/opentelemetry/instrumentation/mysql2/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-net_http-0.22.7/lib/opentelemetry/instrumentation/net/http/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-pg-0.28.0/lib/opentelemetry/instrumentation/pg/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-que-0.8.4/lib/opentelemetry/instrumentation/que/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-racecar-0.3.4/lib/opentelemetry/instrumentation/racecar/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-rack-0.24.6/lib/opentelemetry/instrumentation/rack/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-rails-0.31.2/lib/opentelemetry/instrumentation/rails/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-rake-0.2.2/lib/opentelemetry/instrumentation/rake/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-rdkafka-0.4.8/lib/opentelemetry/instrumentation/rdkafka/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-redis-0.25.7/lib/opentelemetry/instrumentation/redis/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-resque-0.5.2/lib/opentelemetry/instrumentation/resque/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-restclient-0.22.7/lib/opentelemetry/instrumentation/restclient/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-ruby_kafka-0.21.3/lib/opentelemetry/instrumentation/ruby_kafka/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-sidekiq-0.25.7/lib/opentelemetry/instrumentation/sidekiq/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-sinatra-0.24.1/lib/opentelemetry/instrumentation/sinatra/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-instrumentation-trilogy-0.59.3/lib/opentelemetry/instrumentation/trilogy/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-registry-0.3.1/lib/opentelemetry/instrumentation/registry/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-sdk-1.5.0/lib/opentelemetry/sdk/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/opentelemetry-semantic_conventions-1.10.1/lib/opentelemetry/semantic_conventions/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/rack-test-2.0.2/lib/rack/test/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/regexp_parser-2.7.0/lib/regexp_parser/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/ruboguide-1.0.0/lib/ruboguide/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/ruby-progressbar-1.13.0/lib/ruby-progressbar/version.rb +1 -1
- data/vendor/ruby/ruby/3.2.0/gems/tzinfo-2.0.6/lib/tzinfo/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/concurrent-ruby-1.2.0/lib/concurrent-ruby/concurrent/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/crass-1.0.6/lib/crass/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/lograge-0.12.0/lib/lograge/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/method_source-1.0.0/lib/method_source/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-api-1.3.0/lib/opentelemetry/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-common-0.21.0/lib/opentelemetry/common/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-exporter-otlp-0.28.1/lib/opentelemetry/exporter/otlp/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-helpers-mysql-0.1.1/lib/opentelemetry/helpers/mysql/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-helpers-sql-obfuscation-0.2.0/lib/opentelemetry/helpers/sql_obfuscation/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-action_mailer-0.1.0/lib/opentelemetry/instrumentation/action_mailer/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-action_pack-0.9.0/lib/opentelemetry/instrumentation/action_pack/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-action_view-0.7.3/lib/opentelemetry/instrumentation/action_view/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-active_job-0.7.7/lib/opentelemetry/instrumentation/active_job/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-active_model_serializers-0.20.2/lib/opentelemetry/instrumentation/active_model_serializers/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-active_record-0.7.4/lib/opentelemetry/instrumentation/active_record/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-active_support-0.6.0/lib/opentelemetry/instrumentation/active_support/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-all-0.63.0/lib/opentelemetry/instrumentation/all/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-aws_lambda-0.1.1/lib/opentelemetry/instrumentation/aws_lambda/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-aws_sdk-0.5.4/lib/opentelemetry/instrumentation/aws_sdk/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-base-0.22.6/lib/opentelemetry/instrumentation/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-bunny-0.21.4/lib/opentelemetry/instrumentation/bunny/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-concurrent_ruby-0.21.4/lib/opentelemetry/instrumentation/concurrent_ruby/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-dalli-0.25.4/lib/opentelemetry/instrumentation/dalli/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-delayed_job-0.22.4/lib/opentelemetry/instrumentation/delayed_job/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-ethon-0.21.8/lib/opentelemetry/instrumentation/ethon/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-excon-0.22.4/lib/opentelemetry/instrumentation/excon/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-faraday-0.24.6/lib/opentelemetry/instrumentation/faraday/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-grape-0.2.0/lib/opentelemetry/instrumentation/grape/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-graphql-0.28.4/lib/opentelemetry/instrumentation/graphql/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-gruf-0.2.1/lib/opentelemetry/instrumentation/gruf/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-http-0.23.4/lib/opentelemetry/instrumentation/http/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-http_client-0.22.7/lib/opentelemetry/instrumentation/http_client/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-koala-0.20.5/lib/opentelemetry/instrumentation/koala/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-lmdb-0.22.3/lib/opentelemetry/instrumentation/lmdb/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-mongo-0.22.4/lib/opentelemetry/instrumentation/mongo/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-mysql2-0.27.2/lib/opentelemetry/instrumentation/mysql2/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-net_http-0.22.7/lib/opentelemetry/instrumentation/net/http/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-pg-0.28.0/lib/opentelemetry/instrumentation/pg/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-que-0.8.4/lib/opentelemetry/instrumentation/que/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-racecar-0.3.4/lib/opentelemetry/instrumentation/racecar/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-rack-0.24.6/lib/opentelemetry/instrumentation/rack/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-rails-0.31.2/lib/opentelemetry/instrumentation/rails/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-rake-0.2.2/lib/opentelemetry/instrumentation/rake/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-rdkafka-0.4.8/lib/opentelemetry/instrumentation/rdkafka/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-redis-0.25.7/lib/opentelemetry/instrumentation/redis/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-resque-0.5.2/lib/opentelemetry/instrumentation/resque/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-restclient-0.22.7/lib/opentelemetry/instrumentation/restclient/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-ruby_kafka-0.21.3/lib/opentelemetry/instrumentation/ruby_kafka/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-sidekiq-0.25.7/lib/opentelemetry/instrumentation/sidekiq/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-sinatra-0.24.1/lib/opentelemetry/instrumentation/sinatra/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-instrumentation-trilogy-0.59.3/lib/opentelemetry/instrumentation/trilogy/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-registry-0.3.1/lib/opentelemetry/instrumentation/registry/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-sdk-1.5.0/lib/opentelemetry/sdk/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/opentelemetry-semantic_conventions-1.10.1/lib/opentelemetry/semantic_conventions/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/rack-test-2.0.2/lib/rack/test/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/regexp_parser-2.7.0/lib/regexp_parser/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/ruboguide-1.0.0/lib/ruboguide/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/ruby-progressbar-1.13.0/lib/ruby-progressbar/version.rb +1 -1
- data/vendor/ruby/ruby/3.4.0/gems/tzinfo-2.0.6/lib/tzinfo/version.rb +1 -1
- metadata +7 -9
data/README.md
CHANGED
|
@@ -97,6 +97,23 @@ This method is used for ECS logging, if the method is not found, the user.id fie
|
|
|
97
97
|
config.loggable.disable_open_telemetry = true
|
|
98
98
|
```
|
|
99
99
|
|
|
100
|
+
`disable_pyroscope`. Loggable can configure [Pyroscope](https://grafana.com/docs/pyroscope/) for continuous profiling in production. The `pyroscope` gem is optional, so it is not installed with loggable (it has no prebuilt binaries for Alpine/musl). To enable profiling, add it to your Gemfile:
|
|
101
|
+
|
|
102
|
+
```ruby
|
|
103
|
+
gem 'pyroscope', '~> 1.0'
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
The configuration is the same regardless of the backend it points to (Grafana Cloud, a self-hosted Pyroscope or an Alloy instance):
|
|
107
|
+
|
|
108
|
+
- `PYROSCOPE_SERVER_ADDRESS` (required): the address of the backend (e.g. `https://profiles-prod-001.grafana.net` or `http://localhost:4040`).
|
|
109
|
+
- `PYROSCOPE_BASIC_AUTH_USER` and `PYROSCOPE_BASIC_AUTH_PASSWORD` (optional): basic auth credentials, used when both are set.
|
|
110
|
+
|
|
111
|
+
If `PYROSCOPE_SERVER_ADDRESS` is not present, Pyroscope configuration is skipped entirely. If you want to disable profiling regardless, you may add the following to your `config/application.rb` file:
|
|
112
|
+
|
|
113
|
+
```ruby
|
|
114
|
+
config.loggable.disable_pyroscope = true
|
|
115
|
+
```
|
|
116
|
+
|
|
100
117
|
No other configuration options are provided because this gem seeks to enforce consistency across all applications.
|
|
101
118
|
|
|
102
119
|
For applications that already had some level of log customization, some cleanup might be needed:
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'active_support/core_ext/object/blank'
|
|
4
|
+
require 'socket'
|
|
5
|
+
|
|
6
|
+
module Loggable
|
|
7
|
+
# The PyroscopeConfig module provides a method to configure Pyroscope for continuous profiling.
|
|
8
|
+
# The same env vars are used regardless of the backend (Grafana Cloud, a self-hosted Pyroscope or Alloy instance):
|
|
9
|
+
# - PYROSCOPE_SERVER_ADDRESS (required)
|
|
10
|
+
# - PYROSCOPE_BASIC_AUTH_USER and PYROSCOPE_BASIC_AUTH_PASSWORD (optional, enables basic auth when both are set)
|
|
11
|
+
# If PYROSCOPE_SERVER_ADDRESS is not present, Pyroscope configuration is skipped.
|
|
12
|
+
# The pyroscope gem is optional: applications that want profiling must add it to their own Gemfile.
|
|
13
|
+
module PyroscopeConfig
|
|
14
|
+
def self.configure(application_name)
|
|
15
|
+
server_address = env('PYROSCOPE_SERVER_ADDRESS')
|
|
16
|
+
return unless server_address && pyroscope_available?
|
|
17
|
+
|
|
18
|
+
::Pyroscope.configure do |config|
|
|
19
|
+
config.application_name = application_name
|
|
20
|
+
config.server_address = server_address
|
|
21
|
+
configure_basic_auth(config)
|
|
22
|
+
config.tags = {
|
|
23
|
+
'pod' => env('HOSTNAME') || Socket.gethostname,
|
|
24
|
+
'domain' => env('HOST_NAME')
|
|
25
|
+
}.compact
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def self.pyroscope_available?
|
|
30
|
+
require 'pyroscope'
|
|
31
|
+
true
|
|
32
|
+
rescue LoadError
|
|
33
|
+
warn 'Loggable: PYROSCOPE_SERVER_ADDRESS is set but the pyroscope gem is not installed, skipping Pyroscope'
|
|
34
|
+
false
|
|
35
|
+
end
|
|
36
|
+
private_class_method :pyroscope_available?
|
|
37
|
+
|
|
38
|
+
def self.configure_basic_auth(config)
|
|
39
|
+
username = env('PYROSCOPE_BASIC_AUTH_USER')
|
|
40
|
+
password = env('PYROSCOPE_BASIC_AUTH_PASSWORD')
|
|
41
|
+
if username.nil? ^ password.nil?
|
|
42
|
+
warn 'Loggable: PYROSCOPE_BASIC_AUTH_USER and PYROSCOPE_BASIC_AUTH_PASSWORD must both be set, ' \
|
|
43
|
+
'skipping basic auth'
|
|
44
|
+
end
|
|
45
|
+
return unless username && password
|
|
46
|
+
|
|
47
|
+
config.basic_auth_username = username
|
|
48
|
+
config.basic_auth_password = password
|
|
49
|
+
end
|
|
50
|
+
private_class_method :configure_basic_auth
|
|
51
|
+
|
|
52
|
+
def self.env(name)
|
|
53
|
+
ENV.fetch(name, nil).presence
|
|
54
|
+
end
|
|
55
|
+
private_class_method :env
|
|
56
|
+
end
|
|
57
|
+
end
|
data/lib/loggable/railtie.rb
CHANGED
|
@@ -11,6 +11,7 @@ module Loggable
|
|
|
11
11
|
config.loggable = ActiveSupport::OrderedOptions.new
|
|
12
12
|
config.loggable.production_like = false
|
|
13
13
|
config.loggable.current_user_method = :current_user
|
|
14
|
+
config.loggable.disable_pyroscope = false
|
|
14
15
|
|
|
15
16
|
# Initializer runs before initialize_logger (found in Bootstrap) so from the very beginning we are logging using
|
|
16
17
|
# the logfmt format, even during the initialization process
|
|
@@ -19,6 +20,7 @@ module Loggable
|
|
|
19
20
|
Rails.application.configure do
|
|
20
21
|
production_like = Rails.env.production? || config.loggable.production_like
|
|
21
22
|
disable_open_telemetry = config.loggable.disable_open_telemetry
|
|
23
|
+
disable_pyroscope = config.loggable.disable_pyroscope
|
|
22
24
|
|
|
23
25
|
if production_like
|
|
24
26
|
if Rails.application.config.respond_to?(:assets) && Rails.application.config.assets.quiet
|
|
@@ -30,6 +32,10 @@ module Loggable
|
|
|
30
32
|
unless disable_open_telemetry
|
|
31
33
|
Loggable::OpenTelemetryConfig.configure(Rails.application.class.module_parent_name.underscore.dasherize)
|
|
32
34
|
end
|
|
35
|
+
|
|
36
|
+
unless disable_pyroscope
|
|
37
|
+
Loggable::PyroscopeConfig.configure(Rails.application.class.module_parent_name.underscore.dasherize)
|
|
38
|
+
end
|
|
33
39
|
end
|
|
34
40
|
|
|
35
41
|
# lograge configuration
|
data/lib/loggable/version.rb
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
require_relative 'loggable/version'
|
|
4
4
|
require_relative 'loggable/railtie' if defined?(Rails::Railtie)
|
|
5
5
|
require_relative 'loggable/opentelemetry_config'
|
|
6
|
+
require_relative 'loggable/pyroscope_config'
|
|
6
7
|
require_relative 'loggable/logfmt/logger'
|
|
7
8
|
|
|
8
9
|
module ResearchableLoggable
|