From 174110278bd235b7bf878fc4bd773078d633ce00 Mon Sep 17 00:00:00 2001 From: Rami Date: Mon, 27 May 2019 17:23:37 +0200 Subject: Add logger to the server - add logger with interceptor for requests Change-Id: Iecb6b6e51c28aadcc4eec3bb69dc38f4e0e346c5 Issue-ID: CCSDK-1295 Signed-off-by: Rami --- cds-ui/server/src/controllers/ping.controller.ts | 4 +++- .../datasources/blueprint.datasource-template.ts | 1 + .../resource-dictionary.datasource-template.ts | 1 + cds-ui/server/src/index.ts | 8 +++---- cds-ui/server/src/logger/logger.ts | 25 ++++++++++++++++++++++ cds-ui/server/src/sequence.ts | 3 +++ 6 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 cds-ui/server/src/logger/logger.ts (limited to 'cds-ui/server/src') diff --git a/cds-ui/server/src/controllers/ping.controller.ts b/cds-ui/server/src/controllers/ping.controller.ts index d3098bc69..660863a1c 100644 --- a/cds-ui/server/src/controllers/ping.controller.ts +++ b/cds-ui/server/src/controllers/ping.controller.ts @@ -19,8 +19,9 @@ limitations under the License. ============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() @@ -61,6 +62,7 @@ export class PingController { }, }) 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', diff --git a/cds-ui/server/src/datasources/blueprint.datasource-template.ts b/cds-ui/server/src/datasources/blueprint.datasource-template.ts index 3cbf09576..f5dad3a1e 100644 --- a/cds-ui/server/src/datasources/blueprint.datasource-template.ts +++ b/cds-ui/server/src/datasources/blueprint.datasource-template.ts @@ -5,6 +5,7 @@ export default { "connector": "rest", "baseURL": controllerApiConfig.url, "crud": false, + "debug": true, "operations": [{ "template": { "method": "GET", diff --git a/cds-ui/server/src/datasources/resource-dictionary.datasource-template.ts b/cds-ui/server/src/datasources/resource-dictionary.datasource-template.ts index b987e588c..1c459e0e7 100644 --- a/cds-ui/server/src/datasources/resource-dictionary.datasource-template.ts +++ b/cds-ui/server/src/datasources/resource-dictionary.datasource-template.ts @@ -5,6 +5,7 @@ export default { "connector": "rest", "baseURL": controllerApiConfig.url + "/dictionary", "crud": false, + "debug": true, "operations": [{ "template": { "method": "GET", diff --git a/cds-ui/server/src/index.ts b/cds-ui/server/src/index.ts index 04852494f..3afc0a7f4 100644 --- a/cds-ui/server/src/index.ts +++ b/cds-ui/server/src/index.ts @@ -19,9 +19,9 @@ limitations under the License. ============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 = {}) { @@ -30,8 +30,8 @@ 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; } diff --git a/cds-ui/server/src/logger/logger.ts b/cds-ui/server/src/logger/logger.ts new file mode 100644 index 000000000..6acbd396f --- /dev/null +++ b/cds-ui/server/src/logger/logger.ts @@ -0,0 +1,25 @@ +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 diff --git a/cds-ui/server/src/sequence.ts b/cds-ui/server/src/sequence.ts index b27093147..b282cbc62 100644 --- a/cds-ui/server/src/sequence.ts +++ b/cds-ui/server/src/sequence.ts @@ -30,6 +30,7 @@ import { Send, SequenceHandler, } from '@loopback/rest'; +import { logger } from './logger/logger'; const SequenceActions = RestBindings.SequenceActions; @@ -45,6 +46,8 @@ export class MySequence implements SequenceHandler { 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); -- cgit 1.2.3-korg