ruby_for_grafana_loki 0.0.2 → 0.0.4

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: 9eef001f7dac198a73f52c35da02295aef8ba51ab0db026acc2e418997cb714a
4
- data.tar.gz: dc2dee45368c93bec26a05a499b475ab90081f54ce2d659f8b4ce11db96e8949
3
+ metadata.gz: 50f0f3f252b03e126ca79c758b0ec428942695733470126f9d70a1f4d9d817b1
4
+ data.tar.gz: 4bf5183f13b98110611e0767d2cb196c70ac2bb9a92f7711b36e90df71519087
5
5
  SHA512:
6
- metadata.gz: f37dd7531afb81c2c04987b9299b6a2dfc383cd9734741103e55dd3d7bcd1b8355b0f54a79a8cde94fad82b545ee5dfab811e2058cddd3f0e1b42db269df8711
7
- data.tar.gz: 42d03ddc5615765bc7a7d7580b215000816c8ffbb46bb84ca69243d88f23924c194ced1c0b98a6e6a1dbe15ca8cd9e11a6d82d67f54278e02c5e82a9a7bbf6e6
6
+ metadata.gz: d5fccfd9c6a16fdfa7c710bcb3bd1a04c81343e6bcbccc4346530c45c62d269e50e26ab55ec126fce053d5dcfadad86fe11673c86f753593bdd84a5fce435a66
7
+ data.tar.gz: 5400a75de89bdbc5df1daf9078079130a3c89c4d41ba6c93a7c23e059b949e09af7413331b45f697be566f9645c929b2e94d399ef58b8681cdb68a20aa1bf81a
data/README.md CHANGED
@@ -1,8 +1,11 @@
1
1
 
2
+ # Usage in your gem or application
3
+ <pre>
2
4
 
3
- # Example with Rails logger
4
- rails_logger = Logger.new(STDOUT)
5
- client = RubyForGrafanaLoki.client(rails_logger)
6
5
 
7
- # Send a log entry to Loki
8
- client.send_log("This is a log message.")
6
+ logs_type = %w(ERROR WARN) # Use custom logs type: ERROR, WARN, FATAL, INFO, DEBUG
7
+ log_file_path = "log/#{Rails.env}.log"
8
+ client = RubyForGrafanaLoki.client(log_file_path, logs_type)
9
+ client.send_all_logs
10
+ client.send_log("This is a log message.") # not required
11
+ </pre>
@@ -1,11 +1,20 @@
1
1
  module RubyForGrafanaLoki
2
+ LOGS_TYPE = %w(ERROR WARN FATAL INFO DEBUG).freeze
2
3
  class Client
3
4
  include RubyForGrafanaLoki::Request
4
5
 
5
- def initialize(logger)
6
- @logger = logger
6
+ def initialize(log_file_path, allowed_logs_type = LOGS_TYPE)
7
+ @log_file_path = log_file_path
8
+ @allowed_logs_type = allowed_logs_type
7
9
  end
8
10
 
11
+ def send_all_logs
12
+ File.open(@log_file_path, 'r') do |file|
13
+ file.each_line do |line|
14
+ send_log(line) if match_logs_type?(line)
15
+ end
16
+ end
17
+ end
9
18
  def send_log(log_message)
10
19
  curr_datetime = Time.now.to_i * 1_000_000_000
11
20
 
@@ -34,21 +43,16 @@ module RubyForGrafanaLoki
34
43
  json_payload = JSON.generate(payload)
35
44
  uri = '/loki/api/v1/push'
36
45
 
37
- # Use logger for sending logs to both default logger and Loki
38
- @logger.info "Sending log to Loki: #{json_payload}"
39
-
40
- # Send logs to Loki using the post method
41
46
  post(uri, json_payload)
42
47
  end
48
+
49
+ private
50
+
51
+ def match_logs_type?(log_line)
52
+ type = log_line.match(/(ERROR|WARN|FATAL|INFO|DEBUG)/)&.to_s
53
+
54
+ @allowed_logs_type.include?(type)
55
+ end
43
56
  end
44
57
  end
45
58
 
46
-
47
- # # In your application code
48
- #
49
- # # Example with Rails logger
50
- # rails_logger = Logger.new(STDOUT)
51
- # client = RubyForGrafanaLoki.client(rails_logger)
52
- #
53
- # # Send a log entry to Loki
54
- # client.send_log("This is a log message.")
@@ -4,36 +4,36 @@ module RubyForGrafanaLoki
4
4
  BASE_URL = 'http://localhost:3100/'
