-
Notifications
You must be signed in to change notification settings - Fork 314
/
custom-logger.js
84 lines (72 loc) · 2.89 KB
/
custom-logger.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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
'use strict'
var Seneca = require('../..')
// The logger below prints super condensed logs. It is useful
// for checking call orders and pattern movements when debugging.
function Logger () {}
// Loggers are loaded via a `preload` function. This is a way
// to signal seneca infrastructural plugins over business logic
// plugins, which get loaded later in the chain.
Logger.preload = function () {
var seneca = this
// Leftpad, AMIRITE
function pad (content, length) {
content = content || ''
while (content.length < length) {
content = content + ' '
}
return content
}
// Everything something is logged it calls whatever
// custom adapter is set. Adapters are passed the
// current instance of Seneca plus the raw payload.
function adapter (context, payload) {
var when = payload.when.toString()
var kind = pad(payload.kind || '-', 8).toUpperCase()
var type = pad(payload.case || '-', 8).toUpperCase()
var text = payload.pattern || payload.notice || '-'
console.log(when, kind, type, text)
}
// Seneca looks for logging adapters in `extend.logger`
// simply assign your adapter to receive the logs.
return {
extend: {
logger: adapter
}
}
}
// To load a logger plugin, you MUST load it via
// options passed to seneca. Loggers need to be loaded
// right at the start of execution. Using .use(Logger)
// is not supported.
var instance =
Seneca({
internal: {
logger: Logger
}
})
// Prints
// <Timestamp> <kind> <case> <pattern>
// ...
// 1473416085466 ADD ADD cmd:stats,role:seneca
// 1473416085481 ADD ADD cmd:close,role:seneca
// 1473416085482 ADD ADD info:fatal,role:seneca
// 1473416085482 ADD ADD get:options,role:seneca
// 1473416085483 ADD ADD role:seneca,stats:true
// 1473416085484 ADD ADD cmd:get,role:options
// 1473416085484 NOTICE - hello
// 1473416085485 NOTICE - -
// 1473416085540 ADD ADD name:transport,plugin:define,role:seneca
// 1473416085544 ACT IN name:transport,plugin:define,role:seneca
// 1473416085545 PLUGIN INIT name:transport,plugin:define,role:seneca
// 1473416085548 ADD ADD cmd:inflight,role:transport
// 1473416085549 ADD ADD cmd:listen,role:transport
// 1473416085550 ADD ADD cmd:client,role:transport
// 1473416085552 ADD ADD hook:listen,role:transport,type:tcp
// 1473416085553 ADD ADD hook:client,role:transport,type:tcp
// 1473416085554 ADD ADD hook:listen,role:transport,type:web
// 1473416085555 ADD ADD hook:client,role:transport,type:web
// 1473416085555 ADD ADD hook:listen,role:transport,type:http
// 1473416085556 ADD ADD hook:client,role:transport,type:http
// 1473416085557 ADD ADD hook:listen,role:transport,type:direct
// 1473416085558 ADD ADD hook:client,role:transport,type:direct
// ...