@icd-iot-aicf/nestjs-logger 2.3.0 → 4.0.0-experimental.0
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 +103 -189
- package/dist/actions/action-types.d.ts +55 -0
- package/dist/{logger/core/dtos/core.dto.js → actions/action-types.js} +1 -1
- package/dist/actions/action-types.js.map +1 -0
- package/dist/actions/connection.action.d.ts +10 -0
- package/dist/actions/connection.action.js +23 -0
- package/dist/actions/connection.action.js.map +1 -0
- package/dist/actions/core-log-summary.d.ts +7 -0
- package/dist/actions/core-log-summary.js +22 -0
- package/dist/actions/core-log-summary.js.map +1 -0
- package/dist/actions/db.action.d.ts +8 -0
- package/dist/actions/db.action.js +37 -0
- package/dist/actions/db.action.js.map +1 -0
- package/dist/actions/exception.action.d.ts +3 -0
- package/dist/actions/exception.action.js +23 -0
- package/dist/actions/exception.action.js.map +1 -0
- package/dist/actions/http.action.d.ts +9 -0
- package/dist/actions/http.action.js +43 -0
- package/dist/actions/http.action.js.map +1 -0
- package/dist/actions/index.d.ts +10 -0
- package/dist/{logger/core/interceptors/interceptors.js → actions/index.js} +11 -4
- package/dist/actions/index.js.map +1 -0
- package/dist/actions/kafka.action.d.ts +5 -0
- package/dist/actions/kafka.action.js +24 -0
- package/dist/actions/kafka.action.js.map +1 -0
- package/dist/actions/logic.action.d.ts +16 -0
- package/dist/actions/logic.action.js +30 -0
- package/dist/actions/logic.action.js.map +1 -0
- package/dist/actions/rabbitmq.action.d.ts +6 -0
- package/dist/actions/rabbitmq.action.js +31 -0
- package/dist/actions/rabbitmq.action.js.map +1 -0
- package/dist/actions/smtp.action.d.ts +4 -0
- package/dist/actions/smtp.action.js +26 -0
- package/dist/actions/smtp.action.js.map +1 -0
- package/dist/{logger/core/functions/error-reponse.d.ts → common/error-response.d.ts} +1 -1
- package/dist/{logger/core/functions/error-reponse.js → common/error-response.js} +2 -2
- package/dist/common/error-response.js.map +1 -0
- package/dist/common/internal-logs-info.module.js +1 -1
- package/dist/common/internal-logs-info.module.js.map +1 -1
- package/dist/common/{helper/response.d.ts → response.d.ts} +1 -1
- package/dist/common/response.js.map +1 -0
- package/dist/common/{dto/result.dto.d.ts → result.dto.d.ts} +1 -1
- package/dist/common/{dto/result.dto.js → result.dto.js} +3 -3
- package/dist/common/result.dto.js.map +1 -0
- package/dist/common/{helper → service}/tools.service.d.ts +2 -2
- package/dist/common/{helper → service}/tools.service.js +2 -2
- package/dist/common/service/tools.service.js.map +1 -0
- package/dist/{utils → common}/tools.d.ts +2 -1
- package/dist/{utils → common}/tools.js +22 -8
- package/dist/common/tools.js.map +1 -0
- package/dist/config/app-log-config.module.js +9 -1
- package/dist/config/app-log-config.module.js.map +1 -1
- package/dist/config/app-log-config.service.js +1 -1
- package/dist/config/app-log-config.service.js.map +1 -1
- package/dist/config/configurations.d.ts +2 -3
- package/dist/config/configurations.js +0 -1
- package/dist/config/configurations.js.map +1 -1
- package/dist/{logger/core/functions/global-function.d.ts → context/context.functions.d.ts} +9 -9
- package/dist/{logger/core/functions/global-function.js → context/context.functions.js} +29 -31
- package/dist/context/context.functions.js.map +1 -0
- package/dist/context/external-transaction.store.d.ts +10 -0
- package/dist/context/external-transaction.store.js +6 -0
- package/dist/context/external-transaction.store.js.map +1 -0
- package/dist/context/summary-endpoint.store.d.ts +9 -0
- package/dist/context/summary-endpoint.store.js +12 -0
- package/dist/context/summary-endpoint.store.js.map +1 -0
- package/dist/{common/async-storage/tracnsaction-info.d.ts → context/transaction.store.d.ts} +1 -1
- package/dist/context/transaction.store.js +6 -0
- package/dist/context/transaction.store.js.map +1 -0
- package/dist/database/mongo-hooks.d.ts +37 -0
- package/dist/{logger/core/database/hook-ingress.database.js → database/mongo-hooks.js} +29 -17
- package/dist/database/mongo-hooks.js.map +1 -0
- package/dist/decorators/index.d.ts +3 -0
- package/dist/{logger/core/pipes → decorators}/index.js +3 -1
- package/dist/decorators/index.js.map +1 -0
- package/dist/decorators/masking.decorator.d.ts +1 -0
- package/dist/decorators/masking.decorator.js +8 -0
- package/dist/decorators/masking.decorator.js.map +1 -0
- package/dist/decorators/node-name.decorator.d.ts +8 -0
- package/dist/decorators/node-name.decorator.js +36 -0
- package/dist/decorators/node-name.decorator.js.map +1 -0
- package/dist/{logger/core/decorators/customDecorators.d.ts → decorators/record-name.decorator.d.ts} +4 -8
- package/dist/{logger/core/decorators/customDecorators.js → decorators/record-name.decorator.js} +5 -43
- package/dist/decorators/record-name.decorator.js.map +1 -0
- package/dist/{logger/aicf/services → formats/aicf}/aicf-endpoint.service.d.ts +3 -3
- package/dist/{logger/aicf/services → formats/aicf}/aicf-endpoint.service.js +14 -14
- package/dist/formats/aicf/aicf-endpoint.service.js.map +1 -0
- package/dist/formats/aicf/aicf-format.strategy.d.ts +15 -0
- package/dist/formats/aicf/aicf-format.strategy.js +66 -0
- package/dist/formats/aicf/aicf-format.strategy.js.map +1 -0
- package/dist/{logger/aicf/interceptors/aicf.interceptor.d.ts → formats/aicf/aicf-interceptor.d.ts} +2 -2
- package/dist/{logger/aicf/interceptors/aicf.interceptor.js → formats/aicf/aicf-interceptor.js} +5 -4
- package/dist/formats/aicf/aicf-interceptor.js.map +1 -0
- package/dist/{logger/aicf/dtos → formats/aicf}/aicf-manual.dto.d.ts +2 -2
- package/dist/{logger/aicf/dtos → formats/aicf}/aicf-manual.dto.js +12 -12
- package/dist/formats/aicf/aicf-manual.dto.js.map +1 -0
- package/dist/formats/aicf/aicf-middleware.d.ts +8 -0
- package/dist/formats/aicf/aicf-middleware.js +69 -0
- package/dist/formats/aicf/aicf-middleware.js.map +1 -0
- package/dist/{logger/aicf/dtos → formats/aicf}/aicf.dto.d.ts +4 -8
- package/dist/{logger/aicf/dtos → formats/aicf}/aicf.dto.js +12 -17
- package/dist/formats/aicf/aicf.dto.js.map +1 -0
- package/dist/{logger/cloudron/services → formats/cloudron}/cloudron-details-logs.service.d.ts +3 -3
- package/dist/{logger/cloudron/services → formats/cloudron}/cloudron-details-logs.service.js +19 -19
- package/dist/formats/cloudron/cloudron-details-logs.service.js.map +1 -0
- package/dist/formats/cloudron/cloudron-format.strategy.d.ts +15 -0
- package/dist/formats/cloudron/cloudron-format.strategy.js +85 -0
- package/dist/formats/cloudron/cloudron-format.strategy.js.map +1 -0
- package/dist/{logger/cloudron/intercepters/cloudron.interceptor.d.ts → formats/cloudron/cloudron-interceptor.d.ts} +3 -3
- package/dist/{logger/cloudron/intercepters/cloudron.interceptor.js → formats/cloudron/cloudron-interceptor.js} +6 -5
- package/dist/formats/cloudron/cloudron-interceptor.js.map +1 -0
- package/dist/{logger/cloudron/dtos/cauldron-manual.dto.d.ts → formats/cloudron/cloudron-manual.dto.d.ts} +5 -5
- package/dist/{logger/cloudron/dtos/cauldron-manual.dto.js → formats/cloudron/cloudron-manual.dto.js} +67 -59
- package/dist/formats/cloudron/cloudron-manual.dto.js.map +1 -0
- package/dist/formats/cloudron/cloudron-middleware.d.ts +12 -0
- package/dist/formats/cloudron/cloudron-middleware.js +52 -0
- package/dist/formats/cloudron/cloudron-middleware.js.map +1 -0
- package/dist/{logger/cloudron/services → formats/cloudron}/cloudron-summary-logs.service.d.ts +1 -1
- package/dist/{logger/cloudron/services → formats/cloudron}/cloudron-summary-logs.service.js +6 -6
- package/dist/formats/cloudron/cloudron-summary-logs.service.js.map +1 -0
- package/dist/{logger/cloudron/dtos/cauldron.dto.d.ts → formats/cloudron/cloudron.dto.d.ts} +12 -12
- package/dist/{logger/cloudron/dtos/cauldron.dto.js → formats/cloudron/cloudron.dto.js} +26 -25
- package/dist/formats/cloudron/cloudron.dto.js.map +1 -0
- package/dist/formats/format.interface.d.ts +62 -0
- package/dist/formats/format.interface.js +3 -0
- package/dist/formats/format.interface.js.map +1 -0
- package/dist/formats/format.registry.d.ts +6 -0
- package/dist/formats/format.registry.js +16 -0
- package/dist/formats/format.registry.js.map +1 -0
- package/dist/index.d.ts +20 -20
- package/dist/index.js +31 -20
- package/dist/index.js.map +1 -1
- package/dist/logger/axios-logs.interceptor.d.ts +12 -0
- package/dist/logger/axios-logs.interceptor.js +42 -0
- package/dist/logger/axios-logs.interceptor.js.map +1 -0
- package/dist/logger/base-http.middleware.d.ts +33 -0
- package/dist/logger/base-http.middleware.js +103 -0
- package/dist/logger/base-http.middleware.js.map +1 -0
- package/dist/logger/http-logs.middleware.d.ts +17 -0
- package/dist/logger/http-logs.middleware.js +49 -0
- package/dist/logger/http-logs.middleware.js.map +1 -0
- package/dist/logger/{core/guard/logger.guard.js → logger.guard.js} +3 -3
- package/dist/logger/logger.guard.js.map +1 -0
- package/dist/logger/logger.module.js +17 -27
- package/dist/logger/logger.module.js.map +1 -1
- package/dist/logger/logger.service.js +1 -1
- package/dist/logger/logger.service.js.map +1 -1
- package/dist/{logger/core/pipes/masking-logs → masking}/masking-logs.pipe.js +3 -3
- package/dist/masking/masking-logs.pipe.js.map +1 -0
- package/dist/metrics/metrics-manual.service.d.ts +2 -2
- package/dist/metrics/metrics-manual.service.js +3 -3
- package/dist/metrics/metrics-manual.service.js.map +1 -1
- package/dist/metrics/metrics.middleware.d.ts +1 -1
- package/dist/metrics/metrics.middleware.js +4 -4
- package/dist/metrics/metrics.middleware.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +21 -3
- package/.babelrc +0 -20
- package/.env +0 -0
- package/dist/common/async-storage/external-transaction-info.d.ts +0 -11
- package/dist/common/async-storage/external-transaction-info.js +0 -6
- package/dist/common/async-storage/external-transaction-info.js.map +0 -1
- package/dist/common/async-storage/summaryEndpoint-info.d.ts +0 -4
- package/dist/common/async-storage/summaryEndpoint-info.js +0 -10
- package/dist/common/async-storage/summaryEndpoint-info.js.map +0 -1
- package/dist/common/async-storage/tracnsaction-info.js +0 -6
- package/dist/common/async-storage/tracnsaction-info.js.map +0 -1
- package/dist/common/dto/result.dto.js.map +0 -1
- package/dist/common/helper/error.d.ts +0 -4
- package/dist/common/helper/error.js +0 -15
- package/dist/common/helper/error.js.map +0 -1
- package/dist/common/helper/response.js.map +0 -1
- package/dist/common/helper/tools.d.ts +0 -8
- package/dist/common/helper/tools.js +0 -98
- package/dist/common/helper/tools.js.map +0 -1
- package/dist/common/helper/tools.service.js.map +0 -1
- package/dist/logger/aicf/dtos/aicf-manual.dto.js.map +0 -1
- package/dist/logger/aicf/dtos/aicf.dto.js.map +0 -1
- package/dist/logger/aicf/interceptors/aicf-amqp.interceptor.d.ts +0 -7
- package/dist/logger/aicf/interceptors/aicf-amqp.interceptor.js +0 -78
- package/dist/logger/aicf/interceptors/aicf-amqp.interceptor.js.map +0 -1
- package/dist/logger/aicf/interceptors/aicf.interceptor.js.map +0 -1
- package/dist/logger/aicf/middleware/aicf.middleware.d.ts +0 -13
- package/dist/logger/aicf/middleware/aicf.middleware.js +0 -125
- package/dist/logger/aicf/middleware/aicf.middleware.js.map +0 -1
- package/dist/logger/aicf/services/aicf-endpoint.service.js.map +0 -1
- package/dist/logger/cloudron/decorators/cloudron.decorators.d.ts +0 -0
- package/dist/logger/cloudron/decorators/cloudron.decorators.js +0 -1
- package/dist/logger/cloudron/decorators/cloudron.decorators.js.map +0 -1
- package/dist/logger/cloudron/dtos/cauldron-manual.dto.js.map +0 -1
- package/dist/logger/cloudron/dtos/cauldron.dto.js.map +0 -1
- package/dist/logger/cloudron/global/cloudron.global.d.ts +0 -0
- package/dist/logger/cloudron/global/cloudron.global.js +0 -1
- package/dist/logger/cloudron/global/cloudron.global.js.map +0 -1
- package/dist/logger/cloudron/intercepters/cloudron.interceptor.js.map +0 -1
- package/dist/logger/cloudron/middleware/cloudron.middleware.d.ts +0 -15
- package/dist/logger/cloudron/middleware/cloudron.middleware.js +0 -106
- package/dist/logger/cloudron/middleware/cloudron.middleware.js.map +0 -1
- package/dist/logger/cloudron/services/cloudron-details-logs.service.js.map +0 -1
- package/dist/logger/cloudron/services/cloudron-summary-logs.service.js.map +0 -1
- package/dist/logger/core/database/hook-ingress.database.d.ts +0 -8
- package/dist/logger/core/database/hook-ingress.database.js.map +0 -1
- package/dist/logger/core/decorators/customDecorators.js.map +0 -1
- package/dist/logger/core/dtos/core.dto.d.ts +0 -86
- package/dist/logger/core/dtos/core.dto.js.map +0 -1
- package/dist/logger/core/dtos/log-entry-class.d.ts +0 -11
- package/dist/logger/core/dtos/log-entry-class.js +0 -15
- package/dist/logger/core/dtos/log-entry-class.js.map +0 -1
- package/dist/logger/core/enum/enum.d.ts +0 -75
- package/dist/logger/core/enum/enum.js +0 -307
- package/dist/logger/core/enum/enum.js.map +0 -1
- package/dist/logger/core/functions/error-reponse.js.map +0 -1
- package/dist/logger/core/functions/global-function.js.map +0 -1
- package/dist/logger/core/guard/logger.guard.js.map +0 -1
- package/dist/logger/core/interceptors/amqp.interceptor.d.ts +0 -6
- package/dist/logger/core/interceptors/amqp.interceptor.js +0 -46
- package/dist/logger/core/interceptors/amqp.interceptor.js.map +0 -1
- package/dist/logger/core/interceptors/core-logs.interceptor.d.ts +0 -18
- package/dist/logger/core/interceptors/core-logs.interceptor.js +0 -70
- package/dist/logger/core/interceptors/core-logs.interceptor.js.map +0 -1
- package/dist/logger/core/interceptors/http.interceptor.d.ts +0 -5
- package/dist/logger/core/interceptors/http.interceptor.js +0 -30
- package/dist/logger/core/interceptors/http.interceptor.js.map +0 -1
- package/dist/logger/core/interceptors/interceptors.d.ts +0 -3
- package/dist/logger/core/interceptors/interceptors.js.map +0 -1
- package/dist/logger/core/middleware/http-logs-middleware.service.d.ts +0 -19
- package/dist/logger/core/middleware/http-logs-middleware.service.js +0 -61
- package/dist/logger/core/middleware/http-logs-middleware.service.js.map +0 -1
- package/dist/logger/core/module/amqp/amqp.module.d.ts +0 -2
- package/dist/logger/core/module/amqp/amqp.module.js +0 -43
- package/dist/logger/core/module/amqp/amqp.module.js.map +0 -1
- package/dist/logger/core/pipes/index.d.ts +0 -1
- package/dist/logger/core/pipes/index.js.map +0 -1
- package/dist/logger/core/pipes/masking-logs/masking-logs.pipe.js.map +0 -1
- package/dist/logger/core/services/summary-flush.service.d.ts +0 -8
- package/dist/logger/core/services/summary-flush.service.js +0 -31
- package/dist/logger/core/services/summary-flush.service.js.map +0 -1
- package/dist/logger/esb/dtos/logger.esb.dto.d.ts +0 -136
- package/dist/logger/esb/dtos/logger.esb.dto.js +0 -99
- package/dist/logger/esb/dtos/logger.esb.dto.js.map +0 -1
- package/dist/logger/esb/intercepters/esb.interceptor.d.ts +0 -9
- package/dist/logger/esb/intercepters/esb.interceptor.js +0 -36
- package/dist/logger/esb/intercepters/esb.interceptor.js.map +0 -1
- package/dist/logger/esb/middleware/esb.middleware.d.ts +0 -10
- package/dist/logger/esb/middleware/esb.middleware.js +0 -64
- package/dist/logger/esb/middleware/esb.middleware.js.map +0 -1
- package/dist/logger/esb/services/external-logs-esb.service.d.ts +0 -10
- package/dist/logger/esb/services/external-logs-esb.service.js +0 -98
- package/dist/logger/esb/services/external-logs-esb.service.js.map +0 -1
- package/dist/utils/tools.js.map +0 -1
- package/tsconfig.build.json +0 -4
- /package/dist/common/{helper/response.js → response.js} +0 -0
- /package/dist/logger/{core/guard/logger.guard.d.ts → logger.guard.d.ts} +0 -0
- /package/dist/{logger/core/pipes/masking-logs → masking}/masking-logs.pipe.d.ts +0 -0
package/README.md
CHANGED
|
@@ -1,248 +1,162 @@
|
|
|
1
1
|
# @icd-iot-aicf/nestjs-logger
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+

