-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
40 lines (31 loc) · 1.09 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/* eslint-disable no-console */
const { parse, stringify } = require('flatted');
const logger = require('gelf-pro');
const pkg = require('./package');
const DEFAULT_LOG_LEVEL = 6; // info
const getLogLevel = (tag) => (Object.prototype.hasOwnProperty.call(logger.config.levels, tag) ? logger.config.levels[tag] : DEFAULT_LOG_LEVEL);
const sendMessage = (tag, data, extra) => {
try {
const isString = typeof data === 'string' || data instanceof String;
const message = isString ? data : stringify(data);
const level = getLogLevel(tag);
const extraData = extra ? parse(stringify(extra)) : undefined;
logger.message(message, level, extraData);
} catch (e) {
console.error(e);
}
};
const register = (server, options) => {
logger.setConfig(options);
server.events.on('log', (event) => {
sendMessage(event.tags[0], event.data);
});
server.events.on('request', (request, event) => {
// @TODO: add request data into logs
sendMessage(event.tags[0], event.data);
});
};
exports.plugin = {
pkg,
register
};