xlog 0.1.5 → 0.1.6

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: d164bebc098c5c7b0dbe424397856e92011a53648273d4e8609b5f112d2db9ff
4
- data.tar.gz: c8f0cc3eabb68d96bc60dfa12d5a598fe071d7a72de5c53141284254d99dfe56
3
+ metadata.gz: 8863710eaab6d3927f227924b036248dd2bb416839a3df5b955f12c7a51cd4b5
4
+ data.tar.gz: 7259415eb72a926f64d91d4eb9f888476a39927a13335873aeb7e179a92fc7db
5
5
  SHA512:
6
- metadata.gz: e14895a0d31c8db2a23a3b9745d1b43e8230d26f70ac955c64f0da3adcfd188501233ecfd57c9019f9e864203e07edc053803b2ef79b9e4e4a5538d8fa8b28dc
7
- data.tar.gz: 69765e968d5a89352cc9ce5fe5f4fd4dfd9a8c610063224b5f738305a39a11b0f9bbc8d01eadfd8821cded84a474afc3ac63d79871c059b127fc31c9105dba29
6
+ metadata.gz: f9da1a515bb2cf27829dc81a947a224aaba7eea61eb15d5f48a2221bbf0f06d3e077ab8d75f8cde273a9be827d6d99b1b3c9a55bbb9eacb8b65bc69abc78a0ab
7
+ data.tar.gz: e360df5da61c0d47353d95f4850bd4e7a524c29c54fcf4e0e8f0dc9a3055f78e84b32b1caf6b668bbe3cced6c4f6f36b91373bc499df4a1954a513892bb54544
data/README.md CHANGED
@@ -1,19 +1,30 @@
1
- # Xlog v0.1.5
1
+ # Xlog v0.1.6
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
5
  ## Usage
6
- ##### Standard
6
+
7
+ ### `.info`
8
+
7
9
  Log any info with `.info` method
10
+
8
11
  ```ruby
9
12
  Xlog.info('Some info text') # [2019-04-30 12:29:13 UTC] [ArtilesController.show] [info] Message: Some info text
10
13
  ```
14
+
15
+
16
+ ### `.warn`
17
+
11
18
  Log important info with `.warn` method
19
+
12
20
  ```ruby
13
21
  Xlog.warn('Validation failed') # [2019-04-30 12:29:13 UTC] [ArticlesController.update] [warn] Message: Validation failed
14
22
  ```
15
23
 
24
+ ### `.error` and `.and_raise_error`
25
+
16
26
  Xlog has awesome `.error` and `.and_raise_error` methods
27
+
17
28
  ```ruby
18
29
  def index
19
30
  10 / 0
@@ -22,7 +33,9 @@ def index
22
33
  Xlog.and_raise_error(e, data: { params: params }, message: 'Some message text here')
23
34
  end
24
35
  ```
36
+
25
37
  ...and the output
38
+
26
39
  ```
27
40
  [2019-04-30 11:48:33 UTC] [Admin::OrdersController.index] [error] ZeroDivisionError: divided by 0.
28
41
  | Message: Some message text here
@@ -31,23 +44,56 @@ end
31
44
  | /home/me/test_app/app/controllers/admin/orders_controller.rb:7:in `/'
32
45
  | /home/me/test_app/app/controllers/admin/orders_controller.rb:7:in `index'
33
46
  ```
47
+
34
48
  The only difference between `Xlog.error` and `Xlog.and_raise_error` is that second one raises error after logging.
35
49
 
50
+ Log any info with `.info` method
51
+
36
52
  Xlog automatically defines Rails application name and environment.
37
53
  It writes logs into `log/xlog_[environement].log`
38
54
 
39
- Xlog also supports custom tags
55
+ ### Data
56
+
57
+ Any log method (`.info`, `.warn`, `.error`, `.and_raise_error`) supports `data: ` - named argument. Put any object as `data: my_object`
58
+ and it will be logged as "inspected" object.
59
+
60
+
61
+ ```ruby
62
+ Xlog.info('test info', data: { my: 'hash' })
63
+ # [2020-10-01 15:41:45 +0300] [(irb):4:in `irbBinding'.irb_binding] [info] Message: test info
64
+ # | Data: {:my=>"hash"}
65
+
66
+ ```
67
+
68
+ ### Tags
69
+
70
+ As far as `.tag_logger` is deprecated as it's not thread-safe, the new tags mechanism is presented.
71
+ Any log method (`.info`, `.warn`, `.error`, `.and_raise_error`) supports `tag: ` - named argument
72
+
73
+ ```ruby
74
+ Xlog.info('Some info text', tags: 'my_custom_tag') # [2019-04-30 12:29:13 UTC] [ArtilesController.show] [info] [my_custom_tag] Message: Some info text
75
+ Xlog.warn('Validation failed', tags: %w[validation input_error]) # [2019-04-30 12:29:13 UTC] [ArticlesController.update] [warn] [validation] [input_error] Message: Validation failed
76
+ Xlog.warn(error, tags: %w[fatal]) # [2019-04-30 12:29:13 UTC] [ArticlesController.update] [error] [fatal] Message: Zero division error
77
+ ```
78
+
79
+
80
+ ### `.tag_logger` [DEPRECATED]
81
+
40
82
  ```ruby
41
83
  Xlog.tag_logger('custom_tag')
42
84
  Xlog.info('Some text') # [2019-04-30 12:29:13 UTC] [ArtilesController.show] [info] [custom_tag] Message: Some info text
43
85
  ```
44
86
 
45
- Clear tags with:
87
+ Clear tags with: [DEPRECATED]
88
+
46
89
  ```ruby
