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 +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
|
-
[![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
|
-
|
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
|
+
[![Sponsored by FunBox](https://funbox.ru/badges/sponsored_by_funbox_centered.svg)](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: []
|