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 +4 -4
- data/.travis.yml +0 -2
- data/CHANGELOG.md +36 -0
- data/README.md +155 -74
- data/lib/loggun/helpers.rb +3 -1
- data/lib/loggun/version.rb +1 -1
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cfd41231567df2c15cca3c6ba500fc8228dcf03ac808b2adb452385be59d4217
|
4
|
+
data.tar.gz: 86c26424200b7c443a4160770d7b3f0d22490db5e0ac3c41fffdd2dadd795d9e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '058933cfb04111fe6f0f106e97efde068932b575bfc2be6bdfee0f419db586b07e0a11025eba01b65d12f71a9ef8121dc88e4c53dc39037cd95d5ee6d1ccd90b'
|
7
|
+
data.tar.gz: ebd06ae4867bb4b8cc03fa0ef1815ca73f58af294fab484f3f1207c01d3b4c305cfaa442a6b82771524a909fdb88cb68a8421c760ba8099731957a158c910858
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
ADDED
@@ -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
|
-
[](https://funbox.ru)
|
4
|
-
|
5
3
|
[](https://badge.fury.io/rb/loggun)
|
6
4
|
[](https://travis-ci.org/funbox/loggun)
|
7
5
|
|
8
|
-
|
9
|
-
|
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
|
-
Чтобы установить гем, добавьте в
|
26
|
+
Чтобы установить гем, добавьте его в Gemfile:
|
14
27
|
|
15
28
|
```ruby
|
16
29
|
gem 'loggun'
|
17
30
|
```
|
18
31
|
|
19
|
-
И выполните
|
32
|
+
И выполните команду:
|
20
33
|
|
21
|
-
|
34
|
+
```bash
|
35
|
+
$ bundle
|
36
|
+
```
|
22
37
|
|
23
38
|
## Использование
|
24
|
-
|
25
|
-
|
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
|
-
Теперь
|
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
|
-
|
41
|
-
|
42
|
-
### Конфигурация
|
43
|
-
Для успешной конфигурации гема необходимо подгружать файл при инициализации вашего приложения.
|
58
|
+
## Конфигурация
|
44
59
|
|
45
|
-
|
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
|
-
|
64
|
-
|
65
|
-
|
66
|
-
- `
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
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
|
-
|
84
|
-
|
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
|
-
|
106
|
-
|
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
|
-
|
109
|
-
`config.modifiers.sidekiq` - модифицирует форматирование логгера Sidekiq.
|
188
|
+
- `controllers` — массив имён базовых контроллеров, для которых необходимо добавить указанное логирование.
|
110
189
|
|
111
|
-
|
112
|
-
`config.modifiers.clockwork` - модифицирует форматирование логгера Clockwork.
|
190
|
+
- `success_condition` — лямбда, определяющая, содержит ли успех ответ экшена.
|
113
191
|
|
114
|
-
|
115
|
-
`config.modifiers.outgoing_http` - добавляет логирование исходящих http запросов.
|
116
|
-
На данный момент поддерживаются только запросы посредством гема `HTTP`.
|
192
|
+
Например: `-> { JSON.parse(response.body)['result'] == 'ok' }`
|
117
193
|
|
118
|
-
|
119
|
-
|
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
|
-
|
212
|
+
**Для Rails 6 и выше данный модификатор может работать некорректно.**
|
136
213
|
|
137
|
-
|
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
|
-
однако позволяет гарантированно логировать входящие
|
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
|
-
|
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
|
-
|
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
|
-
**Важно**, что с
|
279
|
+
**Важно**, что с хэлпером `log_options` необходимо использовать только методы вида `log_<severity>`.
|
197
280
|
Методы модуля `Loggun` не будут работать.
|
198
281
|
|
199
|
-
Список всех опций
|
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
|
-
|
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
|
-
|
293
|
+
[](https://funbox.ru)
|
data/lib/loggun/helpers.rb
CHANGED
@@ -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.
|
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
|
|
data/lib/loggun/version.rb
CHANGED
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.
|
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-
|
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: []
|