From a80bfcf0acfdbacf9846d6ee3856a3cde25a1e94 Mon Sep 17 00:00:00 2001 From: ecaminero Date: Wed, 2 Oct 2019 17:19:49 -0300 Subject: [PATCH] Adding service Logs --- src/app.module.ts | 2 +- .../__test__/hello.controller.spec.ts | 2 +- .../hello.controller.ts | 8 +++++ src/constants.ts | 3 +- src/domain/services/logger.service.ts | 35 ++++++++++++++----- 5 files changed, 39 insertions(+), 11 deletions(-) rename src/application/{controller => controllers}/hello.controller.ts (61%) diff --git a/src/app.module.ts b/src/app.module.ts index 1acd6ef..cab6499 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -1,5 +1,5 @@ import { Module , NestModule, MiddlewareConsumer } from '@nestjs/common'; -import { HelloController } from './application/controller/hello.controller'; +import { HelloController } from './application/controllers/hello.controller'; import { UserService } from './domain/services/user.service'; import { DatabaseModule } from './infrastructure/database/database.module'; import { modelProviders } from './infrastructure/models'; diff --git a/src/application/__test__/hello.controller.spec.ts b/src/application/__test__/hello.controller.spec.ts index dc0df7e..e5e4b76 100644 --- a/src/application/__test__/hello.controller.spec.ts +++ b/src/application/__test__/hello.controller.spec.ts @@ -3,7 +3,7 @@ import { Test } from '@nestjs/testing'; import { Model } from 'mongoose'; import { has, cloneDeep } from 'lodash'; import { TestingModule } from '@nestjs/testing/testing-module'; -import { HelloController } from '@application/controller/hello.controller'; +import { HelloController } from '@application/controllers/hello.controller'; import { UserService } from '@domain/services/user.service'; import { UserModel } from '@infrastructure/models/User.model'; import { User } from '@domain/entities/User'; diff --git a/src/application/controller/hello.controller.ts b/src/application/controllers/hello.controller.ts similarity index 61% rename from src/application/controller/hello.controller.ts rename to src/application/controllers/hello.controller.ts index 068071d..fbcdff2 100644 --- a/src/application/controller/hello.controller.ts +++ b/src/application/controllers/hello.controller.ts @@ -1,3 +1,4 @@ +import { LoggerService, Context } from '@domain/services/logger.service'; import { Controller, Get, Post, Body, UseInterceptors } from '@nestjs/common'; import { UserService } from '@domain/services/user.service'; import { CreateUserDto } from '@application/dto/create-user.dto'; @@ -8,20 +9,27 @@ import { LoggingInterceptor } from '@application/interceptors/logging.intercepto @Controller() @UseInterceptors(LoggingInterceptor) export class HelloController { + private Log: LoggerService = new LoggerService('createOperation'); constructor(private readonly userService: UserService) {} @Get('/hello') get(): string { + const context: Context = { module: 'HelloController', method: 'get' }; + this.Log.logger('Hello World!', context); return 'Hello World!'; } @Get('/all') async getAll(): Promise { + const context: Context = { module: 'HelloController', method: 'getAll' }; + this.Log.logger('Hello World!', context); return await this.userService.find(); } @Post('/') async create(@Body() user: CreateUserDto): Promise { + const context: Context = { module: 'HelloController', method: 'create' }; + this.Log.logger(user, context); return await this.userService.create(user); } } diff --git a/src/constants.ts b/src/constants.ts index 0b5e27b..fadae8e 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -4,6 +4,7 @@ dotenv.config(); export const DB_PROVIDER = 'DbConnectionToken'; export const USER_MODEL_PROVIDER = 'UserModelProvider'; export const SERVICE = 'DB_MONGO_SERVICE'; -export const APP_NAME = process.env.APP_NAME || 'mongo.database.service'; +export const APP_NAME = process.env.APP_NAME || 'clean.architecture'; export const DATABASE_SERVICE = process.env.DATABASE_SERVICE || 'DATABASE_SERVICE'; export const APP_PORT = process.env.PORT || 4000; +export const APP_HOST = process.env.APP_HOST || '0.0.0.0'; \ No newline at end of file diff --git a/src/domain/services/logger.service.ts b/src/domain/services/logger.service.ts index f0688d7..b26b587 100644 --- a/src/domain/services/logger.service.ts +++ b/src/domain/services/logger.service.ts @@ -1,9 +1,28 @@ -import { LoggerService } from '@nestjs/common'; - -export class MyLogger implements LoggerService { - log(message: string) {} - error(message: string, trace: string) {} - warn(message: string) {} - debug(message: string) {} - verbose(message: string) {} +import { Logger } from '@nestjs/common'; +import { APP_HOST } from '@constants'; + +export class Context { + module: string; + method: string; +} + +// tslint:disable-next-line: max-classes-per-file +export class LoggerService extends Logger { + logger(message: any, context?: Context) { + const standard = {server: APP_HOST, type: 'INFO', time: Date.now()}; + const data = {...standard, ...context, message}; + super.log(data); + } + + err(message: any, context: Context) { + const standard = {server: APP_HOST, type: 'ERROR', time: Date.now()}; + const data = {...standard, ...context, message}; + super.error(data); + } + + warning(message: any, context: Context) { + const standard = {server: APP_HOST, type: 'WARNING', time: Date.now()}; + const data = {...standard, ...context, message}; + super.warn(data); + } }