xlog 0.1.4 → 0.1.7

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: 5175ddef67a168d0ba5a200ddeb9efdc88dcdd98ccedd615ad26b2bedd2c3ef3
4
- data.tar.gz: e150396dd1caaced0ddefc4e34c48cb5e2868985bb615b1671718a4dc6fe4600
3
+ metadata.gz: 6af875c3e62c116fa408033a00632ba9f553fed05aa6c522cc112aad2662fbde
4
+ data.tar.gz: 496dfa7445a3df263fb059d002202f45908829fdec2c7c3c0b240f89379d6006
5
5
  SHA512:
6
- metadata.gz: f5ee9f1686a38080d1f9b20c51013032ac4d3fc1c46e6e0b9a8c1dcd3ee20279fa3dda20ba7c1f5365f4e62f9b33fa03913ac50440e91f55e84ea6e7684629e3
7
- data.tar.gz: bbb8f13f909d632a78377a6618c93984549a48c75526bbf73293ebcb49bf5af90c52e1183109ab4ba3ca70282fc579d2fc895286e6750e830e4c325fb551a737
6
+ metadata.gz: 646d30f81b48f8acb2a530e28951e288efc07f25e5ee8badf66fd8be6d5f8138fc2ce7f1b1b777981915516c1a39f499b0cfb056e16af8b5ef1b296a872eb10d
7
+ data.tar.gz: 7e165c158b79ab69284055ee30b40ead52971b42e78d175c90b406d2d8980bd354fa0c5b4e72d4de74b1fe175fa6b3e7764471c4205718f353cc3ab68fd1e7c7
data/README.md CHANGED
@@ -1,19 +1,30 @@
1
- # Xlog v0.1.4
1
+ # Xlog v0.1.7
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,7 +9,7 @@ module Xlog
9
9
  def call(env)
10
10
  @status, @headers, @response = @app.call(env)
11
11
  rescue StandardError => e
12
- Xlog.and_raise_error(e, data: { request_params: Rack::Request.new(env).params, status: @status, headers: @headers, response: @response })
12
+ Xlog.and_raise_error(e, data: { request_params: Rack::Request.new(env).params, status: @status, headers: @headers })
13
13
  end
14
14
  end
15
15
  end
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.4'.freeze
4
+ VERSION = '0.1.7'
5
5
  end
data/lib/xlog/xlogger.rb CHANGED
@@ -5,43 +5,36 @@ module Xlog
5
5
  include Singleton
6
6
 
7
7
  attr_accessor :app_name, :app_root, :base_logger
8
+
8
9
  def initialize
9
- @base_logger = ActiveSupport::TaggedLogging.new(Logger.new("log/xlog_#{Rails.env}.log"))
10
+ @base_logger = ActiveSupport::TaggedLogging.new(Logger.new("log/xlog_#{Rails.env}.log", 'weekly'))
10
11
 
11
12
  @app_name = Rails.application.class.to_s.split('::')[0].underscore
12
13
  @app_root = Rails.root.to_s
13
14
  @folder_names_to_remove = Dir.glob('app/*').map { |f| f.gsub('app/', '') }
14
15
  end
15
16
 
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)
17
+ def log(type, text, tags)
18
+ tags = [time_stamp, called_from(type), type] + Array.wrap(tags)
26
19
  @base_logger.tagged(tags.compact) { @base_logger.send(type, text) }
27
20
  end
28
21
 
29
- def info(message, data)
30
- log(:info, compose_log(message, data))
22
+ def info(message, data, tags)
23
+ log(:info, compose_log(message, data), tags)
31
24
  end
32
25
 
33
- def warn(message, data)
34
- log(:warn, compose_log(message, data))
26
+ def warn(message, data, tags)
27
+ log(:warn, compose_log(message, data), tags)
35
28
  end
36
29
 
37
30
  # do NOT refactor error and and_raise_error
38
- def error(e, message, data)
31
+ def error(e, message, data, tags)
39
32
  # 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)}")
