Log Express app requests to ElasticSearch.
Installation
Install using npm:npm install express-elasticsearch-logger
API Reference
express-elasticsearch-logger
* [.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)
express-elasticsearch-logger.doc : Object
Document indexed with ElasticSearch. request
and response
properties
are included if they are whitelisted by config.whitelist
.Kind: static constant of
express-elasticsearch-logger
Properties
| Name | Type | Description | | --- | --- | --- | | env |
String
| defaults to "development" |
| error | Error
| error object passed to next()
|
| duration | Number
| milliseconds between request and response |
| request | Object
| requst object detail of express |
| 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 |express-elasticsearch-logger.requestHandler(config, client) ⇒ elasticsearchLoggerMiddleware
Returns Express middleware configured according to given options
.Middleware must be mounted before all other middleware to ensure accurate capture of requests. The error handler must be mounted before other error handler middleware.
Kind: static method of
express-elasticsearch-logger
Returns:
elasticsearchLoggerMiddleware
- express middleware| Param | Type | Default | Description | | --- | --- | --- | --- | | config |
Object
| | elasticsearch configuration |
| config.host | String
| "http://localhost:9200"
| elasticsearch host to connect |
| config.index | String
| "logYYYY-h1\|2"
| elasticsearch index (default: logYYYY-h1 or logYYYY-h2 as bi-annually) |
| config.whitelist | Object
| | |
| config.whitelist.request | Array.<String>
| "userId","body","email","httpVersion","headers","method","originalUrl","path","query"
| request properties to log |
| config.whitelist.response | Array.<String>
| "statusCode", "sent", "took"
| response properties to log |
| config.censor | Array.<String>
| "password"
| list of request body properties to censor |
| config.includeDefault | Boolean
| true
| include default whitelist and censor the the given config |
| config.indexPrefix | String
| "log"
| elasticsearch index prefix for running index |
| config.indexSuffixBy | String
| "halfYear"
| elasticsearch index suffix for running index, one of m M month (Monthly) q Q quarter (Quarterly) h H halfYear (Bi-annually) |
| config.indexSettings | Object
| {| settings in the mapping to be created | | client |
index: {
numberofshards: "3",
numberofreplicas: "2",
refreshinterval: "60s",
analysis: {
normalizer: {
lowercase: {
type: "custom",
charfilter: ,
filter: "lowercase",
},
},
},
},
}
elasticsearch.Client
| | @elastic/elasticsearch client to be injected |Example
const express = require('express');
const logger = require('express-elasticsearch-logger');
const app = express();
app
.use(logger.requestHandler({
host: 'http://localhost:9200'
})
.get('/', function (req, res, next) {
res.sendStatus(204);
})
.use(logger.errorHandler);
- .requestHandler(config, client) ⇒
elasticsearchLoggerMiddleware
express-elasticsearch-logger.errorHandler(err, req, res, next)
Error handler middleware exposes error toResponse#end
This middleware is used in combination with requestHandler to capture request errors.
Kind: static method of
express-elasticsearch-logger
| Param | Type | | --- | --- | | err |
Error
|
| req | express.Request
|
| res | express.Response
|
| next | express.Request.next
| 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 healthcheckKind: static method of
express-elasticsearch-logger
| Param | Type | | --- | --- | | req |
express.Request
|
| res | express.Response
|
| next | express.Request.next
| Contributing
Please submit all issues and pull requests to the alexmingoia/express-elasticsearch-logger repository!Tests
Run tests usingnpm test
.