Log Express app requests to ElasticSearch.
npm install express-elasticsearch-logger> Log Express app requests to ElasticSearch.
Install using npm:
``sh`
npm install express-elasticsearch-logger
* express-elasticsearch-logger
* .doc : Object
* [.requestHandler(config, [client])](#module_express-elasticsearch-logger.requestHandler) ⇒ elasticsearchLoggerMiddleware
* .errorHandler(err, req, res, next)
* .skipLog(req, res, next)
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 |$3
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 | "log_[YYYY]-h[1\|2]" | elasticsearch index (default: log_YYYY-h1 or log_YYYY-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 |
{index: { number_of_shards: "3", number_of_replicas: "2", refresh_interval: "60s", analysis: { normalizer: { lowercase: { type: "custom", char_filter: [], filter: ["lowercase"], }, }, }, },} | settings in the mapping to be created |
| [client] | elasticsearch.Client | | @elastic/elasticsearch client to be injected |Example
`javascript
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])](#module_express-elasticsearch-logger.requestHandler) ⇒ elasticsearchLoggerMiddleware
$3
Error handler middleware exposes error to Response#endThis 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 |
$3
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 using
npm test`.If you have any problem or suggestion please open an issue here.