ecs-logging-nodejs helpers
npm install @elastic/ecs-helpers
 
A set of helpers for the other ecs-logging-nodejs packages. You should
not directly use this package.
``sh`
npm install @elastic/ecs-helpers
The currently supported version of Elastic Common Schema.
A function that adds ECS Error fields
for a given Error object. It returns true iff the given err was an Error
object it could process.
`js`
const { formatError } = require('@elastic/ecs-helpers')
const logRecord = { msg: 'oops', / ... / }
formatError(logRecord, new Error('boom'))
console.log(logRecord)
will show:
`js`
{
msg: 'oops',
error: {
type: 'Error',
message: 'boom',
stack_trace: 'Error: boom\n' +
' at REPL30:1:26\n' +
' at Script.runInThisContext (vm.js:133:18)\n' +
// ...
}
}
The ECS logging libraries typically use this to automatically handle an errlog.warn({err: myErr}, '...')
metadata field passed to a logging statement. E.g. for pino, log.warn('...', {err: myErr})
for winston.
Function that enhances an ECS object with http request data.
The given request object, req, must be one of the following:http.IncomingMessage
- Node.js's core ,
- Express's request object that extends IncomingMessage, or
- a hapi request object.
The function returns true iff the given req was a request object it couldhttp.ClientRequest
process. Note that currently this notably does not process ahttp.request()
as returned from .
`js
const http = require('http')
const { formatHttpRequest } = require('@elastic/ecs-helpers')
http.createServer(function (req, res) {
res.end('hi')
const obj = {}
formatHttpRequest(obj, req)
console.log('obj:', JSON.stringify(obj, null, 4))
}).listen(3000)
`
Running this and making a request via curl http://localhost:3000/ will
print something close to:
``
obj: {
"http": {
"version": "1.1",
"request": {
"method": "get",
"headers": {
"host": "localhost:3000",
"accept": "/"
}
}
},
"url": {
"full": "http://localhost:3000/",
"path": "/"
},
"client": {
"address": "::1",
"ip": "::1",
"port": 61969
},
"user_agent": {
"original": "curl/7.64.1"
}
}
Function that enhances an ECS object with http response data.
The given request object, req, must be one of the following:http.ServerResponse
- Node.js's core ,
- Express's response object that extends ServerResponse, or
- a hapi request object
The function returns true iff the given res was a response object it couldhttp.IncomingMessage
process. Note that currently this notably does not process ahttp.request()
that is the argument to the
"response" event of a
client
`js
const http = require('http')
const { formatHttpRequest } = require('@elastic/ecs-helpers')
http.createServer(function (req, res) {
res.setHeader('Foo', 'Bar')
res.end('hi')
const obj = {}
formatHttpResponse(obj, res)
console.log('obj:', JSON.stringify(obj, null, 4))
}).listen(3000)
`
Running this and making a request via curl http://localhost:3000/ will
print something close to:
```
rec: {
"http": {
"response": {
"status_code": 200,
"headers": {
"foo": "Bar"
}
}
}
}
This software is licensed under the Apache 2 license.