33
+ log(:error, "#{e.class}: #{e.try(:message)}. \n #{compose_log(message, data)} \n Error backtrace: \n#{backtrace(e)}", tags)
41
34
  end
42
35
 
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)}")
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)
45
38
  message.present? ? raise(e, message) : raise(e)
46
39
  end
47
40
 
@@ -56,7 +49,7 @@ module Xlog
56
49
  end
57
50
 
58
51
  def time_stamp
59
- Time.zone&.now || Time.current
52
+ Time.current
60
53
  end
61
54
 
62
55
  def compose_log(message, data)
data/lib/xlog.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'rails'
4
+ require 'active_support/core_ext/time/zones'
5
+ require 'active_support/core_ext/time/calculations'
4
6
  require_relative 'xlog/xlogger'
5
7
  require_relative 'xlog/version'
6
8
  require_relative 'xlog/middleware'
@@ -9,28 +11,30 @@ module Xlog
9
11
  class << self
10
12
  attr_accessor :config, :app_name, :app_root, :base_logger, :xlogger
11
13
 
12
- def tag_logger(*tags)
13
- config.xlogger.tag_logger(tags)
14
+ # rubocop:disable Layout/LineLength
15
+ def tag_logger(*_tags)
16
+ 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
17
  end
18
+ # rubocop:enable Layout/LineLength
15
19
 
16
20
  def clear_tags
17
- config.xlogger.clear_tags
21
+ puts "\e[33mWARING: 'clear_tags' is no longer supported as it's not thread safe\e[0m"
18
22
  end
19
23
 
20
- def info(message, data: nil)
21
- config.xlogger.info(message, data)
24
+ def info(message, data: nil, tags: [])
25
+ config.xlogger.info(message, data, tags)
22
26
  end
23
27
 
24
- def warn(message, data: nil)
25
- config.xlogger.warn(message, data)
28
+ def warn(message, data: nil, tags: [])
29
+ config.xlogger.warn(message, data, tags)
26
30
  end
27
31
 
28
- def error(e, message: nil, data: nil)
29
- config.xlogger.error(e, message, data)
32
+ def error(e, message: nil, data: nil, tags: [])
33
+ config.xlogger.error(e, message, data, tags)
30
34
  end
31
35
 
32
- def and_raise_error(e, message: nil, data: nil)
33
- config.xlogger.and_raise_error(e, message, data)
36
+ def and_raise_error(e, message: nil, data: nil, tags: [])
37
+ config.xlogger.and_raise_error(e, message, data, tags)
34
38
  end
35
39
  end
36
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.4
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - OrestF
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-04-15 00:00:00.000000000 Z
11
+ date: 2022-03-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.17'
19
+ version: '2.3'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 2.3.8
20
23
  type: :development
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
27
  - - "~>"
25
28
  - !ruby/object:Gem::Version
26
- version: '1.17'
29
+ version: '2.3'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 2.3.8
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: rake
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +72,34 @@ dependencies:
66
72
  - - ">="
67
73
  - !ruby/object:Gem::Version
68
74
  version: '0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: rails
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: byebug
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
69
103
  description: Xlog - awesome logger for your Rails app. Logs everything you need in
70
104
  well-formatted view with timestamp, caller path and tags.
71
105
  email:
@@ -83,7 +117,7 @@ homepage: https://github.com/coaxsoft/xlog
83
117
  licenses:
84
118
  - MIT
85
119
  metadata: {}
86
- post_install_message:
120
+ post_install_message:
87
121
  rdoc_options: []
88
122
  require_paths:
89
123
  - lib
@@ -98,8 +132,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
98
132
  - !ruby/object:Gem::Version
99
133
  version: '0'
100
134
  requirements: []
101
- rubygems_version: 3.0.1
102
- signing_key:
135
+ rubygems_version: 3.1.6
136
+ signing_key:
103
137
  specification_version: 4
104
138
  summary: Xlog - awesome logger for your Rails app. Logs everything you need in well-formatted
105
139
  view with timestamp, caller path and tags.