xlog 0.1.7 → 0.1.9

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: 6af875c3e62c116fa408033a00632ba9f553fed05aa6c522cc112aad2662fbde
4
- data.tar.gz: 496dfa7445a3df263fb059d002202f45908829fdec2c7c3c0b240f89379d6006
3
+ metadata.gz: 10f05b3e597edaef8153f2a6a39cb8a49db5a57f17eef2f7f4f46b70f8322e50
4
+ data.tar.gz: 648f2de49e6d459dc70c84eff34e6f121a242d750ab9d69776506de33f5ec12c
5
5
  SHA512:
6
- metadata.gz: 646d30f81b48f8acb2a530e28951e288efc07f25e5ee8badf66fd8be6d5f8138fc2ce7f1b1b777981915516c1a39f499b0cfb056e16af8b5ef1b296a872eb10d
7
- data.tar.gz: 7e165c158b79ab69284055ee30b40ead52971b42e78d175c90b406d2d8980bd354fa0c5b4e72d4de74b1fe175fa6b3e7764471c4205718f353cc3ab68fd1e7c7
6
+ metadata.gz: 93ed87b2fbefff780e977d33c36ea258b379a4c51417d6fc3a66fea0162e9a3952a5e183aea5da29ea1fdd3ad35cc42c1741940f76409e3c19fb538edee083bb
7
+ data.tar.gz: cd7126e8ff9498dbf5c210866b66a700f0b00221c7a570ff139926655c7617c1f53ca2c2a280bc407b4f55f6b5fa031513002694c236d88ac36fe76d31e70bbd
data/README.md CHANGED
@@ -1,7 +1,13 @@
1
- # Xlog v0.1.7
1
+ # Xlog v0.1.9 - [changelog](https://github.com/coaxsoft/xlog/blob/master/CHANGELOG.md)
2
2
 
3
3
  Xlog - awesome logger for your Rails app. Logs everything you need in well-formatted view with timestamp, caller path and tags.
4
4
 
5
+ ### Tested on second ruby versions:
6
+ - 2.7.3
7
+ - 3.0.0
8
+ - 3.1.1
9
+ - 3.2.3
10
+
5
11
  ## Usage
6
12
 
7
13
  ### `.info`
@@ -27,8 +33,8 @@ Xlog has awesome `.error` and `.and_raise_error` methods
27
33
 
28
34
  ```ruby
29
35
  def index
30
- 10 / 0
31
- @orders = Order.all
36
+ 10 / 0
37
+ @orders = Order.all
32
38
  rescue StandardError => e
33
39
  Xlog.and_raise_error(e, data: { params: params }, message: 'Some message text here')
34
40
  end
@@ -37,10 +43,10 @@ end
37
43
  ...and the output
38
44
 
39
45
  ```
40
- [2019-04-30 11:48:33 UTC] [Admin::OrdersController.index] [error] ZeroDivisionError: divided by 0.
46
+ [2019-04-30 11:48:33 UTC] [Admin::OrdersController.index] [error] ZeroDivisionError: divided by 0.
41
47
  | Message: Some message text here
42
- | Data: {:params=><ActionController::Parameters {"controller"=>"admin/orders", "action"=>"index"} permitted: false>}
43
- | Error backtrace:
48
+ | Data: {:params=><ActionController::Parameters {"controller"=>"admin/orders", "action"=>"index"} permitted: false>}
49
+ | Error backtrace:
44
50
  | /home/me/test_app/app/controllers/admin/orders_controller.rb:7:in `/'
45
51
  | /home/me/test_app/app/controllers/admin/orders_controller.rb:7:in `index'
46
52
  ```
@@ -76,18 +82,15 @@ Xlog.warn('Validation failed', tags: %w[validation input_error]) # [2019-04-30 1
76
82
  Xlog.warn(error, tags: %w[fatal]) # [2019-04-30 12:29:13 UTC] [ArticlesController.update] [error] [fatal] Message: Zero division error
77
83
  ```
78
84
 
85
+ ### Custom file prefix
79
86
 
80
- ### `.tag_logger` [DEPRECATED]
87
+ If you need a dedicated log file for a specific service (e.g., a webhooks handler), you can pass a `file_prefix` directly to the log method. The `file_prefix` takes the highest priority, even over any custom logger configuration
81
88
 
82
89
  ```ruby
83
- Xlog.tag_logger('custom_tag')
84
- Xlog.info('Some text') # [2019-04-30 12:29:13 UTC] [ArtilesController.show] [info] [custom_tag] Message: Some info text
85
- ```
90
+ Xlog.warn('Almost expired API key', tags: 'wise', file_prefix: 'webhooks')
86
91
 
87
- Clear tags with: [DEPRECATED]
88
-
89
- ```ruby
90
- Xlog.clear_tags
92
+ # log/xlog_webhooks_development.log
93
+ [2025-01-01 12:29:13 UTC] [WebhooksController.process] [warn] [wise] Message: Almost expired API key
91
94
  ```
92
95
 
93
96
  ## Middleware
@@ -162,4 +165,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
162
165
  Everyone interacting in the Xlog project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/coaxsoft/xlog/blob/master/CODE_OF_CONDUCT.md).
163
166
 
164
167
  ## Idea
