/
index.js
48 lines (45 loc) · 1.4 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
41
42
43
44
45
46
47
48
'use strict'
const os = require('os')
const UDPInterface = require('./lib/sending-interfaces/udp')
const { parseLevel, GelfFactory } = require('./lib/gelf')
let internals = {
sendGelfMessage: function (tag, data, options) {
try {
data.source = options.source
const gelfPayload = GelfFactory(data, tag)
if (gelfPayload.level > options.level) {
return
}
const udpSender = new UDPInterface(
gelfPayload,
options.config,
options.port,
options.host
)
udpSender.send()
} catch(e) {
console.log(e)
}
},
pluginFactory: function (logType, options) {
if(logType === 'server') {
return function (event) {
internals.sendGelfMessage(event.tags[0], event.data, options)
}
} else if(logType === 'request') {
return function (request, event) {
internals.sendGelfMessage(event.tags[0], event.data, options)
}
}
}
}
exports.register = function (server, options, next) {
options.source = options.source ? options.source : os.hostname()
options.level = parseLevel(options.level || 'debug')
const serverLogHandler = internals.pluginFactory('server', options)
const requestLogHandler = internals.pluginFactory('request', options)
server.on('log', serverLogHandler)
server.on('request', requestLogHandler)
next()
}
exports.register.attributes = { pkg: require('./package.json') }