ruby_for_grafana_loki 0.0.3 → 0.0.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: 06ddcda970511a6f243e21f6d19eaa42bfabbc2f816cb7530617ef27d03b9715
4
- data.tar.gz: 58ca70bcfa882b7266330a1ca941faa49e3f97aa05546cf7e7e5fd2a28bbb875
3
+ metadata.gz: '008364bfc6b1bf0553546183972f87eb93794364317f2cc6a56b944c14a4deb8'
4
+ data.tar.gz: 00affa1f6564765b4ad1211e1c3efdae57e2e7c7202f9049e75c572772d237ec
5
5
  SHA512:
6
- metadata.gz: be9241c7bab297a1488fc039857fbc76e6bac11a97e343115bc9bedc254ed7ad911d4687a97bf65b58c2e29e65185885d10940affff50b9b018b8d4d7d3796ab
7
- data.tar.gz: a847f31bad0534f38356c532c54dd39eb8e02e21175e66bb4823c93e4a80e83e46de678ad288311423817cc95b15198bd4aee266d8e4cca0de58910c4ef369ca
6
+ metadata.gz: af9ed24b5ba9981b6cf927928779e33b8e0129a72280acdbc673f712cd33e4c3a98292204abaf7881897635e897b459d61ba024a98cee2a9e0d2df78ec1f3d3d
7
+ data.tar.gz: d67fd43f8db4dce356f9bbcf65c6da681b330b9d8ca140aea08ccf78a30b13875c00ce0655328c41bcb8f2bd00ab3c80d704e18ead795934235c09ffe02c15aa
data/README.md CHANGED
@@ -1,5 +1,18 @@
1
1
 
2
2
  # Usage in your gem or application
3
- log_file_path = "log/#{Rails.env}.log"
4
- client = RubyForGrafanaLoki.client(log_file_path)
5
- client.send_log("This is a log message.")
3
+ <pre>
4
+
5
+ - add gem "ruby_for_grafana_loki-0.0.5.gem" //to the Gemfile
6
+ - bundle install
7
+
8
+ in the project:
9
+ - logs_type = %w(ERROR WARN FATAL) // Use custom logs type: ERROR, WARN, FATAL, INFO, DEBUG
10
+ - log_file_path = "log/#{Rails.env}.log"
11
+ - client = RubyForGrafanaLoki.client(log_file_path, logs_type)
12
+ - client.jobName = "job name" // your job name
13
+ - client.hostName = "host name" // your host name
14
+ - client.sourceName = "source name" // your source name
15
+ - client.send_all_logs
16
+ - client.send_log("This is a test log message.")
17
+
18
+ </pre>
@@ -1,37 +1,46 @@
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(log_file_path)
6
+ attr_accessor :job_name
7
+ attr_accessor :host_name
8
+ attr_accessor :source_name
9
+
10
+ def initialize(log_file_path, allowed_logs_type = LOGS_TYPE)
6
11
  @log_file_path = log_file_path
12
+ @allowed_logs_type = allowed_logs_type
13
+ @job_name = "job_name"
14
+ @host_name = "host_name"
15
+ @source_name = "source_name"
7
16
  end
8
17
 
9
18
  def send_all_logs
10
19
  File.open(@log_file_path, 'r') do |file|
11
20
  file.each_line do |line|
12
- send_log(line)
21
+ send_log(line) if match_logs_type?(line)
13
22
  end
14
23
  end
15
24
  end
25
+
16
26
  def send_log(log_message)
17
27
  curr_datetime = Time.now.to_i * 1_000_000_000
18
28
 
19
- host = "somehost"
20
- msg = "On server #{host} detected error"
29
+ msg = "On server #{@host_name} detected error"
21
30
 
22
31
  payload = {
23
- "streams" => [
32
+ 'streams' => [
24
33
  {
25
- "stream" => {
26
- "source" => "Name-of-your-source",
27
- "job" => "name-of-your-job",
28
- "host" => host
34
+ 'stream' => {
35
+ 'source' => @source_name,
36
+ 'job' => @job_name,
37
+ 'host' => @host_name
29
38
  },
30
- "values" => [[curr_datetime.to_s, log_message]],
31
- "entries" => [
39
+ 'values' => [[curr_datetime.to_s, log_message]],
40
+ 'entries' => [
32
41
  {
33
- "ts" => curr_datetime,
34
- "line" => "[WARN] " + msg
42
+ 'ts' => curr_datetime,
43
+ 'line' => "[WARN] " + msg
35
44
  }
36
45
  ]
37
46
  }
@@ -41,21 +50,16 @@ module RubyForGrafanaLoki
41
50
  json_payload = JSON.generate(payload)
42
51
  uri = '/loki/api/v1/push'
43
52
 
44
- # Use logger for sending logs to both default logger and Loki
45
- # @logger.info "Sending log to Loki: #{json_payload}"
46
-
47
- # Send logs to Loki using the post method
48
53
  post(uri, json_payload)
49
54
  end
55
+
56
+ private
57
+
58
+ def match_logs_type?(log_line)
59
+ type = log_line.match(/(ERROR|WARN|FATAL|INFO|DEBUG)/)&.to_s
60
+
61
+ @allowed_logs_type.include?(type)
62
+ end
50
63
  end
51
64
  end
52
65
 
53
-
54
- # # In your application code
55
- #
56
- # # Example with Rails logger
57
- # rails_logger = Logger.new(STDOUT)
58
- # client = RubyForGrafanaLoki.client(rails_logger)
59
- #
60
- # # Send a log entry to Loki
61
- # client.send_log("This is a log message.")
@@ -1,3 +1,3 @@
1
1
  module RubyForGrafanaLoki
2
- VERSION = '0.0.3'
2
+ VERSION = '0.0.5'
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.3
4
+ version: 0.0.5
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