An ExpressJS middleware which saves the HTTP properties, exceptions and logs to logbee.net.
npm install @logbee/express- Require/import the logbee library
const { logbee } = require('@logbee/express');or
import { logbee } from '@logbee/express';- Register the logbee middleware
const app = express();
app.use(logbee.middleware({
organizationId: '_OrganizationId_',
applicationId: '_ApplicationId_',
logbeeApiUri: 'https://api.logbee.net' // or the on-premises logbee endpoint
}));
app.get("/", (req, res) => {
res.send('Hello World!');
});
// register the exception middleware after the routes declaration
app.use(logbee.exceptionMiddleware());
app.listen(3000, () => {
console.log('Server is running');
});logbee creates a logger object that can be accessed using the logbee.logger(req) function.
Log messages can be created using one of the following logger methods: trace, debug, info, warn, error, critical
app.get("/", (req, res) => {
const logger = logbee.logger(req);
logger?.info('An info message', 'with', 'multiple', 'args', { 'foo': 'bar' });
res.send('Hello World!');
});Files can be logged using the logger.logAsFile(content, fileName) method.
app.get("/", (req, res) => {
const logger = logbee.logger(req);
logger?.logAsFile(
'<?xml version="1.0" encoding="UTF-8"?>\
<note>\
<to>Tove</to>\
<from>Jani</from>\
<heading>Reminder</heading>\
<body>Don\'t forget me this weekend!</body>\
</note>', 'reminder.xml');
res.send('Hello World!');
});logbee.middleware accepts the following configuration options:
The logbee endpoint where the logs will be saved. Default: https://api.logbee.net.
Determines if the request.body should be logged or not. Default: true.
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(logbee.middleware({
shouldLogRequestBody: function(req) {
return true;
}
}));Determines if the response body should be logged or not. By default, all the application/json responses are logged.
app.use(logbee.middleware({
shouldLogResponseBody: function(req, res) {
const contentType = res.getHeader('content-type')?.toString()?.toLowerCase() ?? "";
return ['application/json'].some(item => {
return contentType.indexOf(item) > -1;
});
}
}));Determines if the current request should be logged or not. Default: true.
app.use(logbee.middleware({
shouldLogRequest: function(req, res) {
return true;
}
}));
|
