loggun 0.4.0 → 0.4.1

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: 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: []