README
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)
- .doc :
Object
express-elasticsearch-logger.doc : 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 |
elasticsearchLoggerMiddleware
express-elasticsearch-logger.requestHandler(config, [client]) ⇒ 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.