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
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);
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.