express-elasticsearch-logger
v4.0.0
Published
Log Express app requests to ElasticSearch.
Downloads
186
Maintainers
Readme
express-elasticsearch-logger
Log Express app requests to ElasticSearch.
Installation
Install using npm:
npm install express-elasticsearch-logger
API Reference
express-elasticsearch-logger
- express-elasticsearch-logger
- .doc : Object
- .requestHandler(config, [client]) ⇒ elasticsearchLoggerMiddleware
- .errorHandler(err, req, res, next)
- .skipLog(req, res, next)
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 | "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
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 to Response#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 healthcheck
Kind: 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
.
Support
If you have any problem or suggestion please open an issue here.