datadog-json_logger 0.1.3 → 0.1.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: beb6fb82518d662d8db07b415cc953e99fc67348208aa5f34a1b02111ce487a8
4
- data.tar.gz: d555d69fe127aaedd4505b69e0d790cc03d43eb23a711895cc46fc35cd10d19c
3
+ metadata.gz: 25aa55fc996314835493e0d134ffdf5c44080a36a27a3b82d21977d19623c565
4
+ data.tar.gz: 49c7e190cafd5dd5291afdb8f9baf0d0b655179e45763920fe188590f9692693
5
5
  SHA512:
6
- metadata.gz: 6710e8f18de45387168fafc58bfb54d84731af279707a9c1788c60f569b846dd581d080d8f7e8ebb8e70e24f2d66ff88829ca5e9d1e51cfb2f7c6550ba36abc8
7
- data.tar.gz: a707d9786bf1fb06ce3607b134fd6feb892d60287f94eb7e87888d76ffcb56872d8faa513f8c81cf43db18d9de65770f66814f5147884deb2efa56e29f7c04a0
6
+ metadata.gz: 9c8c19712e5653add057734e39f22c6266fd60649868cb297ac5e79aa179c695645c12111b0a1d072af24707907472720d7618872a18278926c18ab5f5bd31ef
7
+ data.tar.gz: 8975469ccdefd6b762ef0605f8c1baa0923d3a6a5d8e15f24eaa1b8bd27fd2be3b93d453fa9c23e1340c44d399a06e2dceacfd9725f26b4cea216163facba413
@@ -16,6 +16,13 @@ Gem::Specification.new do |spec|
16
16
 
17
17
  spec.metadata["allowed_push_host"] = "https://rubygems.org"
18
18
 
19
+ if ENV.fetch('GEM_PUSHER', 'default') == 'github'
20
+ spec.metadata['allowed_push_host'] = 'https://rubygems.pkg.github.com/buyco'
21
+ else
22
+ spec.metadata['allowed_push_host'] = 'https://rubygems.org'
23
+ end
24
+
25
+
19
26
  spec.metadata["homepage_uri"] = spec.homepage
20
27
  spec.metadata["source_code_uri"] = "https://github.com/eth3rnit3/datadog-json_logger"
21
28
  spec.metadata["changelog_uri"] = "https://github.com/eth3rnit3/datadog-json_logger/blob/main/CHANGELOG.md"
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Datadog
4
4
  module Loggers
5
- VERSION = "0.1.3"
5
+ VERSION = "0.1.5"
6
6
  end
7
7
  end
@@ -16,16 +16,21 @@ module Datadog
16
16
  class SinatraMiddleware
17
17
  attr_reader :app, :logger
18
18
 
19
- def initialize(app, logger)
19
+ def initialize(app, logger, opt = {})
20
20
  @app = app
21
21
  @logger = logger
22
+ @raise_exceptions = opt.fetch(:raise_exceptions, false)
22
23
  end
23
24
 
24
25
  def call(env)
25
26
  request = Rack::Request.new(env)
26
27
  start_time = Time.now
27
28
 
28
- status, headers, body = safely_process_request(env)
29
+ status, headers, body = if @raise_exceptions
30
+ app.call(env)
31
+ else
32
+ safely_process_request(env)
33
+ end
29
34
  end_time = Time.now
30
35
 
31
36
  log_request(request, env, status, headers, start_time, end_time)
@@ -39,8 +44,8 @@ module Datadog
39
44
 
40
45
  def safely_process_request(env)
41
46
  app.call(env)
42
- rescue StandardError
43
- [500, { "Content-Type": "text/html" }, ["Internal Server Error"]]
47
+ rescue StandardError => e
48
+ [500, { "Content-Type": "application/json" }, [e.class.name, e.message].join(": ")]
44
49
  end
45
50
 
46
51
  def log_request(request, env, status, headers, start_time, end_time)
@@ -49,6 +54,7 @@ module Datadog
49
54
  request_ip: request.ip,
50
55
  method: request.request_method,
51
56
  controller: env["sinatra.controller_name"],
57
+ resource: env["sinatra.resource_name"] || env["sinatra.controller_name"],
52
58
  action: env["sinatra.action_name"],
53
59
  path: request.path,
54
60
  params: parse_query(request.query_string),
@@ -57,9 +63,18 @@ module Datadog
57
63
  duration: calculate_duration(start_time, end_time)
58
64
  }
59
65
 
66
+ log_data[:message] = message(log_data)
67
+
60
68
  logger.info(log_data)
61
69
  end
62
70
 
71
+ def message(log_data)
72
+ "Received #{log_data[:method]} request from #{log_data[:request_ip]} " \
73
+ "to #{log_data[:controller]}##{log_data[:action]} at #{log_data[:path]} " \
74
+ "with params #{log_data[:params].to_json}. Responded with status #{log_data[:status]} " \
75
+ "in #{log_data[:duration]}ms. Content-Type: #{log_data[:format]}."
76
+ end
77
+
63
78
  def calculate_duration(start_time, end_time)
64
79
  ((end_time - start_time) * 1000).round # Duration in milliseconds
65
80
  end
@@ -7,14 +7,13 @@ end
7
7
  module Datadog
8
8
  class SinatraMiddleware
9
9
  @app: untyped
10
-
11
10
  @logger: Logger
11
+ @raise_exceptions: bool
12
12
 
13
13
  attr_reader app: untyped
14
-
15
14
  attr_reader logger: Logger
16
15
 
17
- def initialize: (untyped app, Logger logger) -> void
16
+ def initialize: (untyped app, Logger logger, ?Hash[Symbol, untyped] opt) -> void
18
17
 
19
18
  def call: (untyped env) -> untyped
20
19
 
@@ -23,6 +22,8 @@ module Datadog
23
22
  def safely_process_request: (untyped env) -> untyped
24
23
 
25
24
  def log_request: (Rack::Request request, untyped env, String status, Hash[String, String] headers, Time start_time, Time end_time) -> untyped
25
+
26
+ def message: (Hash[Symbol, untyped] log_data) -> String
26
27
 
27
28
  def calculate_duration: (Time start_time, Time end_time) -> Integer
28
29
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: datadog-json_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eth3rnit3