@viplance/nestjs-logger 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -3,34 +3,33 @@
3
3
 
4
4
  1. Install the package npm i @viplance/nestjs-logger<br />
5
5
  2. Import the module in app.module.ts<br />
6
- &ensp;import { LogModule } from '@viplance/nestjs-logger';<br />
7
- <br />
8
- &ensp;@Module({<br />
9
- &ensp;&ensp;imports: [<br />
10
- &ensp;&ensp;&ensp;...,<br />
11
- &ensp;&ensp;&ensp;LogModule,<br />
12
- &ensp;&ensp;]<br />
13
- &ensp;})<br />
14
- &ensp;import { LogModule } from '@viplance/nestjs-logger';<br />
15
- <br />
16
- &ensp;// use the memory to store logs
17
- &ensp;await LogModule.connect(app, {<br />
18
- &ensp;&ensp;path: '/logs',<br />
19
- &ensp;&ensp;});<br /><br />
20
- &ensp;// use the database to store logs
21
- &ensp;await LogModule.connect(app, {<br />
22
- &ensp;&ensp;path: '/logs',<br />
23
- &ensp;&ensp;&ensp;database: {<br />
24
- &ensp;&ensp;&ensp;&ensp;type: 'mongodb',<br />
25
- &ensp;&ensp;&ensp;&ensp;host: 'localhost',<br />
26
- &ensp;&ensp;&ensp;&ensp;port: 27017,<br />
27
- &ensp;&ensp;&ensp;&ensp;collection: 'logs'<br />
28
- &ensp;&ensp;&ensp;}<br />
29
- &ensp;&ensp;});<br />
30
- 3. Use the LogService in case of custom logs to debug the application.
6
+ import { LogModule } from '@viplance/nestjs-logger';<br />
7
+ @Module({<br />
8
+ imports: [<br />
9
+ ...,<br />
10
+ LogModule,<br />
11
+ ]<br />
12
+ })<br />
31
13
  <br />
14
+ 3. Connect the module in main.ts
15
+ // use the memory to store logs
16
+ await LogModule.connect(app, {<br />
17
+ path: '/logs',<br />
18
+ });<br /><br />
19
+ // use the database to store logs
20
+ await LogModule.connect(app, {<br />
21
+ path: '/logs',<br />
22
+ database: {<br />
23
+ type: 'mongodb',<br />
24
+ host: 'localhost',<br />
25
+ port: 27017,<br />
26
+ collection: 'logs'<br />
27
+ }<br />
28
+ });<br />
29
+
30
+ * `path` and `database` options are optional<br />
31
+ 4. Use the LogService in case of custom logs to debug the application.
32
32
  <br />
33
- `path` and `database` options are optional<br />
34
33
  The logs could be available at your_application_url/<path><br />
35
34
  By default the logs will be stored in memory and deleted when the application stops.<br />
36
35
  <br />
@@ -4,6 +4,8 @@ export declare function createLogEntity(name: string): EntitySchema<{
4
4
  type: unknown;
5
5
  message: unknown;
6
6
  count: unknown;
7
+ context: unknown;
8
+ trace: unknown;
7
9
  createdAt: unknown;
8
10
  updatedAt: unknown;
9
11
  }>;
@@ -14,6 +14,8 @@ function createLogEntity(name) {
14
14
  type: { type: String },
15
15
  message: { type: String },
16
16
  count: { type: Number, default: 1 },
17
+ context: { type: String, nullable: true },
18
+ trace: { type: String, nullable: true },
17
19
  createdAt: { type: Date },
18
20
  updatedAt: { type: Date },
19
21
  },
@@ -1 +1 @@
1
- {"version":3,"file":"log.entity.js","sourceRoot":"","sources":["../../src/entities/log.entity.ts"],"names":[],"mappings":";;AAEA,0CAgBC;AAlBD,qCAAuC;AAEvC,SAAgB,eAAe,CAAC,IAAY;IAC1C,OAAO,IAAI,sBAAY,CAAC;QACtB,IAAI;QACJ,OAAO,EAAE;YACP,GAAG,EAAE;gBACH,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,IAAI;aACd;YACD,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACtB,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACzB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE;YACnC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;YACzB,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;SAC1B;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"log.entity.js","sourceRoot":"","sources":["../../src/entities/log.entity.ts"],"names":[],"mappings":";;AAEA,0CAkBC;AApBD,qCAA4C;AAE5C,SAAgB,eAAe,CAAC,IAAY;IAC1C,OAAO,IAAI,sBAAY,CAAC;QACtB,IAAI;QACJ,OAAO,EAAE;YACP,GAAG,EAAE;gBACH,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,IAAI;aACd;YACD,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACtB,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACzB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE;YACnC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YACzC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YACvC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;YACzB,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;SAC1B;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { ExceptionFilter, ArgumentsHost, HttpException } from "@nestjs/common";
2
+ export declare class HttpExceptionFilter implements ExceptionFilter {
3
+ catch(exception: HttpException, host: ArgumentsHost): void;
4
+ }
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.HttpExceptionFilter = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ // import { Request, Response } from "express";
12
+ let HttpExceptionFilter = class HttpExceptionFilter {
13
+ catch(exception, host) {
14
+ const ctx = host.switchToHttp();
15
+ const status = exception.getStatus();
16
+ console.log("CTX", ctx);
17
+ console.log("status", status);
18
+ console.log("Exception", exception);
19
+ // const response = ctx.getResponse<Response>();
20
+ // const request = ctx.getRequest<Request>();
21
+ // const status = exception.getStatus();
22
+ // response.status(status).json({
23
+ // statusCode: status,
24
+ // timestamp: new Date().toISOString(),
25
+ // path: request.url,
26
+ // message: exception.message,
27
+ // });
28
+ }
29
+ };
30
+ exports.HttpExceptionFilter = HttpExceptionFilter;
31
+ exports.HttpExceptionFilter = HttpExceptionFilter = __decorate([
32
+ (0, common_1.Catch)(common_1.HttpException)
33
+ ], HttpExceptionFilter);
34
+ //# sourceMappingURL=exception.filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exception.filter.js","sourceRoot":"","sources":["../src/exception.filter.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAKwB;AACxB,+CAA+C;AAGxC,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAC9B,KAAK,CAAC,SAAwB,EAAE,IAAmB;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACpC,gDAAgD;QAChD,6CAA6C;QAC7C,wCAAwC;QAExC,iCAAiC;QACjC,wBAAwB;QACxB,yCAAyC;QACzC,uBAAuB;QACvB,gCAAgC;QAChC,MAAM;IACR,CAAC;CACF,CAAA;AAlBY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,cAAK,EAAC,sBAAa,CAAC;GACR,mBAAmB,CAkB/B"}
@@ -1,8 +1,9 @@
1
- import type { CallHandler, ExecutionContext, NestInterceptor } from "@nestjs/common";
1
+ import type { CallHandler, NestInterceptor } from "@nestjs/common";
2
2
  import { Observable } from "rxjs";
3
3
  import { LogService } from "./services/log.service";
4
+ import { ExecutionContextHost } from "@nestjs/core/helpers/execution-context-host";
4
5
  export declare class LogInterceptor implements NestInterceptor {
5
6
  private readonly logService;
6
7
  constructor(logService: LogService);
7
- intercept(context: ExecutionContext, next: CallHandler): Observable<any>;
8
+ intercept(context: ExecutionContextHost, next: CallHandler): Observable<any>;
8
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"log.interceptor.js","sourceRoot":"","sources":["../src/log.interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAKA,2CAAoD;AACpD,+BAAuC;AACvC,wDAAoD;AAG7C,IAAM,cAAc,GAApB,MAAM,cAAc;IACzB,YAAiD,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAE3E,SAAS,CAAC,OAAyB,EAAE,IAAiB;QACpD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CACvB,IAAA,UAAG,EAAC;YACF,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;;gBACf,gBAAgB;gBAChB,MAAA,IAAI,CAAC,UAAU,0CAAE,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC9D,CAAC;YACD,QAAQ,EAAE,GAAG,EAAE;gBACb,iBAAiB;YACnB,CAAC;SACF,CAAC,CACH,CAAC;IACJ,CAAC;CACF,CAAA;AAhBY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;IAEE,WAAA,IAAA,eAAM,EAAC,wBAAU,CAAC,CAAA;qCAA8B,wBAAU;GAD5D,cAAc,CAgB1B"}
1
+ {"version":3,"file":"log.interceptor.js","sourceRoot":"","sources":["../src/log.interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,2CAAoD;AACpD,+BAAuC;AACvC,wDAAoD;AAI7C,IAAM,cAAc,GAApB,MAAM,cAAc;IACzB,YAAiD,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAE3E,SAAS,CAAC,OAA6B,EAAE,IAAiB;QACxD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CACvB,IAAA,UAAG,EAAC;YACF,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;;gBACf,gBAAgB;gBAChB,MAAA,IAAI,CAAC,UAAU,0CAAE,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC9D,CAAC;YACD,QAAQ,EAAE,GAAG,EAAE;gBACb,iBAAiB;YACnB,CAAC;SACF,CAAC,CACH,CAAC;IACJ,CAAC;CACF,CAAA;AAhBY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;IAEE,WAAA,IAAA,eAAM,EAAC,wBAAU,CAAC,CAAA;qCAA8B,wBAAU;GAD5D,cAAc,CAgB1B"}
@@ -1,19 +1,21 @@
1
- import { ExecutionContext, LoggerService } from "@nestjs/common";
1
+ import { LoggerService } from "@nestjs/common";
2
2
  import { MemoryDbService } from "./memory-db.service";
3
3
  import { LogModuleOptions } from "../types";
4
4
  import { DataSource, EntitySchema } from "typeorm";
5
+ import { ExecutionContextHost } from "@nestjs/core/helpers/execution-context-host";
5
6
  export declare class LogService implements LoggerService {
6
7
  private readonly memoryDbService;
7
8
  static connection: DataSource;
8
9
  static Log: EntitySchema;
9
10
  constructor(memoryDbService: MemoryDbService);
10
11
  connectDb(options: LogModuleOptions): Promise<DataSource>;
11
- log(message: string, context?: string): void;
12
- error(message: string, trace?: string, context?: ExecutionContext): void;
13
- warn(message: string, context?: string): void;
14
- debug(message: string, context?: string): void;
15
- verbose(message: string, context?: string): void;
12
+ log(message: string, context?: ExecutionContextHost): void;
13
+ error(message: string, trace?: string, context?: ExecutionContextHost): void;
14
+ warn(message: string, context?: ExecutionContextHost): void;
15
+ debug(message: string, context?: ExecutionContextHost): void;
16
+ verbose(message: string, context?: ExecutionContextHost): void;
16
17
  getAll(): Promise<any[]>;
17
18
  private smartInsert;
18
19
  private getConnection;
20
+ private parseContext;
19
21
  }
@@ -72,7 +72,9 @@ let LogService = LogService_1 = class LogService {
72
72
  });
73
73
  }
74
74
  async getAll() {
75
- return this.getConnection().find(LogService_1.Log);
75
+ return this.getConnection().find(LogService_1.Log, {
76
+ select: ["type", "message", "count", "createdAt", "updatedAt"],
77
+ });
76
78
  }
77
79
  async smartInsert(data) {
78
80
  const currentDate = new Date();
@@ -84,8 +86,11 @@ let LogService = LogService_1 = class LogService {
84
86
  message: data.message,
85
87
  },
86
88
  });
