rez_core 4.0.131 → 4.0.132

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.
@@ -151,12 +151,13 @@ export class FieldMapperService extends EntityServiceImpl {
151
151
  const targetEntityIds = relations.map((r) => r.target_entity_id);
152
152
 
153
153
  this.loggingService.log(
154
- 'package',
154
+ 'debug',
155
155
  'fieldMapperService',
156
- 'targetEntityIds',
157
- targetEntityIds,
156
+ 'resolveData',
157
+ `Resolved targetEntityIds: ${targetEntityIds} for entityType: ${entityType}`,
158
+ [parent_type, parent_id, field.mapped_entity_type],
159
+ [],
158
160
  );
159
-
160
161
  if (targetEntityIds.length > 0) {
161
162
  if (filterCode && filterCode !== 'default') {
162
163
  let filterResponse =
@@ -177,10 +178,14 @@ export class FieldMapperService extends EntityServiceImpl {
177
178
  });
178
179
 
179
180
  this.loggingService.log(
180
- 'package',
181
+ 'debug',
181
182
  'fieldMapperService',
182
- 'filterResponse',
183
- `${filterResponse}`,
183
+ 'resolveData',
184
+ `Filter response for filterCode: ${filterCode} is ${JSON.stringify(
185
+ filterResponse,
186
+ )}`,
187
+ [entityType, filterCode, targetEntityIds],
188
+ [],
184
189
  );
185
190
 
186
191
  inMemory[entityType][filterCode] =
@@ -1,8 +1,19 @@
1
1
  import { Injectable, Logger } from '@nestjs/common';
2
+ import { ConfigService } from '@nestjs/config';
3
+ import axios from 'axios';
2
4
 
3
5
  @Injectable()
4
6
  export class LoggingService {
5
- constructor() {}
7
+ private readonly logger = new Logger(LoggingService.name);
8
+ private readonly graylogUrl: string;
9
+ private readonly environment: string;
10
+
11
+ constructor(private readonly configService: ConfigService) {
12
+ this.graylogUrl =
13
+ this.configService.get<string>('GRAYLOG_URL') ||
14
+ 'http://localhost:12201/gelf';
15
+ this.environment = this.configService.get<string>('PROFILE') || 'dev';
16
+ }
6
17
 
7
18
  async log(
8
19
  level: string,
@@ -10,25 +21,68 @@ export class LoggingService {
10
21
  methodName: string,
11
22
  message: string,
12
23
  parameters?: unknown[],
13
- debuginfo?: unknown[],
24
+ debugInfo?: unknown[],
14
25
  ) {
15
- const levelInfo = level.toLowerCase().trim();
16
- const logger = new Logger(serviceName);
17
-
18
- // Only log to console (NestJS Logger)
19
- const logMessage = `${methodName} : ${message} : Parameters :${JSON.stringify(
26
+ const logLevel = level.toLowerCase().trim();
27
+ const logMessage = `${serviceName}.${methodName}: ${message} | Params: ${JSON.stringify(
20
28
  parameters,
21
- )}: Debug Info: ${JSON.stringify(debuginfo)}`;
29
+ )} | Debug: ${JSON.stringify(debugInfo)}`;
30
+
31
+ // Console output via NestJS Logger
32
+ switch (logLevel) {
33
+ case 'debug':
34
+ case 'info':
35
+ this.logger.debug(logMessage);
36
+ break;
37
+ case 'warn':
38
+ this.logger.warn(logMessage);
39
+ break;
40
+ case 'error':
41
+ this.logger.error(logMessage);
42
+ break;
43
+ default:
44
+ this.logger.log(logMessage);
45
+ }
46
+
47
+ // Send to Graylog asynchronously
48
+ this.sendToGraylog({
49
+ version: '1.1',
50
+ host: serviceName || 'nestjs-app',
51
+ short_message: message,
52
+ full_message: logMessage,
53
+ level: this.mapLogLevel(logLevel),
54
+ _service: serviceName,
55
+ _method: methodName,
56
+ _parameters: parameters,
57
+ _debug: debugInfo,
58
+ _environment: this.environment,
59
+ timestamp: Date.now() / 1000,
60
+ });
61
+ }
22
62
 
23
- if (levelInfo === 'debug' || levelInfo === 'info') {
24
- logger.debug(logMessage);
25
- } else if (levelInfo === 'error') {
26
- logger.error(logMessage);
27
- } else {
28
- // For other levels, fallback to log
29
- logger.log(logMessage);
63
+ private async sendToGraylog(payload: Record<string, any>) {
64
+ try {
65
+ await axios.post(this.graylogUrl, payload, {
66
+ headers: { 'Content-Type': 'application/json' },
67
+ timeout: 2000, // short timeout
68
+ });
69
+ } catch (err) {
70
+ this.logger.warn(`Graylog send failed: ${err.message}`);
30
71
  }
72
+ }
31
73
 
32
- // File logging logic removed
74
+ private mapLogLevel(level: string): number {
75
+ // Graylog levels: 0 (emerg) → 7 (debug)
76
+ const mapping: Record<string, number> = {
77
+ emerg: 0,
78
+ alert: 1,
79
+ crit: 2,
80
+ error: 3,
81
+ warn: 4,
82
+ notice: 5,
83
+ info: 6,
84
+ debug: 7,
85
+ };
86
+ return mapping[level] ?? 6;
33
87
  }
34
88
  }
@@ -4,9 +4,11 @@ import { ReflectionHelper } from './service/reflection-helper.service';
4
4
  import { ExcelUtil } from './service/excelUtil.service';
5
5
  import { ClockIDGenService } from './service/clockIDGenUtil.service';
6
6
  import { WBSCodeGenService } from './service/wbsCodeGen.service';
7
+ import { ConfigModule } from '@nestjs/config';
7
8
 
8
9
  @Global()
9
10
  @Module({
11
+ imports: [ConfigModule],
10
12
  providers: [
11
13
  LoggingService,
12
14
  ReflectionHelper,