stackify-api-ruby 1.2.7 → 1.2.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/stackify-api-ruby.rb +1 -1
- data/lib/stackify/authorization/authorizable.rb +5 -1
- data/lib/stackify/engine.rb +35 -0
- data/lib/stackify/logger_client.rb +27 -1
- data/lib/stackify/logger_proxy.rb +6 -4
- data/lib/stackify/utils/configuration.rb +3 -1
- data/lib/stackify/utils/methods.rb +26 -1
- data/lib/stackify/version.rb +1 -1
- data/lib/stackify/workers/logs_sender_worker.rb +8 -0
- 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: 371cb99e1d47ff1680b37a4e4a8b69a992787ef047c3973e923bb08032486239
|
4
|
+
data.tar.gz: 379714698256d7614a12b1e07e996e5a0256f868df5db33e103ec136fd8eec01
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f7aff04aee12c3a8346c39fb32f34965f360e969e960607053685c3081b2a27a333e4e7842d87f486d3ddb2341b49f18107276c96d8090d1b90e6ea258b766ab
|
7
|
+
data.tar.gz: 7e2d3a430f5794f6e29689255adc9be0dd36b4bddc9504507161c1a0d0edd4699bfa1df675c803f0bc1c4bd4090d2b080bf78886837f89f0b84d74e7f673f050
|
data/lib/stackify-api-ruby.rb
CHANGED
@@ -120,7 +120,7 @@ module Stackify
|
|
120
120
|
|
121
121
|
def run
|
122
122
|
Stackify::Utils.is_api_enabled
|
123
|
-
Stackify.internal_log :info, "Stackify.run() transportType
|
123
|
+
Stackify.internal_log :info, "Stackify.run() transportType: #{Stackify.configuration.transport} | API version: #{Stackify::VERSION} | Ruby version: #{RUBY_VERSION}"
|
124
124
|
if Stackify.configuration.api_enabled
|
125
125
|
if Stackify.is_valid?
|
126
126
|
# check transport types
|
@@ -11,7 +11,11 @@ module Stackify::Authorizable
|
|
11
11
|
@@auth_client = nil
|
12
12
|
|
13
13
|
def authorize attempts=3
|
14
|
-
|
14
|
+
# Check if the ruby version is 2.0 we get the Rails info properties such as
|
15
|
+
# <Application root: e.g., /home/user/rails_app> which is required in authorization
|
16
|
+
if Gem::Version.new(RUBY_VERSION) <= Gem::Version.new('2.0')
|
17
|
+
Stackify::EnvDetails.instance.set_rails_info
|
18
|
+
end
|
15
19
|
@@auth_lock.synchronize do
|
16
20
|
return unless @@auth_client.nil?
|
17
21
|
@@auth_client = Stackify::Authorizable::AuthorizationClient.new
|
data/lib/stackify/engine.rb
CHANGED
@@ -4,7 +4,32 @@ module Stackify
|
|
4
4
|
|
5
5
|
if Rails.version > '3.1'
|
6
6
|
initializer 'Stackify set up of logger', group: :all do
|
7
|
+
if Gem::Version.new(Rails::VERSION::STRING) >= Gem::Version.new('4.0')
|
8
|
+
# check if the client app is using the ActiveSupport::Logger
|
9
|
+
is_activesupport_logger = ::Rails.logger.is_a?(ActiveSupport::Logger)
|
10
|
+
elsif Gem::Version.new(Rails::VERSION::STRING) >= Gem::Version.new('3.0')
|
11
|
+
Stackify::Utils.check_buffered_logger
|
12
|
+
end
|
13
|
+
|
14
|
+
# Check if the log output is STDOUT
|
15
|
+
Stackify::Utils.check_log_output
|
16
|
+
|
17
|
+
# Proxy the client Rails logger and write logs to its default log_path.
|
18
|
+
# At the same time, we send the log messages to the LoggerClient.
|
7
19
|
::Rails.logger = ::Stackify::LoggerProxy.new ::Rails.logger
|
20
|
+
|
21
|
+
if Gem::Version.new(Rails::VERSION::STRING) >= Gem::Version.new('6.0')
|
22
|
+
set_console_logs ::Rails.logger
|
23
|
+
elsif Gem::Version.new(Rails::VERSION::STRING) >= Gem::Version.new('4.0')
|
24
|
+
if is_activesupport_logger && Stackify.configuration.stdout_output
|
25
|
+
set_console_logs ::Rails.logger
|
26
|
+
end
|
27
|
+
# Another checking if the client app is using the default logger and not STDOUT
|
28
|
+
if Stackify.configuration.stdout_output == false
|
29
|
+
set_console_logs ::Rails.logger
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
8
33
|
Stackify.run
|
9
34
|
end
|
10
35
|
|
@@ -14,6 +39,16 @@ module Stackify
|
|
14
39
|
end
|
15
40
|
end
|
16
41
|
|
42
|
+
def set_console_logs logger
|
43
|
+
# Handle the stdout logs from Action Controller
|
44
|
+
ActionController::Base.logger = logger
|
45
|
+
|
46
|
+
# Handle the stdout logs from Action View
|
47
|
+
ActionView::Base.logger = logger
|
48
|
+
|
49
|
+
# Handle the stdout logs from Active Record
|
50
|
+
ActiveRecord::Base.logger = logger
|
51
|
+
end
|
17
52
|
end
|
18
53
|
|
19
54
|
end
|
@@ -12,7 +12,33 @@ module Stackify
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
-
|
15
|
+
# This function is responsible in displaying log messages based on the level criteria
|
16
|
+
# @param num_level [Integer] level of the clients Rails.logger
|
17
|
+
# @param level [String] level coming from array of levels(debug info warn error fatal unknown) that we are going to filter with num_level
|
18
|
+
# So we filter all logs from num_level up to this level
|
19
|
+
# @param msg [Integer] log messages
|
20
|
+
# @param call_trace [Object] return the current execution stack
|
21
|
+
def log num_level, level, msg, call_trace
|
22
|
+
display_log = true
|
23
|
+
log_appender = false
|
24
|
+
buffer_log = false
|
25
|
+
if defined? Rails
|
26
|
+
display_log = false if Stackify.configuration.stdout_output
|
27
|
+
log_appender = true if defined?(Logging)
|
28
|
+
buffer_log = true if Stackify.configuration.buffered_logger
|
29
|
+
unless buffer_log
|
30
|
+
if Gem::Version.new(Rails::VERSION::STRING) >= Gem::Version.new('4.0')
|
31
|
+
if display_log && log_appender
|
32
|
+
puts msg if num_level <= Logger.const_get(level.upcase).to_i
|
33
|
+
elsif display_log && log_appender == false
|
34
|
+
puts msg if num_level <= Logger.const_get(level.upcase).to_i
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
else
|
39
|
+
puts msg if num_level <= Logger.const_get(level.upcase).to_i
|
40
|
+
end
|
41
|
+
|
16
42
|
return if @@transport.nil?
|
17
43
|
task = log_message_task level, msg, call_trace
|
18
44
|
@@transport.log level, msg, call_trace, task
|
@@ -1,14 +1,16 @@
|
|
1
|
+
|
1
2
|
module Stackify
|
2
3
|
class LoggerProxy < Object
|
3
4
|
|
4
5
|
def initialize logger
|
5
|
-
|
6
|
-
|
6
|
+
rails_logger = logger
|
7
|
+
num_level = logger.level
|
8
|
+
@logger = rails_logger
|
7
9
|
%w(debug info warn error fatal unknown).each do |level|
|
8
10
|
stackify_logger = if level == 'debug'
|
9
|
-
-> (msg, caller) { Stackify.logger_client.log(level.downcase, msg, caller) unless msg.to_s.empty? }
|
11
|
+
-> (msg, caller) { Stackify.logger_client.log(num_level, level.downcase, msg, caller) unless msg.to_s.empty? }
|
10
12
|
else
|
11
|
-
-> (msg, caller) { Stackify.logger_client.log(level.downcase, msg, caller) }
|
13
|
+
-> (msg, caller) { Stackify.logger_client.log(num_level, level.downcase, msg, caller) }
|
12
14
|
end
|
13
15
|
LoggerProxy.class_eval do
|
14
16
|
define_method level.to_sym do |*args , &block|
|
@@ -3,7 +3,7 @@ module Stackify
|
|
3
3
|
class Configuration
|
4
4
|
|
5
5
|
attr_accessor :api_key, :app_name, :app_location, :env, :log_level, :logger,
|
6
|
-
:proxy, :mode, :base_api_url, :api_enabled, :transport, :errors, :http_endpoint
|
6
|
+
:proxy, :mode, :base_api_url, :api_enabled, :transport, :errors, :http_endpoint, :stdout_output, :buffered_logger
|
7
7
|
|
8
8
|
attr_reader :send_interval, :flood_limit, :queue_max_size, :agent_log_url, :unix_socket_path, :http_endpoint
|
9
9
|
|
@@ -25,6 +25,8 @@ module Stackify
|
|
25
25
|
@agent_log_url = '/log'
|
26
26
|
@unix_socket_path = '/usr/local/stackify/stackify.sock'
|
27
27
|
@http_endpoint = get_env 'STACKIFY_TRANSPORT_HTTP_ENDPOINT', 'https://localhost:10601'
|
28
|
+
@stdout_output = false
|
29
|
+
@buffered_logger = false
|
28
30
|
end
|
29
31
|
|
30
32
|
def get_env env_key, default
|
@@ -46,4 +46,29 @@ module Stackify::Utils
|
|
46
46
|
'app_location' => Stackify.configuration.app_location || Dir.pwd
|
47
47
|
}
|
48
48
|
end
|
49
|
-
|
49
|
+
|
50
|
+
# Check if the app is running on rails and the logger output is using STDOUT
|
51
|
+
def self.check_log_output
|
52
|
+
if defined? Rails
|
53
|
+
if Gem::Version.new(Rails::VERSION::STRING) >= Gem::Version.new('5.0')
|
54
|
+
Stackify.configuration.stdout_output = ActiveSupport::Logger.logger_outputs_to?(Rails.logger, STDOUT)
|
55
|
+
else
|
56
|
+
Stackify.configuration.stdout_output = self.logger_stdout
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def self.logger_stdout
|
62
|
+
logdev = ::Rails.logger.instance_variable_get(:@logdev)
|
63
|
+
logger_source = logdev.dev if logdev.respond_to?(:dev)
|
64
|
+
sources = [$stdout]
|
65
|
+
found = sources.any? { |source| source == logger_source }
|
66
|
+
end
|
67
|
+
|
68
|
+
# Check if the rails version 3 and it's using the buffered logger
|
69
|
+
def self.check_buffered_logger
|
70
|
+
is_buffered_logger = false
|
71
|
+
is_buffered_logger = true if ::Rails.logger.is_a?(ActiveSupport::BufferedLogger)
|
72
|
+
Stackify.configuration.buffered_logger = is_buffered_logger
|
73
|
+
end
|
74
|
+
end
|
data/lib/stackify/version.rb
CHANGED
@@ -3,6 +3,14 @@ module Stackify
|
|
3
3
|
|
4
4
|
def initialize name = 'LogsSender worker'
|
5
5
|
super
|
6
|
+
case Stackify.configuration.transport
|
7
|
+
when Stackify::DEFAULT
|
8
|
+
name = 'LogsSender worker'
|
9
|
+
when Stackify::UNIX_SOCKET
|
10
|
+
name = 'UnixSocketSender worker'
|
11
|
+
when Stackify::AGENT_HTTP
|
12
|
+
name = 'AgentHTTPSender worker'
|
13
|
+
end
|
6
14
|
@name = name
|
7
15
|
@name += " ##{self.id}"
|
8
16
|
@type = :logs_send
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stackify-api-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stackify
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-06-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|