https://github.com/bufferapp/buffer-js-logger
Node.js logging for Buffer applications
https://github.com/bufferapp/buffer-js-logger
javascript middleware
Last synced: 11 months ago
JSON representation
Node.js logging for Buffer applications
- Host: GitHub
- URL: https://github.com/bufferapp/buffer-js-logger
- Owner: bufferapp
- Created: 2016-08-04T19:25:30.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2020-03-02T07:39:03.000Z (almost 6 years ago)
- Last Synced: 2025-02-01T14:04:53.166Z (12 months ago)
- Topics: javascript, middleware
- Language: JavaScript
- Size: 32.2 KB
- Stars: 1
- Watchers: 7
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
# @bufferapp/logger
[](https://www.npmjs.com/package/@bufferapp/logger)
[](https://travis-ci.org/bufferapp/buffer-js-logger)
Provides standard middleware and functions for logging to stdout. In our production cluster these
logs will be indexed in our application-logs Elasticsearch cluster as well as get backed up in s3.
## Install
```
npm install @bufferapp/logger -SE
```
## Usage
To log something, use the logger's `info` method which takes 2 arguments, an object for
structured logging and a string for a message:
```js
logger.info(, );
```
To use as a normal logger, require and create the logger:
```js
const logger = require('@bufferapp/logger')({ name: 'Some-Worker' });
function run(data) {
// log something one-off...
logger.info({
metadata: {
service: data.service,
},
stats: {
processingTime: data.time,
count: data.count,
}
}, `Successfully processed ${data.count} items`);
}
```
### Middleware
```js
const logMiddleware = require('@bufferapp/logger/middleware');
app = express();
app.use(logMiddleware({ name: 'My-App' }));
// ...other middleware and route handlers
```
#### Metadata
Add application metadata to your logs using the `getMetadata` option.
```js
app.use(logMiddleware({
getMetadata: (req) => {
return {
userId: req.session.userId,
profileId: req.query.profileId,
};
},
}));
```
#### Stats
Add application stats to your logs. You receive the request object and the response time in
milliseconds. For example, you can add tracking metrics to a `req.trackingData` attribute and
then handle them in your `getStats` method:
```js
app.use(logMiddleware({
name: 'My-App',
getStats: (req, responseTime) => {
return {
responseTime,
processingTime: responseTime - req.trackingData.externalRequestTime,
imagesScanned: req.trackingData.imagesScanned,
};
},
}));
// In your request handler
app.get('/get-images', (req, res) => {
req.trackingData = {};
getImages(req.url, (images) => {
req.trackingData.imagesScanned = images.length;
res.json(images);
});
});
```
#### Params
Add logging of specific query string params using the `getMetadata` option.
```js
app.use(logMiddleware({
params: ['profile_id', 'utm_campaign'],
}));
```