|
|
4
|
+

|
|
5
|
+

|
|
6
|
+

|
|
4
7
|
|
|
5
|
-
|
|
6
|
-
-
|
|
7
|
-
- Metrics: Prometheus counters/gauges, HTTP middleware, manual API
|
|
8
|
-
- Extras: standard response codes, decorators, guards, utilities
|
|
8
|
+
A structured logging and metrics library for NestJS microservices in the ICD IoT platform.
|
|
9
|
+
It provides automatic request/response logging with team-standard format patterns and a fluent manual logging API — all wired in with a single module import.
|
|
9
10
|
|
|
11
|
+
---
|
|
10
12
|
|
|
11
|
-
##
|
|
13
|
+
## Key Features
|
|
14
|
+
|
|
15
|
+
- **Three log format strategies** — switch between `AICF`, `Cloudron`, and `ESB` output shapes via config; each format is fully consistent across all log events.
|
|
16
|
+
- **Automatic HTTP & AMQP logging** — middleware and interceptors capture inbound/outbound requests, correlation IDs, and timing with microsecond precision out of the box.
|
|
17
|
+
- **AsyncLocalStorage context propagation** — per-request transaction info, endpoint summaries, and external call metadata flow through the call stack with zero manual threading.
|
|
18
|
+
- **Prometheus metrics** — built-in HTTP counters and gauges via `MetricsModule`; extend with `MetricsManualService` for custom business metrics.
|
|
19
|
+
- **Manual logging API** — `CustomLoggerService` exposes `log()`, `warn()`, `error()`, `debug()`, and `verbose()` with typed action DTOs (`HttpAction`, `DBAction`, `RabbitMQAction`, and more).
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Installation
|
|
12
24
|
|
|
13
25
|
```bash
|
|
14
26
|
npm install @icd-iot-aicf/nestjs-logger
|
|
15
27
|
```
|
|
16
|
-
Or
|
|
17
|
-
```bash
|
|
18
|
-
yarn add @icd-iot-aicf/nestjs-logger
|
|
19
|
-
```
|
|
20
28
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
29
|
+
> **Peer dependencies** — ensure your project has these installed:
|
|
30
|
+
> ```bash
|
|
31
|
+
> npm install @nestjs/common @nestjs/core reflect-metadata
|
|
32
|
+
> ```
|
|
25
33
|
|
|
34
|
+
---
|
|
26
35
|
|
|
27
|
-
## Quick
|
|
36
|
+
## Quick Start
|
|
28
37
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
import {
|
|
33
|
-
import {
|
|
34
|
-
AppLogConfigModule,
|
|
35
|
-
LoggerModule,
|
|
36
|
-
MetricsModule,
|
|
37
|
-
HTTPLogsMiddleware,
|
|
38
|
-
HTTPMetricsMiddleware,
|
|
39
|
-
} from '@icd-iot-aicf/nestjs-logger';
|
|
40
|
-
import { FORMAT_TYPE, DEBUG_MODE } from '@icd-iot-aicf/nestjs-logger';
|
|
38
|
+
```typescript
|
|
39
|
+
// app.module.ts
|
|
40
|
+
import { Module } from '@nestjs/common';
|
|
41
|
+
import { AppLogConfigModule, FORMAT_TYPE } from '@icd-iot-aicf/nestjs-logger';
|
|
41
42
|
|
|
42
43
|
@Module({
|
|
43
44
|
imports: [
|
|
44
45
|
AppLogConfigModule.forRoot({
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
logLevel: 'info', // 'info' | 'warning' | 'error' | 'debug'
|
|
49
|
-
debugLib: DEBUG_MODE.DISABLE,
|
|
50
|
-
// Optional: map result structure if your response is not the default
|
|
51
|
-
// structureResponse: { resultCode: 'resultCode', httpCode: 'httpCode', resultDescription: 'resultDescription' },
|
|
46
|
+
format: FORMAT_TYPE.AICF,
|
|
47
|
+
appName: 'my-service',
|
|
48
|
+
componentName: 'api',
|
|
52
49
|
}),
|
|
53
|
-
LoggerModule,
|
|
54
|
-
MetricsModule.forRoot({ path: '/metrics' }), // optional options
|
|
55
50
|
],
|
|
56
51
|
})
|
|
57
|
-
export class AppModule {
|
|
58
|
-
configure(consumer: MiddlewareConsumer) {
|
|
59
|
-
consumer
|
|
60
|
-
.apply(HTTPLogsMiddleware, HTTPMetricsMiddleware)
|
|
61
|
-
.forRoutes('*');
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
2) Register the HTTP interceptor (correlation headers)
|
|
67
|
-
|
|
68
|
-
```ts
|
|
69
|
-
// main.ts
|
|
70
|
-
import { NestFactory } from '@nestjs/core';
|
|
71
|
-
import { AppModule } from './app.module';
|
|
72
|
-
import { HttpInterceptor } from '@icd-iot-aicf/nestjs-logger';
|
|
73
|
-
|
|
74
|
-
async function bootstrap() {
|
|
75
|
-
const app = await NestFactory.create(AppModule);
|
|
76
|
-
app.useGlobalInterceptors(new HttpInterceptor());
|
|
77
|
-
await app.listen(3000);
|
|
78
|
-
}
|
|
79
|
-
bootstrap();
|
|
52
|
+
export class AppModule {}
|
|
80
53
|
```
|
|
81
54
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
```ts
|
|
85
|
-
import { Controller, Get } from '@nestjs/common';
|
|
86
|
-
import { RecordName, CommandInfo } from '@icd-iot-aicf/nestjs-logger';
|
|
87
|
-
|
|
88
|
-
@Controller('health')
|
|
89
|
-
export class HealthController {
|
|
90
|
-
@Get()
|
|
91
|
-
@RecordName('HealthCheck')
|
|
92
|
-
@CommandInfo({ CommandName: 'HealthCheck', Description: 'API liveness probe' })
|
|
93
|
-
ping() {
|
|
94
|
-
return { ok: true };
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
## Logger usage
|
|
101
|
-
|
|
102
|
-
Inject CustomLoggerService and log structured JSON or plain strings. The library will set appropriate level fields for the chosen format.
|
|
103
|
-
|
|
104
|
-
```ts
|
|
55
|
+
```typescript
|
|
56
|
+
// my.service.ts
|
|
105
57
|
import { Injectable } from '@nestjs/common';
|
|
106
|
-
import { CustomLoggerService } from '@icd-iot-aicf/nestjs-logger';
|
|
58
|
+
import { CustomLoggerService, HttpAction, RESULTS } from '@icd-iot-aicf/nestjs-logger';
|
|
107
59
|
|
|
108
60
|
@Injectable()
|
|
109
|
-
export class
|
|
61
|
+
export class MyService {
|
|
110
62
|
constructor(private readonly logger: CustomLoggerService) {}
|
|
111
63
|
|
|
112
|
-
|
|
113
|
-
this.logger.log({
|
|
114
|
-
// ...
|
|
115
|
-
this.logger.warn({ message: 'slower than expected' });
|
|
116
|
-
// ...
|
|
117
|
-
this.logger.error({ message: 'failure' }, 'optional-stack-trace');
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
```
|
|
64
|
+
async getUser(id: string) {
|
|
65
|
+
this.logger.log('Fetching user', HttpAction.GET({ userId: id }));
|
|
121
66
|
|
|
122
|
-
|
|
123
|
-
- log() is info level. Other methods: warn(), debug(), verbose(), error(message, trace?).
|
|
124
|
-
- Prefer structured objects; strings also work but won’t include format extras.
|
|
67
|
+
// ... business logic ...
|
|
125
68
|
|
|
126
|
-
|
|
127
|
-
## Automatic HTTP logs
|
|
128
|
-
|
|
129
|
-
- HTTPLogsMiddleware emits inbound/outbound logs per request using the configured format (AICF/Cloudron/ESB).
|
|
130
|
-
- Use @RecordName to categorize metrics/logs by endpoint/business name.
|
|
131
|
-
- HttpInterceptor reads correlation headers:
|
|
132
|
-
- x-ais-orderref: transaction id
|
|
133
|
-
- x-origin-session: session chain (if present)
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
## Metrics
|
|
137
|
-
|
|
138
|
-
The library exposes a Prometheus endpoint (via @willsoto/nestjs-prometheus) and tracks:
|
|
139
|
-
- request totals by path/method/status
|
|
140
|
-
- time-bucket counters
|
|
141
|
-
- concurrent requests (current and max)
|
|
142
|
-
|
|
143
|
-
Setup was done in Quick start. Ensure C20_NAME is set in your environment to prefix metric names.
|
|
144
|
-
|
|
145
|
-
Manual metrics API:
|
|
146
|
-
|
|
147
|
-
```ts
|
|
148
|
-
import { Injectable } from '@nestjs/common';
|
|
149
|
-
import { MetricsManualService } from '@icd-iot-aicf/nestjs-logger';
|
|
150
|
-
import { RESULTS } from '@icd-iot-aicf/nestjs-logger';
|
|
151
|
-
|
|
152
|
-
@Injectable()
|
|
153
|
-
export class TaskRunner {
|
|
154
|
-
constructor(private readonly metrics: MetricsManualService) {}
|
|
155
|
-
|
|
156
|
-
async run() {
|
|
157
|
-
this.metrics.increment();
|
|
158
|
-
try {
|
|
159
|
-
// ... your work
|
|
160
|
-
this.metrics.finish('POST', RESULTS.SUCCESS);
|
|
161
|
-
} catch (e) {
|
|
162
|
-
this.metrics.finish('POST', RESULTS.INTERNAL_SERVER_ERROR);
|
|
163
|
-
throw e;
|
|
164
|
-
}
|
|
69
|
+
this.logger.log('User fetched', HttpAction.GET({ result: RESULTS.SUCCESS }));
|
|
165
70
|
}
|
|
166
71
|
}
|
|
167
72
|
```
|
|
168
73
|
|
|
169
|
-
|
|
74
|
+
---
|
|
170
75
|
|
|
171
|
-
|
|
172
|
-
MetricsModule.forRoot({ path: '/custom-metrics', defaultMetrics: { enabled: true } });
|
|
173
|
-
```
|
|
76
|
+
## Configuration
|
|
174
77
|
|
|
78
|
+
| Option | Type | Description |
|
|
79
|
+
|---|---|---|
|
|
80
|
+
| `format` | `FORMAT_TYPE` | Log output shape: `AICF` \| `Cloudron` \| `ESB` |
|
|
81
|
+
| `appName` | `string` | Application name written into every log entry |
|
|
82
|
+
| `componentName` | `string` | Sub-component or service layer identifier |
|
|
83
|
+
| `debugMode` | `DEBUG_MODE` | Controls verbosity; defaults to `OFF` |
|
|
175
84
|
|
|
176
|
-
|
|
85
|
+
---
|
|
177
86
|
|
|
178
|
-
|
|
87
|
+
## Automatic Logging
|
|
179
88
|
|
|
180
|
-
|
|
181
|
-
import { EXTCMDName, NodeName } from '@icd-iot-aicf/nestjs-logger';
|
|
89
|
+
Register the middleware and interceptors in your module to get zero-config HTTP logging:
|
|
182
90
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
91
|
+
```typescript
|
|
92
|
+
// app.module.ts
|
|
93
|
+
import {
|
|
94
|
+
MiddlewareConsumer,
|
|
95
|
+
Module,
|
|
96
|
+
NestModule,
|
|
97
|
+
} from '@nestjs/common';
|
|
98
|
+
import {
|
|
99
|
+
AppLogConfigModule,
|
|
100
|
+
HTTPLogsMiddleware,
|
|
101
|
+
FORMAT_TYPE,
|
|
102
|
+
} from '@icd-iot-aicf/nestjs-logger';
|
|
103
|
+
|
|
104
|
+
@Module({
|
|
105
|
+
imports: [
|
|
106
|
+
AppLogConfigModule.forRoot({ format: FORMAT_TYPE.AICF, appName: 'my-service', componentName: 'api' }),
|
|
107
|
+
],
|
|
108
|
+
})
|
|
109
|
+
export class AppModule implements NestModule {
|
|
110
|
+
configure(consumer: MiddlewareConsumer) {
|
|
111
|
+
consumer.apply(HTTPLogsMiddleware).forRoutes('*');
|
|
188
112
|
}
|
|
189
113
|
}
|
|
190
114
|
```
|
|
191
115
|
|
|
116
|
+
Every inbound request will automatically emit structured logs for:
|
|
117
|
+
- Inbound / outbound HTTP with correlation headers (`x-ais-orderref`, `x-origin-session`)
|
|
118
|
+
- Timing in microseconds
|
|
119
|
+
- Endpoint-level summary flush on response
|
|
192
120
|
|
|
193
|
-
|
|
121
|
+
---
|
|
194
122
|
|
|
195
|
-
|
|
123
|
+
## Prometheus Metrics
|
|
196
124
|
|
|
197
|
-
```
|
|
198
|
-
import {
|
|
199
|
-
import { HttpCode } from '@nestjs/common';
|
|
125
|
+
```typescript
|
|
126
|
+
import { MetricsModule } from '@icd-iot-aicf/nestjs-logger';
|
|
200
127
|
|
|
201
|
-
|
|
202
|
-
@HttpCode(RESULTS.SUCCESS.httpCode)
|
|
203
|
-
get() {
|
|
204
|
-
return { ...RESULTS.SUCCESS, data: { ok: true } };
|
|
205
|
-
}
|
|
128
|
+
MetricsModule.forRoot({ path: '/metrics', defaultMetrics: true })
|
|
206
129
|
```
|
|
207
130
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
## Configuration reference
|
|
131
|
+
Custom metrics via `MetricsManualService`:
|
|
212
132
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
- componentName: string (required)
|
|
216
|
-
- format: FORMAT_TYPE.AICF | FORMAT_TYPE.CLOUDRON | FORMAT_TYPE.ESB (required)
|
|
217
|
-
- logLevel?: 'info' | 'warning' | 'error' | 'debug' (default 'info')
|
|
218
|
-
- debugLib?: DEBUG_MODE (default DISABLE)
|
|
219
|
-
- structureResponse?: { resultCode?: string; httpCode?: string; resultDescription?: string }
|
|
220
|
-
|
|
221
|
-
Common enums
|
|
222
|
-
```ts
|
|
223
|
-
import { FORMAT_TYPE, DEBUG_MODE } from '@icd-iot-aicf/nestjs-logger';
|
|
133
|
+
```typescript
|
|
134
|
+
this.metrics.increment('orders_created_total', { status: 'success' });
|
|
224
135
|
```
|
|
225
136
|
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Log Action Types
|
|
226
140
|
|
|
227
|
-
|
|
141
|
+
| Class | Methods |
|
|
142
|
+
|---|---|
|
|
143
|
+
| `HttpAction` | `.GET()` `.POST()` `.PUT()` `.PATCH()` `.DELETE()` |
|
|
144
|
+
| `DBAction` | `.CREATE()` `.READ()` `.UPDATE()` `.REMOVE()` |
|
|
145
|
+
| `RabbitMQAction` | `.PRODUCE()` `.CONSUME()` |
|
|
146
|
+
| `KafkaAction` | `.PRODUCE()` `.CONSUME()` |
|
|
147
|
+
| `LogicAction` | `.FUNCTION()` `.CHECKPOINT()` |
|
|
148
|
+
| `ExceptionAction` | `.LOG()` |
|
|
228
149
|
|
|
229
|
-
|
|
230
|
-
- Modules: LoggerModule, MetricsModule, AppLogConfigModule
|
|
231
|
-
- Services: CustomLoggerService, MetricsService, MetricsManualService
|
|
232
|
-
- Middleware: HTTPLogsMiddleware, HTTPMetricsMiddleware
|
|
233
|
-
- Interceptors: HttpInterceptor, CoreLogsInterceptor, AmqpInterceptor
|
|
234
|
-
- Decorators: RecordName, CommandInfo, EXTCMDName, NodeName, RecordManual
|
|
235
|
-
- Config: FORMAT_TYPE, DEBUG_MODE
|
|
236
|
-
- Helpers: RESULTS, STATUS_METHOD, dayJs
|
|
150
|
+
---
|
|
237
151
|
|
|
152
|
+
## Benchmarks
|
|
238
153
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
- Metrics labels show undefined path? Use @RecordName; also ensure your controllers are hit after middleware.
|
|
243
|
-
- Metric names start with undefined_: set env C20_NAME in your process.
|
|
244
|
-
- Cloudron/ESB format specifics: pick FORMAT_TYPE matching your deployment pipeline; the library adjusts level fields automatically.
|
|
154
|
+
> _Performance benchmarks coming soon._
|
|
155
|
+
>
|
|
156
|
+
> Planned metrics: log throughput (events/sec), middleware overhead (ms/req), memory footprint under load.
|
|
245
157
|
|
|
158
|
+
---
|
|
246
159
|
|
|
247
160
|
## License
|
|
248
|
-
|
|
161
|
+
|
|
162
|
+
MIT © ICD IoT Platform Team
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export interface HTTPRequestObject {
|
|
2
|
+
url: string;
|
|
3
|
+
headers: Record<string, any>;
|
|
4
|
+
queryString: Record<string, any>;
|
|
5
|
+
routeParameters: Record<string, any>;
|
|
6
|
+
payload: Record<string, any>;
|
|
7
|
+
}
|
|
8
|
+
export interface HTTPResponseObject {
|
|
9
|
+
httpStatusCode: string | number;
|
|
10
|
+
headers: Record<string, any>;
|
|
11
|
+
payload: Record<string, any>;
|
|
12
|
+
}
|
|
13
|
+
export interface AMQPRequestObject {
|
|
14
|
+
method: string;
|
|
15
|
+
url: string;
|
|
16
|
+
headers: Record<string, any>;
|
|
17
|
+
exchange: string;
|
|
18
|
+
routingKey: string;
|
|
19
|
+
payload: Record<string, any>;
|
|
20
|
+
}
|
|
21
|
+
export interface AMQPResponseObject {
|
|
22
|
+
acknowledge: boolean;
|
|
23
|
+
}
|
|
24
|
+
export interface SMTPRequestObject {
|
|
25
|
+
method: string;
|
|
26
|
+
url: string;
|
|
27
|
+
headers: Record<string, any>;
|
|
28
|
+
payload: {
|
|
29
|
+
to: string;
|
|
30
|
+
from: string;
|
|
31
|
+
subject: string;
|
|
32
|
+
context: string;
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export interface SMTPResponseObject {
|
|
36
|
+
success: boolean;
|
|
37
|
+
smtpCode: string;
|
|
38
|
+
message: string;
|
|
39
|
+
}
|
|
40
|
+
export interface DBRequestObject {
|
|
41
|
+
method: string;
|
|
42
|
+
payload: Record<string, any>;
|
|
43
|
+
}
|
|
44
|
+
export interface ActionData<REQ, RES> {
|
|
45
|
+
startTime?: number;
|
|
46
|
+
endTime?: number;
|
|
47
|
+
message?: string;
|
|
48
|
+
additionalInfo?: any;
|
|
49
|
+
requestObject?: REQ;
|
|
50
|
+
responseObject?: RES;
|
|
51
|
+
}
|
|
52
|
+
export declare enum LOGIC_TYPE {
|
|
53
|
+
FUNCTION = "FUNCTION",
|
|
54
|
+
CHECKPOINT = "CHECKPOINT"
|
|
55
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-types.js","sourceRoot":"","sources":["../../src/actions/action-types.ts"],"names":[],"mappings":";;;AAuDA,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,mCAAqB,CAAA;IACrB,uCAAyB,CAAA;AAC3B,CAAC,EAHW,UAAU,0BAAV,UAAU,QAGrB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface ConnectionInformation {
|
|
2
|
+
message: string;
|
|
3
|
+
protocol: string;
|
|
4
|
+
source: string;
|
|
5
|
+
}
|
|
6
|
+
export declare class ConnectionAction {
|
|
7
|
+
static CONNECTED(data: ConnectionInformation): any;
|
|
8
|
+
static DISCONNECTED(data: ConnectionInformation): any;
|
|
9
|
+
private static map;
|
|
10
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConnectionAction = void 0;
|
|
4
|
+
const format_registry_1 = require("../formats/format.registry");
|
|
5
|
+
class ConnectionAction {
|
|
6
|
+
static CONNECTED(data) {
|
|
7
|
+
return this.map('CONNECTED', data);
|
|
8
|
+
}
|
|
9
|
+
static DISCONNECTED(data) {
|
|
10
|
+
return this.map('DISCONNECTED', data);
|
|
11
|
+
}
|
|
12
|
+
static map(connectType, data) {
|
|
13
|
+
try {
|
|
14
|
+
const logData = { ...data, recordSubType: connectType, action: 'CONNECTION' };
|
|
15
|
+
return format_registry_1.LogFormatRegistry.get().buildConnectionLog(logData);
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return {};
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.ConnectionAction = ConnectionAction;
|
|
23
|
+
//# sourceMappingURL=connection.action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.action.js","sourceRoot":"","sources":["../../src/actions/connection.action.ts"],"names":[],"mappings":";;;AAAA,gEAA+D;AAS/D,MAAa,gBAAgB;IAC3B,MAAM,CAAC,SAAS,CAAC,IAA2B;QAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IACD,MAAM,CAAC,YAAY,CAAC,IAA2B;QAC7C,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;IAEO,MAAM,CAAC,GAAG,CAAC,WAAmB,EAAE,IAAS;QAC/C,IAAI,CAAC;YACH,MAAM,OAAO,GAAsB,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;YACjG,OAAO,mCAAiB,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC7D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CACF;AAhBD,4CAgBC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CoreLogSummaryFactory = void 0;
|
|
4
|
+
const format_registry_1 = require("../formats/format.registry");
|
|
5
|
+
class CoreLogSummaryFactory {
|
|
6
|
+
static getInstance(detail) {
|
|
7
|
+
try {
|
|
8
|
+
const data = {
|
|
9
|
+
request: detail.request,
|
|
10
|
+
response: detail.response,
|
|
11
|
+
serviceEndTime: detail.serviceEndTime,
|
|
12
|
+
resultCodeFormat: detail.resultCodeFormat,
|
|
13
|
+
};
|
|
14
|
+
return format_registry_1.LogFormatRegistry.get().buildSummaryLog(data) ?? {};
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return {};
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.CoreLogSummaryFactory = CoreLogSummaryFactory;
|
|
22
|
+
//# sourceMappingURL=core-log-summary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-log-summary.js","sourceRoot":"","sources":["../../src/actions/core-log-summary.ts"],"names":[],"mappings":";;;AAAA,gEAA+D;AAI/D,MAAa,qBAAqB;IAChC,MAAM,CAAC,WAAW,CAChB,MAAqC;QAErC,IAAI,CAAC;YACH,MAAM,IAAI,GAAqB;gBAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;aAC1C,CAAC;YACF,OAAO,mCAAiB,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CACF;AAhBD,sDAgBC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ActionData, DBRequestObject } from './action-types';
|
|
2
|
+
export declare class DBAction {
|
|
3
|
+
static CREATE(data: ActionData<DBRequestObject, any>): any;
|
|
4
|
+
static READ(data: ActionData<DBRequestObject, any>): any;
|
|
5
|
+
static UPDATE(data: ActionData<DBRequestObject, any>): any;
|
|
6
|
+
static REMOVE(data: ActionData<DBRequestObject, any>): any;
|
|
7
|
+
private static map;
|
|
8
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DBAction = void 0;
|
|
4
|
+
const format_registry_1 = require("../formats/format.registry");
|
|
5
|
+
const aicf_dto_1 = require("../formats/aicf/aicf.dto");
|
|
6
|
+
class DBAction {
|
|
7
|
+
static CREATE(data) {
|
|
8
|
+
return this.map(aicf_dto_1.SUB_DB_ACTION.CREATE, data);
|
|
9
|
+
}
|
|
10
|
+
static READ(data) {
|
|
11
|
+
return this.map(aicf_dto_1.SUB_DB_ACTION.READ, data);
|
|
12
|
+
}
|
|
13
|
+
static UPDATE(data) {
|
|
14
|
+
return this.map(aicf_dto_1.SUB_DB_ACTION.UPDATE, data);
|
|
15
|
+
}
|
|
16
|
+
static REMOVE(data) {
|
|
17
|
+
return this.map(aicf_dto_1.SUB_DB_ACTION.REMOVE, data);
|
|
18
|
+
}
|
|
19
|
+
static map(method, data) {
|
|
20
|
+
try {
|
|
21
|
+
const logData = {
|
|
22
|
+
...data,
|
|
23
|
+
action: aicf_dto_1.ACTION_TYPE.DATABASE,
|
|
24
|
+
subAction: method,
|
|
25
|
+
summaryInfoAdditional: data.requestObject
|
|
26
|
+
? { url: '', statusCode: '20000:The requested operation was successfully.' }
|
|
27
|
+
: undefined,
|
|
28
|
+
};
|
|
29
|
+
return format_registry_1.LogFormatRegistry.get().buildDetailLog(logData);
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return {};
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.DBAction = DBAction;
|
|
37
|
+
//# sourceMappingURL=db.action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.action.js","sourceRoot":"","sources":["../../src/actions/db.action.ts"],"names":[],"mappings":";;;AACA,gEAA+D;AAE/D,uDAAsE;AAGtE,MAAa,QAAQ;IACnB,MAAM,CAAC,MAAM,CAAC,IAAsC;QAClD,OAAO,IAAI,CAAC,GAAG,CAAC,wBAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,IAAsC;QAChD,OAAO,IAAI,CAAC,GAAG,CAAC,wBAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,IAAsC;QAClD,OAAO,IAAI,CAAC,GAAG,CAAC,wBAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,IAAsC;QAClD,OAAO,IAAI,CAAC,GAAG,CAAC,wBAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAEO,MAAM,CAAC,GAAG,CAAC,MAAqB,EAAE,IAAS;QACjD,IAAI,CAAC;YACH,MAAM,OAAO,GAAkB;gBAC7B,GAAG,IAAI;gBACP,MAAM,EAAE,sBAAW,CAAC,QAAQ;gBAC5B,SAAS,EAAE,MAAM;gBACjB,qBAAqB,EAAE,IAAI,CAAC,aAAa;oBACvC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,iDAAiD,EAAE;oBAC5E,CAAC,CAAC,SAAS;aACd,CAAC;YACF,OAAO,mCAAiB,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CACF;AA9BD,4BA8BC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExceptionAction = void 0;
|
|
4
|
+
const format_registry_1 = require("../formats/format.registry");
|
|
5
|
+
const aicf_dto_1 = require("../formats/aicf/aicf.dto");
|
|
6
|
+
class ExceptionAction {
|
|
7
|
+
static LOG(data) {
|
|
8
|
+
try {
|
|
9
|
+
const logData = {
|
|
10
|
+
...data,
|
|
11
|
+
recordSubType: aicf_dto_1.RECORD_SUB_TYPE.EXCEPTION,
|
|
12
|
+
action: aicf_dto_1.ACTION_TYPE.EXCEPTION,
|
|
13
|
+
subAction: 'LOG',
|
|
14
|
+
};
|
|
15
|
+
return format_registry_1.LogFormatRegistry.get().buildDetailLog(logData);
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return {};
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.ExceptionAction = ExceptionAction;
|
|
23
|
+
//# sourceMappingURL=exception.action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exception.action.js","sourceRoot":"","sources":["../../src/actions/exception.action.ts"],"names":[],"mappings":";;;AAAA,gEAA+D;AAE/D,uDAAwE;AAExE,MAAa,eAAe;IAC1B,MAAM,CAAC,GAAG,CAAC,IAAS;QAClB,IAAI,CAAC;YACH,MAAM,OAAO,GAAkB;gBAC7B,GAAG,IAAI;gBACP,aAAa,EAAE,0BAAe,CAAC,SAAS;gBACxC,MAAM,EAAE,sBAAW,CAAC,SAAS;gBAC7B,SAAS,EAAE,KAAK;aACjB,CAAC;YACF,OAAO,mCAAiB,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CACF;AAdD,0CAcC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ActionData, HTTPRequestObject, HTTPResponseObject } from './action-types';
|
|
2
|
+
export declare class HttpAction {
|
|
3
|
+
static GET(data: ActionData<HTTPRequestObject, HTTPResponseObject>): any;
|
|
4
|
+
static POST(data: ActionData<HTTPRequestObject, HTTPResponseObject>): any;
|
|
5
|
+
static PUT(data: ActionData<HTTPRequestObject, HTTPResponseObject>): any;
|
|
6
|
+
static PATCH(data: ActionData<HTTPRequestObject, HTTPResponseObject>): any;
|
|
7
|
+
static DELETE(data: ActionData<HTTPRequestObject, HTTPResponseObject>): any;
|
|
8
|
+
private static map;
|
|
9
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HttpAction = void 0;
|
|
4
|
+
const format_registry_1 = require("../formats/format.registry");
|
|
5
|
+
const aicf_dto_1 = require("../formats/aicf/aicf.dto");
|
|
6
|
+
class HttpAction {
|
|
7
|
+
static GET(data) {
|
|
8
|
+
return this.map(aicf_dto_1.SUB_HTTP_ACTION.GET, data);
|
|
9
|
+
}
|
|
10
|
+
static POST(data) {
|
|
11
|
+
return this.map(aicf_dto_1.SUB_HTTP_ACTION.POST, data);
|
|
12
|
+
}
|
|
13
|
+
static PUT(data) {
|
|
14
|
+
return this.map(aicf_dto_1.SUB_HTTP_ACTION.PUT, data);
|
|
15
|
+
}
|
|
16
|
+
static PATCH(data) {
|
|
17
|
+
return this.map(aicf_dto_1.SUB_HTTP_ACTION.PATCH, data);
|
|
18
|
+
}
|
|
19
|
+
static DELETE(data) {
|
|
20
|
+
return this.map(aicf_dto_1.SUB_HTTP_ACTION.DELETE, data);
|
|
21
|
+
}
|
|
22
|
+
static map(method, data) {
|
|
23
|
+
try {
|
|
24
|
+
const logData = {
|
|
25
|
+
...data,
|
|
26
|
+
action: aicf_dto_1.ACTION_TYPE.HTTP,
|
|
27
|
+
subAction: method,
|
|
28
|
+
summaryInfoAdditional: data.requestObject && data.responseObject
|
|
29
|
+
? {
|
|
30
|
+
url: data.requestObject.url,
|
|
31
|
+
statusCode: String(data.responseObject.httpStatusCode).padEnd(5, '0'),
|
|
32
|
+
}
|
|
33
|
+
: undefined,
|
|
34
|
+
};
|
|
35
|
+
return format_registry_1.LogFormatRegistry.get().buildDetailLog(logData);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return {};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.HttpAction = HttpAction;
|
|
43
|
+
//# sourceMappingURL=http.action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.action.js","sourceRoot":"","sources":["../../src/actions/http.action.ts"],"names":[],"mappings":";;;AACA,gEAA+D;AAE/D,uDAAwE;AAGxE,MAAa,UAAU;IACrB,MAAM,CAAC,GAAG,CAAC,IAAuD;QAChE,OAAO,IAAI,CAAC,GAAG,CAAC,0BAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,IAAuD;QACjE,OAAO,IAAI,CAAC,GAAG,CAAC,0BAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IACD,MAAM,CAAC,GAAG,CAAC,IAAuD;QAChE,OAAO,IAAI,CAAC,GAAG,CAAC,0BAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,IAAuD;QAClE,OAAO,IAAI,CAAC,GAAG,CAAC,0BAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,IAAuD;QACnE,OAAO,IAAI,CAAC,GAAG,CAAC,0BAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAEO,MAAM,CAAC,GAAG,CAAC,MAAuB,EAAE,IAAuD;QACjG,IAAI,CAAC;YACH,MAAM,OAAO,GAAkB;gBAC7B,GAAG,IAAI;gBACP,MAAM,EAAE,sBAAW,CAAC,IAAI;gBACxB,SAAS,EAAE,MAAM;gBACjB,qBAAqB,EACnB,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,cAAc;oBACvC,CAAC,CAAC;wBACE,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG;wBAC3B,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC;qBACtE;oBACH,CAAC,CAAC,SAAS;aAChB,CAAC;YACF,OAAO,mCAAiB,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CACF;AApCD,gCAoCC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from './action-types';
|
|
2
|
+
export * from './http.action';
|
|
3
|
+
export * from './db.action';
|
|
4
|
+
export * from './rabbitmq.action';
|
|
5
|
+
export * from './kafka.action';
|
|
6
|
+
export * from './smtp.action';
|
|
7
|
+
export * from './logic.action';
|
|
8
|
+
export * from './exception.action';
|
|
9
|
+
export * from './connection.action';
|
|
10
|
+
export * from './core-log-summary';
|