xlog 0.1.8 → 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: 460bcad515dfdef4370712e91ac0110afe3fd1884386abcb0f464bd2cc9606d2
4
- data.tar.gz: b0d8baf9e37cae99ed51cfa5afbe99152d6112bdc3ae6be2e11431419d6f20f6
3
+ metadata.gz: 10f05b3e597edaef8153f2a6a39cb8a49db5a57f17eef2f7f4f46b70f8322e50
4
+ data.tar.gz: 648f2de49e6d459dc70c84eff34e6f121a242d750ab9d69776506de33f5ec12c
5
5
  SHA512:
6
- metadata.gz: 6b3003bd928eb552f2038704753e0f5490aab2d6efa271ad2b1a2db56f2946a443d9cd1a722cfae45dc21f21a469ff9797e3758432a337ef7cd9f5ce16da0715
7
- data.tar.gz: 6688c324b9a71b430df3942018bf28fa06c2b667d0103edc7ca8e69c39bff0c4d1cd5d2562a687ac9001665635c783a05873e3f2aaeb82fcea7ad44aa66806f9
6
+ metadata.gz: 93ed87b2fbefff780e977d33c36ea258b379a4c51417d6fc3a66fea0162e9a3952a5e183aea5da29ea1fdd3ad35cc42c1741940f76409e3c19fb538edee083bb
7
+ data.tar.gz: cd7126e8ff9498dbf5c210866b66a700f0b00221c7a570ff139926655c7617c1f53ca2c2a280bc407b4f55f6b5fa031513002694c236d88ac36fe76d31e70bbd
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Xlog v0.1.8 - [changelog](https://github.com/coaxsoft/xlog/blob/master/CHANGELOG.md)
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
 
@@ -6,6 +6,7 @@ Xlog - awesome logger for your Rails app. Logs everything you need in well-forma
6
6
  - 2.7.3
7
7
  - 3.0.0
8
8
  - 3.1.1
9
+ - 3.2.3
9
10
 
10
11
  ## Usage
11
12
 
@@ -32,8 +33,8 @@ Xlog has awesome `.error` and `.and_raise_error` methods
32
33
 
33
34
  ```ruby
34
35
  def index
35
- 10 / 0
36
- @orders = Order.all
36
+ 10 / 0
37
+ @orders = Order.all
37
38
  rescue StandardError => e
38
39
  Xlog.and_raise_error(e, data: { params: params }, message: 'Some message text here')
39
40
  end
@@ -42,10 +43,10 @@ end
42
43
  ...and the output
43
44
 
44
45
  ```
45
- [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.
46
47
  | Message: Some message text here
47
- | Data: {:params=><ActionController::Parameters {"controller"=>"admin/orders", "action"=>"index"} permitted: false>}
48
- | Error backtrace:
48
+ | Data: {:params=><ActionController::Parameters {"controller"=>"admin/orders", "action"=>"index"} permitted: false>}
49
+ | Error backtrace:
49
50
  | /home/me/test_app/app/controllers/admin/orders_controller.rb:7:in `/'
50
51
  | /home/me/test_app/app/controllers/admin/orders_controller.rb:7:in `index'
51
52
  ```
@@ -81,18 +82,15 @@ Xlog.warn('Validation failed', tags: %w[validation input_error]) # [2019-04-30 1
81
82
  Xlog.warn(error, tags: %w[fatal]) # [2019-04-30 12:29:13 UTC] [ArticlesController.update] [error] [fatal] Message: Zero division error
82
83
  ```
83
84
 
85
+ ### Custom file prefix
84
86
 
85
- ### `.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
86
88
 
87
89
  ```ruby
88
- Xlog.tag_logger('custom_tag')
89
- Xlog.info('Some text') # [2019-04-30 12:29:13 UTC] [ArtilesController.show] [info] [custom_tag] Message: Some info text
90
- ```
91
-
92
- Clear tags with: [DEPRECATED]
90
+ Xlog.warn('Almost expired API key', tags: 'wise', file_prefix: 'webhooks')
93
91
 
94
- ```ruby
95
- 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
96
94
  ```
97
95
 
98
96
  ## Middleware
@@ -167,4 +165,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
167
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).
168
166
 
169
167
  ## Idea
170
- 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.8'
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.8
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-30 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