ruby_for_grafana_loki 0.0.3 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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