@elastic/ecs-helpers

2.1.1 • Public • Published

@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.

Dependencies (0)

    Dev Dependencies (7)

    Package Sidebar

    Install

    npm i @elastic/ecs-helpers

    Weekly Downloads

    280,786

    Version

    2.1.1

    License

    Apache-2.0

    Unpacked Size

    26.3 kB

    Total Files

    6

    Last publish

    Collaborators

    • lenegadewoll
    • cbishopewc
    • cindy_c
    • asnyder-elastic
    • lgestc
    • patryk.kopycinski
    • banerjeesoham004
    • legrego
    • bradtimmerman
    • devcorpio
    • yan.savitski
    • jeramysoucy
    • tkajtoch
    • johnwcambra
    • colleen.mcginnis
    • scottybollinger
    • kyrspl
    • phoey1
    • verogo
    • breehall
    • trevorpierce
    • glitteringkatie
    • jen-huang
    • delvedor
    • lukasolson
    • ccowan
    • jbudz
    • thomasneirynck
    • weltenwort
    • pugnascotia
    • zinckiwi
    • brandon.kobel
    • nreese
    • mgreau
    • jonahbull
    • jarpy
    • leathekd
    • lukeelmers
    • ddillinger
    • joshdover
    • jasonstoltz
    • bamieh
    • markov00
    • joshmock
    • vignesh.shanmugam
    • watson
    • rhodesjason
    • jmlrt
    • mattkime
    • constancecchen
    • afoucret
    • nickpeihl
    • axw
    • mistic
    • elasticmachine
    • gtback
    • pickypg
    • trentm
    • andrewvc-elastic
    • jorge.sanz
    • stratoula
    • nkammah
    • streamich
    • nickofthyme
    • chloeruka