loggun 0.4.0 → 0.4.1

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: 3a78f3c782857269e283aa2f00ef6f5a2002e57c1e0d2fe5d43284a54d5aa106
4
- data.tar.gz: fb9d8dad64af86d1f43c510dc34c1fd3acb9a515441315973ab0a5b72d493099
3
+ metadata.gz: cfd41231567df2c15cca3c6ba500fc8228dcf03ac808b2adb452385be59d4217
4
+ data.tar.gz: 86c26424200b7c443a4160770d7b3f0d22490db5e0ac3c41fffdd2dadd795d9e
5
5
  SHA512:
6
- metadata.gz: e0d93bbbe8ed26b5c5decc4d88c16876d4db185d5ae415b07fb47a23848149183e56fb0be6128f8c321410d205d19778228888f9cdb7ce57414ba29c380f22db
7
- data.tar.gz: '08d78b02426b5b3da9a31b90bf3715c9728de0eaeb40ed9d5b55ccfeab76c3e241146fcdaa9f052b11ee233a40fdb07e68be5f33ff4a104467cbd08b959fe07a'
6
+ metadata.gz: '058933cfb04111fe6f0f106e97efde068932b575bfc2be6bdfee0f419db586b07e0a11025eba01b65d12f71a9ef8121dc88e4c53dc39037cd95d5ee6d1ccd90b'
7
+ data.tar.gz: ebd06ae4867bb4b8cc03fa0ef1815ca73f58af294fab484f3f1207c01d3b4c305cfaa442a6b82771524a909fdb88cb68a8421c760ba8099731957a158c910858
@@ -3,8 +3,6 @@ sudo: false
3
3
  language: ruby
4
4
  cache: bundler
5
5
  rvm:
6
- - 2.3.8
7
- - 2.4.6
8
6
  - 2.5.5
9
7
  - 2.6.5
10
8
  before_install: gem install bundler
@@ -0,0 +1,36 @@
1
+ # Changelog
2
+
3
+ ## 0.4.1 - 2020-07-28
4
+ * fixes
5
+ * fill type with class name for empty `log_entity_name`
6
+
7
+ ## 0.4.0 - 2020-06-02
8
+ * fixes
9
+ * fix key_value join character to space
10
+ * fix dummy dependency alerts
11
+ * features
12
+ * add new const MESSAGE_FORMATS and test for checking the value of message_format
13
+ * add check message_format
14
+ * boolean flag replace with a whitelist and create method for generating a message
15
+ * added ability to log messages format k=v
16
+
17
+ ## 0.3.1 - 2020-04-21
18
+ * fixes
19
+ * fix error "modify frozen String" for class name in helpers
20
+
21
+ ## 0.3.0 - 2020-04-17
22
+ * fixes
23
+ * make public #generate_log_transaction_id in helper
24
+ * removed incoming http modifier
25
+
26
+ ## 0.2.0 - 2020-04-13
27
+ * fixes
28
+ * fix Readme with active_record modifier
29
+ * fix except option for helper #log_options
30
+ * refactor helpers #log_type
31
+ * fix helper define log_methods caller
32
+ * improve stability of helpers
33
+ * features
34
+ * remove legacy agent from default log pattern
35
+ * new active record modifier
36
+ * improve sidekiq modifier for difference versions
data/README.md CHANGED
@@ -1,34 +1,52 @@
1
1
  # Loggun
2
2
 
3
- [![Sponsored by FunBox](https://funbox.ru/badges/sponsored_by_funbox_compact.svg)](https://funbox.ru)
4
-
5
3
  [![Gem Version](https://badge.fury.io/rb/loggun.svg)](https://badge.fury.io/rb/loggun)
6
4
  [![Build Status](https://travis-ci.org/funbox/loggun.svg?branch=master)](https://travis-ci.org/funbox/loggun)
7
5
 
8
- ## Описание
9
- Loggun - это гем, позволяющий привести все логи приложения к единому формату
6
+ Приводит логи приложения к единому формату.
7
+
8
+ ## Содержание
9
+
10
+ - [Установка](#установка)
11
+ - [Использование](#использование)
12
+ - [Конфигурация](#конфигурация)
13
+ - [Настройки](#настройки)
14
+ - [Модификаторы](#модификаторы)
15
+ - [Rails модификатор](#rails-модификатор)
16
+ - [Active Record модификатор](#active-record-модификатор)
17
+ - [Sidekiq модификатор](#sidekiq-модификатор)
18
+ - [Clockwork модификатор](#clockwork-модификатор)
19
+ - [Модификатор исходящих HTTP-запросов](#модификатор-исходящих-http-запросов)
20
+ - [Модификатор входящих запросов в Rails](#модификатор-входящих-запросов-в-rails)
21
+ - [Пользовательские модификаторы](#пользовательские-модификаторы)
22
+ - [Хелперы](#хелперы)
10
23
 
11
24
  ## Установка
12
25
 
13
- Чтобы установить гем, добавьте в ваш Gemfile:
26
+ Чтобы установить гем, добавьте его в Gemfile:
14
27
 
15
28
  ```ruby
16
29
  gem 'loggun'
17
30
  ```
18
31
 
19
- И выполните команду :
32
+ И выполните команду:
20
33
 
21
- $ bundle
34
+ ```bash
35
+ $ bundle
36
+ ```
22
37
 
23
38
  ## Использование
24
- Вы можете использовать Loggun как обертку для вашего Logger. Для этого необходимо передать
25
- ему инстанс вашего логгера и настроить его formatter:
39
+
40
+ Loggun можно использовать как обертку для вашего `logger`. Для этого необходимо передать
41
+ ему инстанс логгера и настроить его `formatter`:
42
+
26
43
  ```ruby
27
44
  Loggun.logger = Rails.logger
28
45
  Loggun.logger.formatter = Loggun::Formatter.new
29
46
  ```
30
47
 
31
- Теперь вы можете использовать Loggun для логгирования в стандартизированном формате:
48
+ Теперь можно использовать Loggun для логирования в стандартизированном формате:
49
+
32
50
  ```ruby
33
51
  Loggun.info('http_request.api.request', user_id: current_user.id)
34
52
  #=> 2020-04-11T22:35:04.225+03:00 - 170715 INFO http_request.api.request - {"user_id": 5465}
@@ -37,12 +55,9 @@ Loggun.info('http_request.api.response', user_id: current_user.id, success: true
37
55
  #=> 2020-04-11T22:35:04.225+03:00 - 170715 INFO http_request.api.response - {"user_id": 5465, "success": true}
38
56
  ```
39
57
 
40
- Подробнее об конфигурации и использовании Loggun ниже.
41
-
42
- ### Конфигурация
43
- Для успешной конфигурации гема необходимо подгружать файл при инициализации вашего приложения.
58
+ ## Конфигурация
44
59
 
45
- `config/initializers/loggun.rb`
60
+ Конфигурацию гема необходимо производить при инициализации приложения. Например, так:
46
61
 
47
62
  ```ruby
48
63
  Loggun::Config.configure do |config|
@@ -58,38 +73,81 @@ Loggun::Config.configure do |config|
58
73
  config.modifiers.outgoing_http = false
59
74
  end
60
75
  ```
61
- Все настройки являются опциональными.
62
- #### Настройки
63
- - `precision` - точность отметок времени. По умолчанию - `milliseconds`. Может принимать одно из следующих значений: `sec`, `seconds`, `ms`, `millis`, `milliseconds`, `us`, `micros`, `microseconds`, `ns`, `nanos`, `nanoseconds`
64
- - `pattern` - текстовый шаблон для формата вывода данных в лог.
65
- Доступные ключи: `time`, `pid`, `severity`, `type`, `tags_text`, `message`, `parent_transaction`
66
- - `parent_transaction_to_message` - признак необходимости добавлять значение `parent_transaction` в тело логируемого сообщения.
67
- Вне зависимости от данной настройки можно использовать ключ `parent_transaction` в шаблоне `pattern`.
68
- - `message_format` - формат переменной message в шаблоне pattern. Доступны два формата:
69
- - `:json` - `message` логгируется как json строка
70
- - `:key_value` - `message` логгируется в формате `key1=value1 key2=value2`
71
- - `modifiers` - модификаторы для переопределения формата логирования указанного компонента. См. далее.
72
-
73
- #### Модификаторы
76
+
77
+ ### Настройки
78
+
79
+ Все настройки опциональны.
80
+
81
+ - `precision` точность отметок времени.
82
+
83
+ Может принимать одно из следующих значений:
84
+ `sec`, `seconds`, `ms`, `millis`, `milliseconds`, `us`, `micros`, `microseconds`, `ns`, `nanos`, `nanoseconds`.
85
+
86
+ По умолчанию `milliseconds`.
87
+
88
+ - `pattern` — текстовый шаблон для формата вывода данных в лог.
89
+
90
+ Доступные ключи внутри шаблона: `time`, `pid`, `severity`, `type`, `tags_text`, `message`, `parent_transaction`.
91
+
92
+ - `parent_transaction_to_message` — если `true`, то значение `parent_transaction` будет добавлено в тело логируемого сообщения.
93
+
94
+ Ключ `parent_transaction` в шаблоне `pattern` можно использовать вне зависимости от значения этой настройки.
95
+
96
+ - `message_format` — формат переменной `message` в шаблоне `pattern`.
97
+
98
+ Доступные значения:
99
+
100
+ - `:json` — `message` логируется как JSON-строка;
101
+ - `:key_value` — `message` логируется в формате `key1=value1 key2=value2`.
102
+
103
+ - `modifiers` — модификаторы для переопределения формата логирования указанного компонента. См. «[Модификаторы](#модификаторы)».
104
+
105
+ ### Модификаторы
106
+
74
107
  Каждый модифкатор может быть активирован двумя равнозначными способами:
108
+
75
109
  ```ruby
76
110
  config.modifiers.rails = true
77
111
  ```
112
+
78
113
  или
114
+
79
115
  ```ruby
80
116
  config.modifiers.rails.enable = true
81
117
  ```
82
118
 
83
- ##### Rails модификатор
84
- `config.modifier.rails` - модифицирует форматирование логгера Rails.
119
+ качестве примера активируется Rails модификатор, но может быть любой другой.)
120
+
121
+ #### Rails модификатор
122
+
123
+ `config.modifier.rails`
124
+
125
+ Модифицирует форматирование логгера Rails.
126
+
127
+ #### Active Record модификатор
128
+
129
+ `config.modifier.active_record`
130
+
131
+ Добавляет (именно добавляет, а не модифицирует) нового подписчика на SQL-события.
132
+
133
+ SQL начинает дополнительно логироваться в Loggun формате, `severity` — `info`. Например:
85
134
 
86
- ##### Active Record модификатор
87
- `config.modifier.active_record` - добавляет (именно добавляет, а не модифицирует) нового подписчика на SQL события.
88
- SQL начинает дополнительно логгироваться в Loggun формате, severity - info. Например:
89
135
  ```text
90
136
  2020-04-12T20:08:52.913+03:00 - 487257 INFO storage.sql.query - {"sql":"SELECT 1","name":null,"duration":0.837}
91
137
  ```
92
- Пример настроек:
138
+
139
+ Дополнительные настройки:
140
+
141
+ - `log_subscriber_class_name` — имя класса, реализующего логирование SQL-события.
142
+
143
+ Необходим метод `#sql`. По умолчанию: `::Loggun::Modifiers::ActiveRecord::LoggunLogSubscriber`.
144
+
145
+ - `payload_keys` — необходимые ключи в полезной нарзуке. Используется в классе по умолчанию.
146
+
147
+ Доступные ключи: `%i[sql name duration source]`.
148
+
149
+ Пример:
150
+
93
151
  ```ruby
94
152
  Loggun::Config.configure do |config|
95
153
  #...
@@ -99,26 +157,46 @@ Loggun::Config.configure do |config|
99
157
  #...
100
158
  end
101
159
  ```
102
- - `log_subscriber_class_name` - имя класса, реализующего логирование sql события.
103
- Необходим метод `#sql`. По-умолчанию `::Loggun::Modifiers::ActiveRecord::LoggunLogSubscriber`
104
160
 
105
- - `payload_keys` - необходимые ключи в полезной нарзуке. Используется в дефолтном классе. Доступные
106
- ключи: ```%i[sql name duration source]```.
161
+ #### Sidekiq модификатор
162
+
163
+ `config.modifiers.sidekiq`
164
+
165
+ Модифицирует форматирование логгера Sidekiq.
166
+
167
+ #### Clockwork модификатор
168
+
169
+ `config.modifiers.clockwork`
170
+
171
+ Модифицирует форматирование логгера Clockwork.
172
+
173
+ #### Модификатор исходящих HTTP-запросов
174
+
175
+ `config.modifiers.outgoing_http`
176
+
177
+ Добавляет логирование исходящих HTTP-запросов.
178
+ На данный момент поддерживаются только запросы, выполненные с помощью гема `HTTP`.
179
+
180
+ #### Модификатор входящих запросов в Rails
181
+
182
+ `config.modifiers.incoming_http`
183
+
184
+ Добавляет логирование входящих HTTP-запросов для контроллеров Rails.
185
+
186
+ Может иметь дополнительные настройки:
107
187
 
108
- ##### Sidekiq модификатор
109
- `config.modifiers.sidekiq` - модифицирует форматирование логгера Sidekiq.
188
+ - `controllers` массив имён базовых контроллеров, для которых необходимо добавить указанное логирование.
110
189
 
111
- ##### Clockwork модификатор
112
- `config.modifiers.clockwork` - модифицирует форматирование логгера Clockwork.
190
+ - `success_condition` — лямбда, определяющая, содержит ли успех ответ экшена.
113
191
 
114
- ##### Модификатор исходящих HTTP запросово
115
- `config.modifiers.outgoing_http` - добавляет логирование исходящих http запросов.
116
- На данный момент поддерживаются только запросы посредством гема `HTTP`.
192
+ Например: `-> { JSON.parse(response.body)['result'] == 'ok' }`
117
193
 
118
- ##### Модификатор входящих запросов в Rails
119
- `config.modifiers.incoming_http` - добавляет логирование входящих http запросов для контроллеров Rails.
120
- Данный модификатор может иметь дополнительные настройки, которые устанавливаются следующим образом
121
- (приведены значения по умолчанию):
194
+ - `error_info` лямбда, позволяющая добавить в лог информацию об ошибке, содержащейся в неуспешном ответе экшена.
195
+
196
+ Например: `-> { JSON.parse(response.body)['error_code'] }`
197
+
198
+
199
+ Пример (приведены значения по умолчанию):
122
200
 
123
201
  ```ruby
124
202
  Loggun::Config.configure do |config|
@@ -130,26 +208,25 @@ Loggun::Config.configure do |config|
130
208
  #...
131
209
  end
132
210
  ```
133
- - `controllers` - массив имён базовых контроллеров, для которых необходимо добавить указанное логирование.
134
211
 
135
- - `success_condition` - лямбда, определяющая, содержит ли успех ответ экшена. Например `-> { JSON.parse(response.body)['result'] == 'ok' }`
212
+ **Для Rails 6 и выше данный модификатор может работать некорректно.**
136
213
 
137
- - `error_info` - лямбда, позволяющая добавить в лог информацию об ошибке, содержащейся в неуспешном ответе экшена.
138
- Например `-> { JSON.parse(response.body)['error_code'] }`
214
+ В этом случае можно добавить в требуемый базовый контроллер строку:
139
215
 
140
- **Для Rails 6 и выше данный модификатор может работать некорректно.**
141
- В этом случае можно указать в требуемом базовом контроллере строку:
142
216
  ```ruby
143
217
  include Loggun::HttpHelpers
144
218
  ```
219
+
145
220
  Это делает настройки `enable` и `controllers` модификатора безсполезными,
146
- однако позволяет гарантированно логировать входящие http запросы.
221
+ однако позволяет гарантированно логировать входящие HTTP-запросы.
147
222
 
148
223
  Настройки `success_condition` и `error_info` продолжают использоваться и могут быть установлены требуемым образом.
149
224
 
150
- ##### Персональные модификаторы
225
+ #### Пользовательские модификаторы
226
+
151
227
  Помимо указанных модификаторов существует возможность добавить собственный.
152
- Необходимо уснаследовать его от `Loggun::Modifiers::Base` и указать в методе `apply` все необходимые действия.
228
+ Необходимо уснаследовать его от `Loggun::Modifiers::Base` и указать в методе `apply` все необходимые действия:
229
+
153
230
  ```ruby
154
231
  require 'sinatra/custom_logger'
155
232
 
@@ -159,7 +236,9 @@ class NewModifier < Loggun::Modifiers::Base
159
236
  end
160
237
  end
161
238
  ```
162
- Затем необходимо добавить его при конфигурации гема.
239
+
240
+ Затем необходимо добавить его при конфигурации гема:
241
+
163
242
 
164
243
  ```ruby
165
244
  Loggun::Config.configure do |config|
@@ -170,10 +249,12 @@ end
170
249
  ```
171
250
 
172
251
  ### Хелперы
173
- Подключение хелперов в класс позволяет использовать методы логирования `log_info` и `log_error`,
252
+
253
+ Подключение хэлперов в класс позволяет использовать методы логирования `log_info` и `log_error`,
174
254
  а также генерировать идентификатор транзации для каждого метода класса.
175
255
 
176
256
  Например:
257
+
177
258
  ```ruby
178
259
  class SomeClass
179
260
  include Loggun::Helpers
@@ -187,26 +268,26 @@ class SomeClass
187
268
  end
188
269
  end
189
270
  ```
190
- При вызове `#download_data` мы получим следующий вывод в лог:
271
+
272
+ При вызове `#download_data` будет следующий вывод в лог:
273
+
191
274
  ```
192
275
  2020-03-04T16:58:38.207+05:00 - 28476 INFO http_request.some_class.download_data#ffg5431_1583323118203 - {"message":["Information"]}
193
276
  2020-03-04T16:58:38.208+05:00 - 28476 INFO http_response.some_class.download_data#ffg5431_1583323118203 - {"success": true}
194
277
  ```
195
278
 
196
- **Важно**, что с хелпером log_options необходимо использовать только методы вида `log_<severity>`.
279
+ **Важно**, что с хэлпером `log_options` необходимо использовать только методы вида `log_<severity>`.
197
280
  Методы модуля `Loggun` не будут работать.
198
281
 
199
- Список всех опций хелпера log_options:
200
-
201
- - `entity_name` - имя сущности метода, string
202
- - `entity_action` - действие сущности метода, string
203
- - `as_transaction` - добавлять уникальный ID транзакции для метода, boolean
204
- - `transaction_generator` - собственный генератор ID транзакции, lambda
205
- - `log_all_methods` - признак необходимости применения хелпера ко всем методам, boolean
206
- - `only` - список методов, для которых необходимо применить хелпер (работает только если `log_all_methods` - false), Array{Symbol}
207
- - `except` - список методов, которые надо исключить для хелпера, Array{Symbol}
208
- - `log_transaction_except` - список методов, логирование которых не нужно обогащать ID транзакции, Array{Symbol}
282
+ Список всех опций хэлпера `log_options`:
209
283
 
210
- ## License
284
+ - `entity_name` — имя сущности метода, `string`;
285
+ - `entity_action` — действие сущности метода, `string`;
286
+ - `as_transaction` — добавлять ли уникальный ID транзакции для метода, `boolean`;
287
+ - `transaction_generator` — собственный генератор ID транзакции, `lambda`;
288
+ - `log_all_methods` — применять ли хэлпер ко всем методам, `boolean`;
289
+ - `only` — список методов, для которых необходимо применить хэлпер (работает только когда `log_all_methods = false`), `Array{Symbol}`;
290
+ - `except` — список методов, которые надо исключить для хэлпера, `Array{Symbol}`;
291
+ - `log_transaction_except` — список методов, логирование которых не нужно обогащать ID транзакции, `Array{Symbol}`.
211
292
 
212
- The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
293
+ [![Sponsored by FunBox](https://funbox.ru/badges/sponsored_by_funbox_centered.svg)](https://funbox.ru)
@@ -139,7 +139,9 @@ module Loggun
139
139
  type_as_arr = type.split('.')
140
140
 
141
141
  if type_as_arr.size == 1
142
- log_entity_name = klass.respond_to?(:log_entity_name) ? klass.log_entity_name : underscore(klass.name.dup)
142
+ log_entity_name = klass.log_entity_name if klass.respond_to?(:log_entity_name)
143
+
144
+ log_entity_name ||= underscore(klass.name.dup)
143
145
  type_as_arr << log_entity_name
144
146
  end
145
147
 
@@ -1,3 +1,3 @@
1
1
  module Loggun
2
- VERSION = '0.4.0'.freeze
2
+ VERSION = '0.4.1'.freeze
3
3
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: loggun
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aleksandr Noskov
8
8
  - Sergey Nesterov
9
- autorequire:
9
+ autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2020-06-02 00:00:00.000000000 Z
12
+ date: 2020-07-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -134,6 +134,7 @@ files:
134
134
  - ".gitignore"
135
135
  - ".rspec"
136
136
  - ".travis.yml"
137
+ - CHANGELOG.md
137
138
  - Gemfile
138
139
  - LICENSE.txt
139
140
  - README.md
@@ -167,7 +168,7 @@ licenses:
167
168
  metadata:
168
169
  homepage_uri: https://github.com/funbox/loggun
169
170
  source_code_uri: https://github.com/funbox/loggun
170
- post_install_message:
171
+ post_install_message:
171
172
  rdoc_options: []
172
173
  require_paths:
173
174
  - lib
@@ -183,7 +184,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
183
184
  version: '0'
184
185
  requirements: []
185
186
  rubygems_version: 3.0.6
186
- signing_key:
187
+ signing_key:
187
188
  specification_version: 4
188
189
  summary: Loggun
189
190
  test_files: []