5
5
 
6
6
  def connection
7
- Faraday.new(options) do |faraday|
8
- faraday.adapter Faraday.default_adapter
9
- faraday.request :url_encoded
7
+ Faraday.new(options) do |faraday|
8
+ faraday.adapter Faraday.default_adapter
9
+ faraday.request :url_encoded
10
10
  end
11
11
  end
12
12
 
13
13
  def post(path, body)
14
- response = connection.post(path) do |req|
15
- req.headers['Content-Type'] = 'application/json'
16
- req.body = JSON.generate(body)
17
- end
14
+ response = connection.post(path) do |req|
15
+ req.headers['Content-Type'] = 'application/json'
16
+ req.body = JSON.generate(body)
17
+ end
18
18
 
19
- # Check if the request was successful
20
- if response.success?
21
- return JSON.parse(response.body)
22
- else
23
- raise "Failed to make POST request. Response code: #{response.status}, Response body: #{response.body}"
24
- end
19
+ # Check if the request was successful
20
+ if response.success?
21
+ return JSON.parse(response.body)
22
+ else
23
+ raise "Failed to make POST request. Response code: #{response.status}, Response body: #{response.body}"
25
24
  end
25
+ end
26
26
 
27
27
  private
28
28
  def options
29
- headers = {
30
- accept: 'application/json',
31
- 'Content-Type' => 'application/json'
29
+ headers = {
30
+ accept: 'application/json',
31
+ 'Content-Type' => 'application/json'
32
+ }
33
+ return {
34
+ url: BASE_URL,
35
+ headers: headers
32
36
  }
33
- return {
34
- url: BASE_URL,
35
- headers: headers
36
- }
37
- end
38
- end
37
+ end
38
+ end
39
39
  end
@@ -1,29 +1,28 @@
1
1
  module RubyForGrafanaLoki
2
- module Request
3
- include RubyForGrafanaLoki:: Connection
2
+ module Request
3
+ include RubyForGrafanaLoki:: Connection
4
4
 
5
- def post(url, payload)
6
- respond_with(
7
- connection.post url, payload
8
- )
9
- end
5
+ def post(url, payload)
6
+ respond_with(
7
+ connection.post url, payload
8
+ )
9
+ end
10
10
 
11
- private
12
- def respond_with(response)
13
- if response.success?
14
- puts 'Log sent successfully to Loki.'
15
- puts "Response code: #{response.status}, Response body: #{response.body}"
16
- body = response.body.empty? ? response.body : JSON.parse(response.body)
17
- puts body
18
- else
19
- puts "Failed to send log to Loki. Response code: #{response.status}, Response body: #{response.body}"
20
- end
21
- end
22
-
23
- def get(path)
24
- respond_with(
25
- connection.get(path)
26
- )
27
- end
28
- end
11
+ private
12
+ def respond_with(response)
13
+ if response.success?
14
+ puts 'Log sent successfully to Loki.'
15
+ puts "Response code: #{response.status}, Response body: #{response.body}"
16
+ body = response.body.empty? ? response.body : JSON.parse(response.body)
17
+ puts body
18
+ else
19
+ puts "Failed to send log to Loki. Response code: #{response.status}, Response body: #{response.body}"
20
+ end
21
+ end
22
+ def get(path)
23
+ respond_with(
24
+ connection.get(path)
25
+ )
26
+ end
27
+ end
29
28
  end
@@ -1,3 +1,3 @@
1
1
  module RubyForGrafanaLoki
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.4'
3
3
  end
@@ -5,7 +5,7 @@ loader = Zeitwerk::Loader.for_gem
5
5
  loader.setup
6
6
 
7
7
  module RubyForGrafanaLoki
8
- def self.client(logger)
9
- RubyForGrafanaLoki::Client.new(logger)
8
+ def self.client(log_file_path, logs_type)
9
+ RubyForGrafanaLoki::Client.new(log_file_path, logs_type)
10
10
  end
11
11
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_for_grafana_loki
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oleg Ten
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-12-04 00:00:00.000000000 Z
11
+ date: 2023-12-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '2.4'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  description: Attempt to make gem
42
56
  email:
43
57
  - tennet0505@gmail.com