165
- Initially designed and created by [Orest Falchuk (OrestF)](https://github.com/OrestF)
168
+ Initially designed and created by [Orest Falchuk (OrestF)](https://github.com/OrestF)
data/lib/xlog/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Xlog
4
- VERSION = '0.1.7'
4
+ VERSION = '0.1.9'
5
5
  end
data/lib/xlog/xlogger.rb CHANGED
@@ -14,27 +14,28 @@ module Xlog
14
14
  @folder_names_to_remove = Dir.glob('app/*').map { |f| f.gsub('app/', '') }
15
15
  end
16
16
 
17
- def log(type, text, tags)
17
+ def log(type, text, tags, file_prefix: nil)
18
+ logger = logger_for(file_prefix)
18
19
  tags = [time_stamp, called_from(type), type] + Array.wrap(tags)
19
- @base_logger.tagged(tags.compact) { @base_logger.send(type, text) }
20
+ logger.tagged(tags.compact) { logger.send(type, text) }
20
21
  end
21
22
 
22
- def info(message, data, tags)
23
- log(:info, compose_log(message, data), tags)
23
+ def info(message, data, tags, file_prefix: nil)
24
+ log(:info, compose_log(message, data), tags, file_prefix: file_prefix)
24
25
  end
25
26
 
26
- def warn(message, data, tags)
27
- log(:warn, compose_log(message, data), tags)
27
+ def warn(message, data, tags, file_prefix: nil)
28
+ log(:warn, compose_log(message, data), tags, file_prefix: file_prefix)
28
29
  end
29
30
 
30
31
  # do NOT refactor error and and_raise_error
31
- def error(e, message, data, tags)
32
+ def error(e, message, data, tags, file_prefix: nil)
32
33
  # they MUST BE NOT DRY in order to log correct backtrace
33
- log(:error, "#{e.class}: #{e.try(:message)}. \n #{compose_log(message, data)} \n Error backtrace: \n#{backtrace(e)}", tags)
34
+ log(:error, "#{e.class}: #{e.try(:message)}. \n #{compose_log(message, data)} \n Error backtrace: \n#{backtrace(e)}", tags, file_prefix: file_prefix)
34
35
  end
35
36
 
36
- def and_raise_error(e, message, data, tags)
37
- log(:error, "#{e.class}: #{e.try(:message)}. #{newline} #{compose_log(message, data)} #{newline} Error backtrace: #{newline} #{backtrace(e)}", tags)
37
+ def and_raise_error(e, message, data, tags, file_prefix: nil)
38
+ log(:error, "#{e.class}: #{e.try(:message)}. #{newline} #{compose_log(message, data)} #{newline} Error backtrace: #{newline} #{backtrace(e)}", tags, file_prefix: file_prefix)
38
39
  message.present? ? raise(e, message) : raise(e)
39
40
  end
40
41
 
@@ -42,6 +43,14 @@ module Xlog
42
43
  @base_logger = ActiveSupport::TaggedLogging.new(logger)
43
44
  end
44
45
 
46
+ def logger_for(file_prefix)
47
+ return @base_logger if file_prefix.blank?
48
+
49
+ ActiveSupport::TaggedLogging.new(
50
+ Logger.new("log/#{['xlog', file_prefix, Rails.env].compact.join('_')}.log", 'weekly')
51
+ )
52
+ end
53
+
45
54
  private
46
55
 
47
56
  def newline
data/lib/xlog.rb CHANGED
@@ -21,20 +21,20 @@ module Xlog
21
21
  puts "\e[33mWARING: 'clear_tags' is no longer supported as it's not thread safe\e[0m"
22
22
  end
23
23
 
24
- def info(message, data: nil, tags: [])
25
- config.xlogger.info(message, data, tags)
24
+ def info(message, data: nil, tags: [], file_prefix: nil)
25
+ config.xlogger.info(message, data, tags, file_prefix: file_prefix)
26
26
  end
27
27
 
28
- def warn(message, data: nil, tags: [])
29
- config.xlogger.warn(message, data, tags)
28
+ def warn(message, data: nil, tags: [], file_prefix: nil)
29
+ config.xlogger.warn(message, data, tags, file_prefix: file_prefix)
30
30
  end
31
31
 
32
- def error(e, message: nil, data: nil, tags: [])
33
- config.xlogger.error(e, message, data, tags)
32
+ def error(e, message: nil, data: nil, tags: [], file_prefix: nil)
33
+ config.xlogger.error(e, message, data, tags, file_prefix: file_prefix)
34
34
  end
35
35
 
36
- def and_raise_error(e, message: nil, data: nil, tags: [])
37
- config.xlogger.and_raise_error(e, message, data, tags)
36
+ def and_raise_error(e, message: nil, data: nil, tags: [], file_prefix: nil)
37
+ config.xlogger.and_raise_error(e, message, data, tags, file_prefix: file_prefix)
38
38
  end
39
39
  end
40
40
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xlog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - OrestF
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-03-11 00:00:00.000000000 Z
11
+ date: 2025-09-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -132,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
132
132
  - !ruby/object:Gem::Version
133
133
  version: '0'
134
134
  requirements: []
135
- rubygems_version: 3.1.6
135
+ rubygems_version: 3.4.19
136
136
  signing_key:
137
137
  specification_version: 4
138
138
  summary: Xlog - awesome logger for your Rails app. Logs everything you need in well-formatted