47
90
  Xlog.clear_tags
48
91
  ```
49
- ##### Middleware
92
+
93
+ ## Middleware
94
+
50
95
  From version 0.1.4 Xlog could be used as Rails middleware. It catches `StandardError` using `Xlog.and_raise_error`.
96
+
51
97
  ```ruby
52
98
  # /config/application.rb
53
99
  module MyApp
@@ -60,6 +106,7 @@ From version 0.1.4 Xlog could be used as Rails middleware. It catches `StandardE
60
106
  ```
61
107
 
62
108
  ## Configuration
109
+
63
110
  Xlog is ready to use right out of the box, but it's possible to reconfigure default logger. Default logger is simple `Logger.new`. Add this code to `config/initializers/xlog.rb` and set any custom logger you want.
64
111
 
65
112
  ```ruby
@@ -67,7 +114,9 @@ Xlog.configure do |config|
67
114
  config.custom_logger = Logger.new(STDOUT) # or Logger.new('foo.log', 10, 1024000) or any other
68
115
  end
69
116
  ```
117
+
70
118
  It's possible to set third-party logger like Logentries(r7rapid)
119
+
71
120
  ```ruby
72
121
  require 'le'
73
122
 
@@ -9,28 +9,30 @@ module Xlog
9
9
  class << self
10
10
  attr_accessor :config, :app_name, :app_root, :base_logger, :xlogger
11
11
 
12
- def tag_logger(*tags)
13
- config.xlogger.tag_logger(tags)
12
+ # rubocop:disable Layout/LineLength
13
+ def tag_logger(*_tags)
14
+ puts "\e[33mWARING: 'tag_logger' is no longer supported as it's not thread safe. Use 'tags: ' named argument instead for 'info', 'warn', 'error', 'and_raise_error'.\e[0m"
14
15
  end
16
+ # rubocop:enable Layout/LineLength
15
17
 
16
18
  def clear_tags
17
- config.xlogger.clear_tags
19
+ puts "\e[33mWARING: 'clear_tags' is no longer supported as it's not thread safe\e[0m"
18
20
  end
19
21
 
20
- def info(message, data: nil)
21
- config.xlogger.info(message, data)
22
+ def info(message, data: nil, tags: [])
23
+ config.xlogger.info(message, data, tags)
22
24
  end
23
25
 
24
- def warn(message, data: nil)
25
- config.xlogger.warn(message, data)
26
+ def warn(message, data: nil, tags: [])
27
+ config.xlogger.warn(message, data, tags)
26
28
  end
27
29
 
28
- def error(e, message: nil, data: nil)
29
- config.xlogger.error(e, message, data)
30
+ def error(e, message: nil, data: nil, tags: [])
31
+ config.xlogger.error(e, message, data, tags)
30
32
  end
31
33
 
32
- def and_raise_error(e, message: nil, data: nil)
33
- config.xlogger.and_raise_error(e, message, data)
34
+ def and_raise_error(e, message: nil, data: nil, tags: [])
35
+ config.xlogger.and_raise_error(e, message, data, tags)
34
36
  end
35
37
  end
36
38
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Xlog
4
- VERSION = '0.1.5'.freeze
4
+ VERSION = '0.1.6'
5
5
  end
@@ -13,35 +13,27 @@ module Xlog
13
13
  @folder_names_to_remove = Dir.glob('app/*').map { |f| f.gsub('app/', '') }
14
14
  end
15
15
 
16
- def tag_logger(*tags)
17
- @tags = tags
18
- end
19
-
20
- def clear_tags
21
- @tags = nil
22
- end
23
-
24
- def log(type, text)
25
- tags = [time_stamp, called_from(type), type] + Array.wrap(@tags)
16
+ def log(type, text, tags)
17
+ tags = [time_stamp, called_from(type), type] + Array.wrap(tags)
26
18
  @base_logger.tagged(tags.compact) { @base_logger.send(type, text) }
27
19
  end
28
20
 
29
- def info(message, data)
30
- log(:info, compose_log(message, data))
21
+ def info(message, data, tags)
22
+ log(:info, compose_log(message, data), tags)
31
23
  end
32
24
 
33
- def warn(message, data)
34
- log(:warn, compose_log(message, data))
25
+ def warn(message, data, tags)
26
+ log(:warn, compose_log(message, data), tags)
35
27
  end
36
28
 
37
29
  # do NOT refactor error and and_raise_error
38
- def error(e, message, data)
30
+ def error(e, message, data, tags)
39
31
  # they MUST BE NOT DRY in order to log correct backtrace
40
- log(:error, "#{e.class}: #{e.try(:message)}. \n #{compose_log(message, data)} \n Error backtrace: \n#{backtrace(e)}")
32
+ log(:error, "#{e.class}: #{e.try(:message)}. \n #{compose_log(message, data)} \n Error backtrace: \n#{backtrace(e)}", tags)
41
33
  end
42
34
 
43
- def and_raise_error(e, message, data)
44
- log(:error, "#{e.class}: #{e.try(:message)}. #{newline} #{compose_log(message, data)} #{newline} Error backtrace: #{newline} #{backtrace(e)}")
35
+ def and_raise_error(e, message, data, tags)
36
+ log(:error, "#{e.class}: #{e.try(:message)}. #{newline} #{compose_log(message, data)} #{newline} Error backtrace: #{newline} #{backtrace(e)}", tags)
45
37
  message.present? ? raise(e, message) : raise(e)
46
38
  end
47
39
 
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.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - OrestF
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-08-12 00:00:00.000000000 Z
11
+ date: 2020-10-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler