inscriber
v0.0.6
Published
Trace and Span logger
Downloads
3
Readme
Inscriber
ES6 Basic Trace and Span Tracker. Use it to add some structure to your server logs.
Trace and Span Tracker
0.0.4 Basic Release
Implementation
const inscriber = require('inscriber');
const trace = new inscriber.trace(id, name);
const span = new inscriber.span(name, trace, traceId, tags);
Log Class
- info(message)
- success(message)
- error(message)
Trace Class (extends Log)
- init()
- recieved()
- completed()
- failed()
- inherited()
- returnedg()
Span Class (extends Log)
- init()
- completed()
- failed()
Simple example
Talking between two Express servers - in this example local testing on port 3000 and 3090.
Assume the first server is for a Bot and the second for an API.
Send custom headers X-Trace
and Trace-Parent-ID
.
// Server one on localhost:3000
const inscriber = require('inscriber');
app.get('/log', (req, res) => {
// Server one
const trace = new Log.trace('id-reference', 'Log Routing');
const spanOne = new Log.span('Bot /log route', trace.name, trace.id);
trace.init();
span.init()
.info('Route accessed')
.info('Attempting to contact API');
axios.get('http://localhost:3090/apilog', {
headers: {
'X-Trace': trace.name,
'Trace-Parent-ID': trace.id
}
})
.then(data => {
const spanTwo = new Log.span('Bot /log data returned', trace.name, trace.id);
span.info('Route return')
.completed();
trace.completed();
spanTwo.completed();
res.send('Success');
})
.catch(err => {
span.failed();
trace.failed();
res.send('err');
});
});
// Server two on localhost:3090
const inscriber = require('inscriber');
app.get('/log', function(req, res) {
const trace = new inscriber.trace(req.get('Trace-Parent-ID'), req.get('X-Trace'));
trace.inherited()
.info('Trace id and name recieved from other server');
const span = new inscriber.span('API /log route', trace.name, trace.id);
res.send('Server is healthy');
span.completed();
trace.returned();
});
OUTPUT
# Server One
::TRACE [Log Routing] [Thu Jul 13 2017 17:00:29 GMT+1000 (AEST)]:: TRACE_INIT (id-reference) Log Routing
::SPAN [Log Routing] [Thu Jul 13 2017 17:00:29 GMT+1000 (AEST)]:: (Bot /log route): SPAN_INIT Bot /log route
::SPAN [Log Routing] [Thu Jul 13 2017 17:00:29 GMT+1000 (AEST)]:: (Bot /log route): Route accessed
::SPAN [Log Routing] [Thu Jul 13 2017 17:00:29 GMT+1000 (AEST)]:: (Bot /log route): Attempting to contact GraphQL
::SPAN [Log Routing] [Thu Jul 13 2017 17:00:29 GMT+1000 (AEST)]:: (Bot /log route): Route return
::SPAN [Log Routing] [Thu Jul 13 2017 17:00:29 GMT+1000 (AEST)]:: (Bot /log route): SPAN_COMPLETED Bot /log route
::TRACE [Log Routing] [Thu Jul 13 2017 17:00:29 GMT+1000 (AEST)]:: TRACE_COMPLETED (id-reference) Log Routing
::SPAN [Log Routing] [Thu Jul 13 2017 17:00:29 GMT+1000 (AEST)]:: (Bot /log data returned): SPAN_COMPLETED Bot /log data returned
# Server Two
::TRACE [Log Routing] [Thu Jul 13 2017 17:00:29 GMT+1000 (AEST)]:: TRACE_INHERITED (id-reference) Log Routing
::TRACE [Log Routing] [Thu Jul 13 2017 17:00:29 GMT+1000 (AEST)]:: Trace id and name recieved from other server
::SPAN [Log Routing] [Thu Jul 13 2017 17:00:29 GMT+1000 (AEST)]:: (API /log route): SPAN_COMPLETED API /log route
::TRACE [Log Routing] [Thu Jul 13 2017 17:00:29 GMT+1000 (AEST)]:: TRACE_RETURNED (id-reference) Log Routing