Socket
Socket
Sign inDemoInstall

@elastic/ecs-helpers

Package Overview
Dependencies
0
Maintainers
57
Versions
12
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @elastic/ecs-helpers

ecs-logging-nodejs helpers


Version published
Maintainers
57
Install size
25.6 kB
Created

Readme

Source

@elastic/ecs-helpers

Build Status js-standard-style

A set of helpers for the other ecs-logging-nodejs packages. You should not directly use this package.

Install

npm install @elastic/ecs-helpers

API

version

The currently supported version of Elastic Common Schema.

formatError(obj, err) -> bool

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.

const { formatError } = require('@elastic/ecs-helpers')
const logRecord = { msg: 'oops', /* ... */ }
formatError(logRecord, new Error('boom'))
console.log(logRecord)

will show:

{
  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 err metadata field passed to a logging statement. E.g. log.warn({err: myErr}, '...') for pino, log.warn('...', {err: myErr}) for winston.

formatHttpRequest(obj, req) -> bool

Function that enhances an ECS object with http request data. The given request object, req, must be one of the following:

The function returns true iff the given req was a request object it could process. Note that currently this notably does not process a http.ClientRequest as returned from http.request().

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"
    }
}

formatHttpResponse(obj, res)

Function that enhances an ECS object with http response data. The given request object, req, must be one of the following:

The function returns true iff the given res was a response object it could process. Note that currently this notably does not process a http.IncomingMessage that is the argument to the "response" event of a client http.request()

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"
            }
        }
    }
}

License

This software is licensed under the Apache 2 license.

FAQs

Last updated on 31 Oct 2023

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc