1.2.2 • Published 9 years ago
api-common v1.2.2
API Common
Features
- Logger class that logs to console in dev mode and to File in non development mode
- Middlewares for
- Request response logging
- Error handler for uncaught exceptions, 400 bad request and explicitly set 500.
- Correlation ID setting middleware
- JWT unpacking
- Error Formatters
const Fmt = require('api-common').Formatter; const err = new Error('Any error you want to log'); const reporter = 'Place from which this log message is emitted'; const appName = 'sample-app'; Fmt.buildLogMessage(req, res, err, appName, reporter); - Ping and app info endpoints
Steps
Install the package
npm i api-common --saveUsing the logger
'use strict'; // Get the logger instance configured with provided config const logger = require('api-common').getLogger('fullPathToLogFile'); // export it so that your rest of the application can simply consume // this preconfigured logger. module.exports = logger;Using the middleware
'use strict'; const SwaggerExpressMiddleware = require('swagger-express-mw'); const SwaggerUIMiddleware = require('swagger-ui-middleware'); // A very good middleware that works out of the box, please use it. const ResponseTimer = require('response-time'); // STEP 1: Load the appconfig.json that has the logging config in it. const appConfig = require('./../config/appconfig.json'); // STEP 2: Initialize the middleware const CustomMiddleware = require('api-common').Middleware.init(appConfig.appName); /* The app name can be provided any way you can. */ const port = process.env.PORT || appConfig.port; const config = { appRoot: "./src" // required config }; let app = require('express')(); // STEP: 3 Start wiring up the middleware [Order is important] app.use(CustomMiddleware.CorrelationIdMiddleware); app.use(CustomMiddleware.RequestResponseMiddleware); app.use(ResponseTimer()); SwaggerUIMiddleware.hostUI(app,{ path: appConfig.swaggerUiPath, overrides: "./src/swagger" }); SwaggerExpressMiddleware.create(config, function (err, swaggerExpress) { if (err) { throw err; } // install middleware swaggerExpress.register(app); // Wire error handlers after this line //STEP:4 ALWAYS put this middleware in the end. It ends request pipe. app.use(CustomMiddleware.ErrorLoggingMiddleware); });
module.exports = app; // for testing
app.listen(port);
```Using the logger from within Sequelize model initializers
'use strict'; const path = require('path'); const dbconf = require('../../../config/dbconfig'); // here we use the logger wrapper from #2 const logger = require('../helpers/Logger'); let Sequelize = require('sequelize'); dbconf.CONNECTION_CONFIG.logging = function(sqlInfo){ logger.debug({ sql: sqlInfo ,from: path.basename(__filename) }); };Using the ping and app info endpoints
Pass in the express app and the configuration you want to show in the app info endpoint.
require('api-common').StatusInformation.initializeStatusEndpoints(app, { example: 'configuration' });Important note when using within Swagger projects.
in
./config/default.yamlif it looks like# pipe for all swagger-node controllers swagger_controllers: - onError: json_error_handler - cors - swagger_security - _swagger_validate - express_compatibility - _routerMake sure you remove the
onErrorkey. It interferes with our error handler.# pipe for all swagger-node controllers swagger_controllers: - cors - swagger_security - _swagger_validate - express_compatibility - _router
1.2.2
9 years ago
1.2.0
9 years ago
1.1.6
9 years ago
1.1.4
9 years ago
1.1.3
10 years ago
1.1.2
10 years ago
1.1.1
10 years ago
1.1.0
10 years ago
1.0.16
10 years ago
1.0.15
10 years ago
1.0.13
10 years ago
1.0.12
10 years ago
1.0.11
10 years ago
1.0.10
10 years ago
1.0.9
10 years ago
1.0.8
10 years ago
1.0.7
10 years ago
1.0.6
10 years ago
1.0.5
10 years ago
1.0.4
10 years ago
1.0.3
10 years ago
1.0.2
10 years ago
1.0.1
10 years ago
1.0.0
10 years ago