89
+ const context = data.context ? this.parseContext(data.context) : undefined;
87
90
  if (log) {
88
91
  return await connection.update(LogService_1.Log, log._id, {
92
+ context,
93
+ trace: data.trace,
89
94
  count: log.count + 1,
90
95
  updatedAt: currentDate,
91
96
  });
@@ -93,6 +98,8 @@ let LogService = LogService_1 = class LogService {
93
98
  return await connection.insert(LogService_1.Log, {
94
99
  type: data.type,
95
100
  message: data.message,
101
+ context,
102
+ trace: data.trace,
96
103
  count: 1,
97
104
  createdAt: currentDate,
98
105
  updatedAt: currentDate,
@@ -101,6 +108,28 @@ let LogService = LogService_1 = class LogService {
101
108
  getConnection() {
102
109
  return LogService_1.connection.manager || this.memoryDbService;
103
110
  }
111
+ parseContext(context) {
112
+ const res = {};
113
+ const args = context.getArgs();
114
+ for (const arg of args) {
115
+ if (arg.rawHeaders) {
116
+ res.rawHeaders = arg.rawHeaders;
117
+ }
118
+ if (arg.url) {
119
+ res.url = arg.url;
120
+ }
121
+ if (arg.method) {
122
+ res.method = arg.method;
123
+ }
124
+ if (arg.params) {
125
+ res.params = arg.params;
126
+ }
127
+ if (arg.body) {
128
+ res.body = arg.body;
129
+ }
130
+ }
131
+ return res;
132
+ }
104
133
  };
105
134
  exports.LogService = LogService;
106
135
  LogService.Log = (0, log_entity_1.createLogEntity)(defaults_1.defaultTable);
@@ -1 +1 @@
1
- {"version":3,"file":"log.service.js","sourceRoot":"","sources":["../../src/services/log.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"log.service.js","sourceRoot":"","sources":["../../src/services/log.service.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,9 @@ export declare class MemoryDbService {
4
4
  constructor();
5
5
  insert(entity: EntitySchema, data: any): string;
6
6
  update(entity: EntitySchema, condition: any, data: any): Promise<string>;
7
- find(entity: EntitySchema): Promise<any[]>;
7
+ find(entity: EntitySchema, options?: {
8
+ select?: string[];
9
+ }): Promise<any[]>;
8
10
  getOneById(entity: EntitySchema, _id: string): Promise<any>;
9
11
  findByProperty(entity: EntitySchema, field: string, value: string): any[];
10
12
  findOne(entity: EntitySchema, condition: {
@@ -52,15 +52,19 @@ let MemoryDbService = class MemoryDbService {
52
52
  }
53
53
  return Promise.reject();
54
54
  }
55
- async find(entity) {
55
+ async find(entity, options) {
56
56
  const table = this.getTableName(entity);
57
- return Promise.resolve(this.db[table].map((log) => ({
58
- type: log.type,
59
- message: log.message,
60
- count: log.count,
61
- createdAt: log.createdAt,
62
- updatedAt: log.updatedAt,
63
- })));
57
+ let mapOptions = (obj) => obj;
58
+ if (options === null || options === void 0 ? void 0 : options.select) {
59
+ mapOptions = (obj) => {
60
+ const newObj = {};
61
+ for (const key of options.select || []) {
62
+ newObj[key] = obj[key];
63
+ }
64
+ return newObj;
65
+ };
66
+ }
67
+ return Promise.resolve(this.db[table].map(mapOptions));
64
68
  }
65
69
  async getOneById(entity, _id) {
66
70
  const table = this.getTableName(entity);
@@ -1 +1 @@
1
- {"version":3,"file":"memory-db.service.js","sourceRoot":"","sources":["../../src/services/memory-db.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory-db.service.js","sourceRoot":"","sources":["../../src/services/memory-db.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export type Context = {
2
+ rawHeaders: any[];
3
+ url: string;
4
+ method: string;
5
+ params: any;
6
+ body: any;
7
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=context.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.type.js","sourceRoot":"","sources":["../../src/types/context.type.ts"],"names":[],"mappings":""}
@@ -1,2 +1,3 @@
1
+ export * from "./context.type";
1
2
  export * from "./log.type";
2
3
  export * from "./options.type";
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./context.type"), exports);
17
18
  __exportStar(require("./log.type"), exports);
18
19
  __exportStar(require("./options.type"), exports);
19
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,iDAA+B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,6CAA2B;AAC3B,iDAA+B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@viplance/nestjs-logger",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "NestJS internal logging system",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,4 +1,4 @@
1
- import { EntitySchema } from "typeorm";
1
+ import { Any, EntitySchema } from "typeorm";
2
2
 
3
3
  export function createLogEntity(name: string) {
4
4
  return new EntitySchema({
@@ -12,6 +12,8 @@ export function createLogEntity(name: string) {
12
12
  type: { type: String },
13
13
  message: { type: String },
14
14
  count: { type: Number, default: 1 },
15
+ context: { type: String, nullable: true },
16
+ trace: { type: String, nullable: true },
15
17
  createdAt: { type: Date },
16
18
  updatedAt: { type: Date },
17
19
  },
@@ -1,17 +1,14 @@
1
- import type {
2
- CallHandler,
3
- ExecutionContext,
4
- NestInterceptor,
5
- } from "@nestjs/common";
1
+ import type { CallHandler, NestInterceptor } from "@nestjs/common";
6
2
  import { Inject, Injectable } from "@nestjs/common";
7
3
  import { Observable, tap } from "rxjs";
8
4
  import { LogService } from "./services/log.service";
5
+ import { ExecutionContextHost } from "@nestjs/core/helpers/execution-context-host";
9
6
 
10
7
  @Injectable()
11
8
  export class LogInterceptor implements NestInterceptor {
12
9
  constructor(@Inject(LogService) private readonly logService: LogService) {}
13
10
 
14
- intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
11
+ intercept(context: ExecutionContextHost, next: CallHandler): Observable<any> {
15
12
  return next.handle().pipe(
16
13
  tap({
17
14
  error: (error) => {
@@ -1,12 +1,7 @@
1
- import {
2
- ExecutionContext,
3
- Injectable,
4
- LoggerService,
5
- Scope,
6
- } from "@nestjs/common";
1
+ import { Injectable, LoggerService, Scope } from "@nestjs/common";
7
2
  import { MemoryDbService } from "./memory-db.service";
8
3
  import { defaultTable } from "../defaults";
9
- import { LogModuleOptions, LogType } from "../types";
4
+ import { Context, LogModuleOptions, LogType } from "../types";
10
5
  import {
11
6
  DataSource,
12
7
  DataSourceOptions,
@@ -14,6 +9,7 @@ import {
14
9
  EntitySchema,
15
10
  } from "typeorm";
16
11
  import { createLogEntity } from "../entities/log.entity";
12
+ import { ExecutionContextHost } from "@nestjs/core/helpers/execution-context-host";
17
13
 
18
14
  @Injectable({ scope: Scope.TRANSIENT })
19
15
  export class LogService implements LoggerService {
@@ -42,7 +38,7 @@ export class LogService implements LoggerService {
42
38
  return LogService.connection;
43
39
  }
44
40
 
45
- log(message: string, context?: string) {
41
+ log(message: string, context?: ExecutionContextHost) {
46
42
  this.smartInsert({
47
43
  type: LogType.LOG,
48
44
  message,
@@ -50,7 +46,7 @@ export class LogService implements LoggerService {
50
46
  });
51
47
  }
52
48
 
53
- error(message: string, trace?: string, context?: ExecutionContext) {
49
+ error(message: string, trace?: string, context?: ExecutionContextHost) {
54
50
  this.smartInsert({
55
51
  type: LogType.ERROR,
56
52
  message,
@@ -59,7 +55,7 @@ export class LogService implements LoggerService {
59
55
  });
60
56
  }
61
57
 
62
- warn(message: string, context?: string) {
58
+ warn(message: string, context?: ExecutionContextHost) {
63
59
  this.smartInsert({
64
60
  type: LogType.WARN,
65
61
  message,
@@ -67,7 +63,7 @@ export class LogService implements LoggerService {
67
63
  });
68
64
  }
69
65
 
70
- debug(message: string, context?: string) {
66
+ debug(message: string, context?: ExecutionContextHost) {
71
67
  this.smartInsert({
72
68
  type: LogType.DEBUG,
73
69
  message,
@@ -75,7 +71,7 @@ export class LogService implements LoggerService {
75
71
  });
76
72
  }
77
73
 
78
- verbose(message: string, context?: string) {
74
+ verbose(message: string, context?: ExecutionContextHost) {
79
75
  this.smartInsert({
80
76
  type: LogType.VERBOSE,
81
77
  message,
@@ -84,10 +80,17 @@ export class LogService implements LoggerService {
84
80
  }
85
81
 
86
82
  async getAll(): Promise<any[]> {
87
- return this.getConnection().find(LogService.Log);
83
+ return this.getConnection().find(LogService.Log, {
84
+ select: ["type", "message", "count", "createdAt", "updatedAt"],
85
+ });
88
86
  }
89
87
 
90
- private async smartInsert(data: any): Promise<any> {
88
+ private async smartInsert(data: {
89
+ type: LogType;
90
+ message: string;
91
+ context?: ExecutionContextHost;
92
+ trace?: any;
93
+ }): Promise<any> {
91
94
  const currentDate = new Date();
92
95
 
93
96
  const connection = this.getConnection();
@@ -100,8 +103,12 @@ export class LogService implements LoggerService {
100
103
  },
101
104
  });
102
105
 
106
+ const context = data.context ? this.parseContext(data.context) : undefined;
107
+
103
108
  if (log) {
104
109
  return await connection.update(LogService.Log, log._id, {
110
+ context,
111
+ trace: data.trace,
105
112
  count: log.count + 1,
106
113
  updatedAt: currentDate,
107
114
  });
@@ -110,6 +117,8 @@ export class LogService implements LoggerService {
110
117
  return await connection.insert(LogService.Log, {
111
118
  type: data.type,
112
119
  message: data.message,
120
+ context,
121
+ trace: data.trace,
113
122
  count: 1,
114
123
  createdAt: currentDate,
115
124
  updatedAt: currentDate,
@@ -119,4 +128,33 @@ export class LogService implements LoggerService {
119
128
  private getConnection(): EntityManager {
120
129
  return LogService.connection.manager || this.memoryDbService;
121
130
  }
131
+
132
+ private parseContext(context: ExecutionContextHost): Partial<Context> {
133
+ const res: Partial<Context> = {};
134
+ const args = context.getArgs();
135
+
136
+ for (const arg of args) {
137
+ if (arg.rawHeaders) {
138
+ res.rawHeaders = arg.rawHeaders;
139
+ }
140
+
141
+ if (arg.url) {
142
+ res.url = arg.url;
143
+ }
144
+
145
+ if (arg.method) {
146
+ res.method = arg.method;
147
+ }
148
+
149
+ if (arg.params) {
150
+ res.params = arg.params;
151
+ }
152
+
153
+ if (arg.body) {
154
+ res.body = arg.body;
155
+ }
156
+ }
157
+
158
+ return res;
159
+ }
122
160
  }
@@ -2,7 +2,7 @@
2
2
  import { Injectable } from "@nestjs/common";
3
3
  import { createHash, randomBytes } from "crypto";
4
4
  import { defaultTable } from "../defaults";
5
- import { EntitySchema } from "typeorm";
5
+ import { EntitySchema, FindManyOptions } from "typeorm";
6
6
 
7
7
  const tables = [defaultTable];
8
8
 
@@ -59,18 +59,29 @@ export class MemoryDbService {
59
59
  return Promise.reject();
60
60
  }
61
61
 
62
- public async find(entity: EntitySchema): Promise<any[]> {
62
+ public async find(
63
+ entity: EntitySchema,
64
+ options?: {
65
+ select?: string[];
66
+ }
67
+ ): Promise<any[]> {
63
68
  const table = this.getTableName(entity);
64
69
 
65
- return Promise.resolve(
66
- this.db[table].map((log) => ({
67
- type: log.type,
68
- message: log.message,
69
- count: log.count,
70
- createdAt: log.createdAt,
71
- updatedAt: log.updatedAt,
72
- }))
73
- );
70
+ let mapOptions = (obj: any) => obj;
71
+
72
+ if (options?.select) {
73
+ mapOptions = (obj: any) => {
74
+ const newObj: any = {};
75
+
76
+ for (const key of options.select || []) {
77
+ newObj[key] = obj[key];
78
+ }
79
+
80
+ return newObj;
81
+ };
82
+ }
83
+
84
+ return Promise.resolve(this.db[table].map(mapOptions));
74
85
  }
75
86
 
76
87
  public async getOneById(entity: EntitySchema, _id: string): Promise<any> {
@@ -0,0 +1,7 @@
1
+ export type Context = {
2
+ rawHeaders: any[];
3
+ url: string;
4
+ method: string;
5
+ params: any;
6
+ body: any;
7
+ };
@@ -1,2 +1,3 @@
1
+ export * from "./context.type";
1
2
  export * from "./log.type";
2
3
  export * from "./options.type";