Selaa lähdekoodia

add server logs

ruiyi.jiang 4 vuotta sitten
vanhempi
commit
aab4125a73

+ 10 - 3
server/src/app.module.ts

@@ -1,5 +1,6 @@
-import { Module } from '@nestjs/common';
+import { Module, MiddlewareConsumer, RequestMethod } from '@nestjs/common';
 import { APP_INTERCEPTOR } from '@nestjs/core';
+import { ServeStaticModule } from '@nestjs/serve-static';
 import { AppController } from './app.controller';
 import { AppService } from './app.service';
 import { ErrorInterceptor, TransformResInterceptor } from './interceptors';
@@ -8,10 +9,10 @@ import { CollectionsModule } from './collections/collections.module';
 import { UsersService } from './users/users.service';
 import { UsersModule } from './users/users.module';
 import { AuthModule } from './auth/auth.module';
-import { ServeStaticModule } from '@nestjs/serve-static';
 import { join } from 'path';
 import { PartitionsModule } from './partitions/partitions.module';
 import { SchemaModule } from './schema/schema.module';
+import { LoggerMiddleware } from './middlewares/logger';
 
 @Module({
   imports: [
@@ -41,4 +42,10 @@ import { SchemaModule } from './schema/schema.module';
     UsersService,
   ],
 })
-export class AppModule {}
+export class AppModule {
+  configure(consumer: MiddlewareConsumer) {
+    consumer
+      .apply(LoggerMiddleware)
+      .forRoutes({ path: '*', method: RequestMethod.ALL });
+  }
+}

+ 2 - 2
server/src/auth/auth.service.ts

@@ -1,4 +1,4 @@
-import { Injectable } from '@nestjs/common';
+import { Logger, Injectable } from '@nestjs/common';
 import { UsersService } from '../users/users.service';
 import { JwtService } from '@nestjs/jwt';
 
@@ -11,7 +11,7 @@ export class AuthService {
 
   async validateUser(username: string, pass: string): Promise<any> {
     const user = await this.usersService.findOne(username);
-    console.log(user);
+    Logger.log(user);
     if (user && user.password === pass) {
       const { password, ...result } = user;
       return result;

+ 2 - 1
server/src/interceptors/index.ts

@@ -1,4 +1,5 @@
 import {
+  Logger,
   Injectable,
   NestInterceptor,
   ExecutionContext,
@@ -40,7 +41,7 @@ export class ErrorInterceptor implements NestInterceptor {
   intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
     return next.handle().pipe(
       catchError((err) => {
-        console.error('---error interceptor---', err.response);
+        Logger.error('---error interceptor---', err);
         if (err.response) {
           return throwError(err);
         }

+ 6 - 2
server/src/main.ts

@@ -1,8 +1,11 @@
 import { NestFactory } from '@nestjs/core';
-import { AppModule } from './app.module';
+import { Logger } from '@nestjs/common';
+
 import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';
+import { AppModule } from './app.module';
 
 async function bootstrap() {
+  const port = 3000;
   const app = await NestFactory.create(AppModule, {
     cors: true,
   });
@@ -15,6 +18,7 @@ async function bootstrap() {
   const document = SwaggerModule.createDocument(app, config);
   SwaggerModule.setup('api', app, document);
 
-  await app.listen(3000);
+  await app.listen(port);
+  Logger.log(`Milvus insight API server is running on port ${port}`);
 }
 bootstrap();

+ 12 - 5
server/src/middlewares/logger.ts

@@ -1,14 +1,21 @@
 import { Injectable, NestMiddleware, Logger } from '@nestjs/common';
-import { Request, Response } from 'express';
+import { Request, Response, NextFunction } from 'express';
 
 @Injectable()
 export class LoggerMiddleware implements NestMiddleware {
   // eslint-disable-next-line @typescript-eslint/ban-types
-  use(req: Request, res: Response, next: Function) {
-    const { method = '', url = '' } = req.body || {};
-    const { path = '' } = req.route || {};
+  use(req: Request, res: Response, next: NextFunction) {
+    const { ip, method, originalUrl } = req;
+    const userAgent = res.get('user-agent') || '';
 
-    Logger.log(`${method} ${url}`, `API ${path}`);
+    res.on('finish', () => {
+      const { statusCode } = res;
+      const contentLength = res.get('content-length');
+
+      Logger.log(
+        `${method} ${originalUrl} ${statusCode} ${contentLength} - ${userAgent} ${ip}`,
+      );
+    });
     next();
   }
 }

+ 20 - 0
server/src/utils/ConsoleLogger.ts

@@ -0,0 +1,20 @@
+import { LoggerService } from '@nestjs/common';
+import * as chalk from 'chalk';
+
+export class ConsoleLogger implements LoggerService {
+  log(...messages: any[]) {
+    // tslint:disable-next-line:no-console
+    console.log(chalk.green(`milvus-insight: [${ConsoleLogger.time()}]`), ...messages);
+  }
+  error(...messages: any[]) {
+    // tslint:disable-next-line:no-console
+    console.error(chalk.red(`error: [${ConsoleLogger.time()}]`), ...messages);
+  }
+  warn(...messages: any[]) {
+    // tslint:disable-next-line:no-console
+    console.warn(chalk.yellow(`warn: [${ConsoleLogger.time()}]`), ...messages);
+  }
+  static time() {
+    return new Date().toISOString();
+  }
+}