New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@rentspree/express-elasticsearch-logger

Package Overview
Dependencies
Maintainers
3
Versions
26
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@rentspree/express-elasticsearch-logger - npm Package Compare versions

Comparing version 4.0.0 to 4.0.1

43

lib/config.js

@@ -27,3 +27,2 @@ const indexSettings = {

ignore_above: 256,
normalizer: "lowercase",
},

@@ -70,3 +69,3 @@ },

},
acceptencoding: {
"accept-encoding": {
type: "keyword",

@@ -79,26 +78,32 @@ normalizer: "lowercase",

},
cdnloop: {
"api-key": {
type: "keyword",
},
"cdn-loop": {
type: "keyword",
normalizer: "lowercase",
},
cfconnectingip: {
"cf-connecting-ip": {
type: "keyword",
normalizer: "lowercase",
},
cfipcountry: {
"cf-ipcountry": {
type: "keyword",
normalizer: "lowercase",
},
cfray: {
"cf-ray": {
type: "keyword",
normalizer: "lowercase",
},
cfvisitor: {
"cf-request-id": {
type: "keyword",
},
"cf-visitor": {
type: "keyword",
normalizer: "lowercase",
},
contentlength: {
"content-length": {
type: "integer",
},
contenttype: {
"content-type": {
type: "keyword",

@@ -111,39 +116,39 @@ normalizer: "lowercase",

},
useragent: {
"user-agent": {
type: "text",
analyzer: "standard",
},
xforwardedfor: {
"x-forwarded-for": {
type: "keyword",
normalizer: "lowercase",
},
xforwardedhost: {
"x-forwarded-host": {
type: "keyword",
normalizer: "lowercase",
},
xforwardedport: {
"x-forwarded-port": {
type: "keyword",
normalizer: "lowercase",
},
xforwardedproto: {
"x-forwarded-proto": {
type: "keyword",
normalizer: "lowercase",
},
xoriginalforwardedfor: {
"x-original-forwarded-for": {
type: "keyword",
normalizer: "lowercase",
},
xoriginaluri: {
"x-original-uri": {
type: "keyword",
normalizer: "lowercase",
},
xrealip: {
"x-real-ip": {
type: "keyword",
normalizer: "lowercase",
},
xrequestid: {
"x-request-id": {
type: "keyword",
normalizer: "lowercase",
},
xscheme: {
"x-scheme": {
type: "keyword",

@@ -150,0 +155,0 @@ normalizer: "lowercase",

@@ -67,12 +67,13 @@ /* eslint-disable no-console */

* @param {Object} config elasticsearch configuration
* @param {String=} config.index elasticsearch index (default: log_YEAR_MONTH)
* @param {String} [config.host="http://localhost:9200"] elasticsearch host to connect
* @param {String} [config.index="log_[YYYY]-h[1|2]"] elasticsearch index (default: log_YYYY-h1 or log_YYYY-h2 bi-annually)
* @param {Object} config.whitelist
* @param {Array.<String>} config.whitelist.request request properties to log
* @param {Array.<String>} config.whitelist.response response properties to log
* @param {Array.<String>} config.censor list of request body properties to censor
* @param {Boolean} config.includeDefault include default whitelist and censor the the given config
* @param {String?} config.indexPrefix elasticsearch index prefix for running index
* @param {String?} config.indexSuffixBy elasticsearch index suffix for running index, one of m M <Monthly> q Q <Quarterly> h H <Bi-annually>
* @param {Object?} config.indexSettings settings in the mapping to be created
* @param {elasticsearch.Client=} client elasticsearch client
* @param {Array.<String>} [config.whitelist.request=["userId","body","email","httpVersion","headers","method","originalUrl","path","query"]] request properties to log
* @param {Array.<String>} [config.whitelist.response=["statusCode", "sent", "took"]] response properties to log
* @param {Array.<String>} [config.censor=["password"]] list of request body properties to censor
* @param {Boolean} [config.includeDefault=true] include default whitelist and censor the the given config
* @param {String} [config.indexPrefix="log"] elasticsearch index prefix for running index
* @param {String} [config.indexSuffixBy="halfYear"] elasticsearch index suffix for running index, one of m M month (Monthly) q Q quarter (Quarterly) h H halfYear (Bi-annually)
* @param {Object} [config.indexSettings] settings in the mapping to be created
* @param {elasticsearch.Client=} client @elastic/elasticsearch client to be injected
* @returns {elasticsearchLoggerMiddleware} express middleware

@@ -114,3 +115,3 @@ */

const start = Date.now()
const indexName = config.index || getIndexName()
/**

@@ -123,3 +124,3 @@ * Document indexed with ElasticSearch. `request` and `response` properties

* @property {Number} duration milliseconds between request and response
* @property {Object} request
* @property {Object} request requst object detail of express
* @property {String} request.httpVersion

@@ -144,3 +145,2 @@ * @property {Object} request.headers

*/
const indexName = config.index || getIndexName()
const doc = {

@@ -147,0 +147,0 @@ env: process.env.NODE_ENV || "development",

{
"name": "@rentspree/express-elasticsearch-logger",
"description": "Log Express app requests to ElasticSearch.",
"version": "4.0.0",
"version": "4.0.1",
"homepage": "https://github.com/rentspree/express-elasticsearch-logger",

@@ -66,3 +66,3 @@ "author": {

"http-errors": "^1.7.3",
"jsdoc-to-markdown": "^1.3.4",
"jsdoc-to-markdown": "^5.0.3",
"jshint": "^2.9.2",

@@ -69,0 +69,0 @@ "jshint-stylish": "^2.1.0",

@@ -14,66 +14,47 @@ # express-elasticsearch-logger [![Build Status](http://img.shields.io/travis/alexmingoia/express-elasticsearch-logger.svg?style=flat)](http://travis-ci.org/alexmingoia/express-elasticsearch-logger) [![Code Coverage](http://img.shields.io/coveralls/alexmingoia/express-elasticsearch-logger.svg?style=flat)](https://coveralls.io/r/alexmingoia/express-elasticsearch-logger) [![NPM version](http://img.shields.io/npm/v/express-elasticsearch-logger.svg?style=flat)](https://www.npmjs.org/package/express-elasticsearch-logger) [![Dependency Status](http://img.shields.io/david/alexmingoia/express-elasticsearch-logger.svg?style=flat)](https://david-dm.org/alexmingoia/express-elasticsearch-logger)

## API Reference
<a name="module_express-elasticsearch-logger"></a>
### Configuration
```javascript
const {requestHandler} = require('@rentspree/express-elasticsearch-logger')
app.use(
requestHandler({
host:'http://localhost:9200',
index: undefined, //use prefix and suffix instead fixing the index name
whitelist:{
request:['user'],
response:['my_response'],
},
censor:['password'],
includeDefault:true, // for whitelist and censor, include the predefined value or not
// below example will make index name 'service_log_q3'
indexPrefix :'service_log',
indexSuffixBy :'quarter', //available are monthly('m','M','month'), quarterly('q','Q','quarter') and bi-annually('h','H','halfYear')
indexSettings:{ // custom setting for index creating
index:{
refresh_interval:'20s'
}
}
})
)
```
## @rentspree/express-elasticsearch-logger
**Members**
* [express-elasticsearch-logger](#module_express-elasticsearch-logger)
* [logger.request](#module_express-elasticsearch-logger.request)
* [logger.requestHandler(config, [client])](#module_express-elasticsearch-logger.requestHandler)
* [logger.errorHandler(err, req, res, next)](#module_express-elasticsearch-logger.errorHandler)
* [.doc](#module_express-elasticsearch-logger.doc) : <code>Object</code>
* [.requestHandler(config, [client])](#module_express-elasticsearch-logger.requestHandler) ⇒ <code>elasticsearchLoggerMiddleware</code>
* [.errorHandler(err, req, res, next)](#module_express-elasticsearch-logger.errorHandler)
* [.skipLog(req, res, next)](#module_express-elasticsearch-logger.skipLog)
<a name="module_express-elasticsearch-logger.request"></a>
##logger.request
<a name="module_express-elasticsearch-logger.doc"></a>
### express-elasticsearch-logger.doc : <code>Object</code>
Document indexed with ElasticSearch. `request` and `response` properties
are included if they are whitelisted by `config.whitelist`.
**Kind**: static constant of [<code>express-elasticsearch-logger</code>](#module_express-elasticsearch-logger)
**Properties**
- env `String` - defaults to "development"
- error `Error` - error object passed to `next()`
- duration `Number` - milliseconds between request and response
- request `Object`
- request.httpVersion `String`
- request.headers `Object`
- request.method `String`
- request.originalUrl `String`
- request.route.path `String`
- request.path `String`
- request.query `Object`
- response `Object`
- response.statusCode `Number`
- os `Object`
- os.totalmem `Number` - OS total memory in bytes
- os.freemem `Number` - OS free memory in bytes
- os.loadavg `Array.<Number>` - Array of 5, 10, and 15 min averages
- process `Object`
- process.memoryUsage `Number` - process memory in bytes
- @timestamp `String` - ISO time of request
| Name | Type | Description |
| --- | --- | --- |
| env | <code>String</code> | defaults to "development" |
| [error] | <code>Error</code> | error object passed to `next()` |
| duration | <code>Number</code> | milliseconds between request and response |
| request | <code>Object</code> | requst object detail of express |
| request.httpVersion | <code>String</code> | |
| request.headers | <code>Object</code> | |
| request.method | <code>String</code> | |
| request.originalUrl | <code>String</code> | |
| request.route.path | <code>String</code> | |
| request.path | <code>String</code> | |
| request.query | <code>Object</code> | |
| response | <code>Object</code> | |
| response.statusCode | <code>Number</code> | |
| os | <code>Object</code> | |
| os.totalmem | <code>Number</code> | OS total memory in bytes |
| os.freemem | <code>Number</code> | OS free memory in bytes |
| os.loadavg | <code>Array.&lt;Number&gt;</code> | Array of 5, 10, and 15 min averages |
| process | <code>Object</code> | |
| process.memoryUsage | <code>Number</code> | process memory in bytes |
| @timestamp | <code>String</code> | ISO time of request |
**Type**: `Object`
<a name="module_express-elasticsearch-logger.requestHandler"></a>
##logger.requestHandler(config, [client])
### express-elasticsearch-logger.requestHandler(config, [client]) ⇒ <code>elasticsearchLoggerMiddleware</code>
Returns Express middleware configured according to given `options`.

@@ -85,20 +66,26 @@

**Params**
**Kind**: static method of [<code>express-elasticsearch-logger</code>](#module_express-elasticsearch-logger)
**Returns**: <code>elasticsearchLoggerMiddleware</code> - express middleware
- config `Object` - elasticsearch configuration
- \[index\] `String` - elasticsearch index (default: log_YEAR_MONTH)
- \[type\] `String` - elasticsearch request type (default: request)
- whitelist `Object`
- request `Array.<String>` - request properties to log
- response `Array.<String>` - response properties to log
- censor `Array.<String>` - list of request body properties to censor, this config will deep censor your data. for example, if you input `'data.deepdata'`, your property `deepdata` inside `data` object will be marked as **CENSORED**
- \[client\] `elasticsearch.Client` - elasticsearch client
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| config | <code>Object</code> | | elasticsearch configuration |
| [config.host] | <code>String</code> | <code>&quot;http://localhost:9200&quot;</code> | elasticsearch host to connect |
| [config.index] | <code>String</code> | <code>&quot;log_[YYYY]-h[1\|2]&quot;</code> | elasticsearch index (default: log_YYYY-h1 or log_YYYY-h2 as bi-annually) |
| config.whitelist | <code>Object</code> | | |
| [config.whitelist.request] | <code>Array.&lt;String&gt;</code> | <code>[&quot;userId&quot;,&quot;body&quot;,&quot;email&quot;,&quot;httpVersion&quot;,&quot;headers&quot;,&quot;method&quot;,&quot;originalUrl&quot;,&quot;path&quot;,&quot;query&quot;]</code> | request properties to log |
| [config.whitelist.response] | <code>Array.&lt;String&gt;</code> | <code>[&quot;statusCode&quot;, &quot;sent&quot;, &quot;took&quot;]</code> | response properties to log |
| [config.censor] | <code>Array.&lt;String&gt;</code> | <code>[&quot;password&quot;]</code> | list of request body properties to censor |
| [config.includeDefault] | <code>Boolean</code> | <code>true</code> | include default whitelist and censor the the given config |
| [config.indexPrefix] | <code>String</code> | <code>&quot;log&quot;</code> | elasticsearch index prefix for running index |
| [config.indexSuffixBy] | <code>String</code> | <code>&quot;halfYear&quot;</code> | elasticsearch index suffix for running index, one of m M month (Monthly) q Q quarter (Quarterly) h H halfYear (Bi-annually) |
| [config.indexSettings] | <code>Object</code> | <pre>{</br>index: {</br> number_of_shards: "3",</br> number_of_replicas: "2",</br> refresh_interval: "60s",</br> analysis: {</br> normalizer: {</br> lowercase: {</br> type: "custom",</br> char_filter: [],</br> filter: ["lowercase"],</br> },</br> },</br> },</br> },</br>}</pre> | settings in the mapping to be created |
| [client] | <code>elasticsearch.Client</code> | | @elastic/elasticsearch client to be injected |
**Returns**: `elasticsearchLoggerMiddleware` - express middleware
**Example**
```javascript
var express = require('express');
var logger = require('express-elasticsearch-logger');
const express = require('express');
const logger = require('express-elasticsearch-logger');
var app = express();
const app = express();

@@ -108,12 +95,13 @@ app

host: 'http://localhost:9200'
}))
})
.get('/', function (req, res, next) {
res.sendStatus(204);
})
.use(logger.errorHandler)
.listen(8888);
.use(logger.errorHandler);
```
* [.requestHandler(config, [client])](#module_express-elasticsearch-logger.requestHandler) ⇒ <code>elasticsearchLoggerMiddleware</code>
<a name="module_express-elasticsearch-logger.errorHandler"></a>
##logger.errorHandler(err, req, res, next)
### express-elasticsearch-logger.errorHandler(err, req, res, next)
Error handler middleware exposes error to `Response#end`

@@ -125,9 +113,27 @@

**Params**
**Kind**: static method of [<code>express-elasticsearch-logger</code>](#module_express-elasticsearch-logger)
- err `Error`
- req `express.Request`
- res `express.Response`
- next `express.Request.next`
| Param | Type |
| --- | --- |
| err | <code>Error</code> |
| req | <code>express.Request</code> |
| res | <code>express.Response</code> |
| next | <code>express.Request.next</code> |
<a name="module_express-elasticsearch-logger.skipLog"></a>
### express-elasticsearch-logger.skipLog(req, res, next)
This middleware will mark for skip log
use this middleware for endpoint that is called too often and did not need to log
like healthcheck
**Kind**: static method of [<code>express-elasticsearch-logger</code>](#module_express-elasticsearch-logger)
| Param | Type |
| --- | --- |
| req | <code>express.Request</code> |
| res | <code>express.Response</code> |
| next | <code>express.Request.next</code> |
## Contributing

@@ -134,0 +140,0 @@

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc