],
"dependencies": {
"@loopback/boot": "^1.0.8",
- "@loopback/context": "^1.4.0",
+ "@loopback/context": "^1.16.0",
"@loopback/core": "^1.1.3",
"@loopback/openapi-v3": "^1.1.5",
"@loopback/repository": "^1.1.1",
"loopback-connector-rest": "^3.4.1",
"multer": "^1.4.1",
"multiparty": "^4.2.1",
- "nodemon": "^1.18.10"
+ "nodemon": "^1.18.10",
+ "winston": "^3.2.1"
},
"devDependencies": {
- "@loopback/build": "^1.1.0",
+ "@loopback/build": "^1.5.5",
"@loopback/testlab": "^1.0.3",
"@loopback/tslint-config": "^2.0.3",
"@types/bluebird": "^3.5.26",
============LICENSE_END============================================
*/
-import { Request, RestBindings, get, ResponseObject } from '@loopback/rest';
import { inject } from '@loopback/context';
+import { get, Request, ResponseObject, RestBindings } from '@loopback/rest';
+import { logger } from '../logger/logger';
/**
* OpenAPI response for ping()
},
})
ping(): object {
+ logger.warn('Calling ping from %s', this.req.url)
// Reply with a greeting, the current time, the url, and request headers
return {
greeting: 'Hello from LoopBack',
"connector": "rest",
"baseURL": controllerApiConfig.url,
"crud": false,
+ "debug": true,
"operations": [{
"template": {
"method": "GET",
"connector": "rest",
"baseURL": controllerApiConfig.url + "/dictionary",
"crud": false,
+ "debug": true,
"operations": [{
"template": {
"method": "GET",
============LICENSE_END============================================
*/
-import { CdsUiServerApplication } from './application';
import { ApplicationConfig } from '@loopback/core';
-
+import { CdsUiServerApplication } from './application';
+import { logger } from './logger/logger';
export { CdsUiServerApplication };
export async function main(options: ApplicationConfig = {}) {
await app.start();
const url = app.restServer.url;
- console.log(`Server is running at ${url}`);
- console.log(`Try ${url}/ping`);
+ logger.info(`Server is running at ${url}`);
+ logger.info(`Try ${url}/ping`);
return app;
}
--- /dev/null
+import { createLogger, format, transports } from 'winston';
+
+const { combine, timestamp, printf, splat, errors, colorize } = format;
+const logFormat = printf(({ level, message, timestamp }) => {
+ return `${timestamp} ${level} ${message}`
+});
+const logger = createLogger({
+ level: 'info',
+ format: combine(
+ splat(),
+ timestamp(),
+ colorize(),
+ errors({ stack: true }),
+ logFormat
+ ),
+ transports: [
+ new transports.Console()
+ ]
+});
+
+if (process.env.NODE_ENV === 'production') {
+ logger.add(new transports.File({ filename: '/var/log/ONAP/CDS-UI/server/server.log'}))
+}
+
+export { logger };
\ No newline at end of file
Send,
SequenceHandler,
} from '@loopback/rest';
+import { logger } from './logger/logger';
const SequenceActions = RestBindings.SequenceActions;
async handle(context: RequestContext) {
try {
const { request, response } = context;
+ logger.info("Incoming request from %s %s and with header %s query %s params %s",
+ request.method, request.url, JSON.stringify(request.headers), JSON.stringify(request.query), JSON.stringify(request.params))
const route = this.findRoute(request);
const args = await this.parseParams(request, route);
const result = await this.invoke(route, args);