@omen.foundation/node-microservice-runtime 0.1.44 → 0.1.46
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/dist/collector-manager.cjs +70 -0
- package/dist/collector-manager.d.ts +7 -0
- package/dist/collector-manager.d.ts.map +1 -1
- package/dist/collector-manager.js +82 -0
- package/dist/collector-manager.js.map +1 -1
- package/dist/index.cjs +2 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/logger.cjs +41 -1
- package/dist/logger.d.ts +1 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +57 -5
- package/dist/logger.js.map +1 -1
- package/dist/runtime.cjs +19 -0
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +24 -1
- package/dist/runtime.js.map +1 -1
- package/package.json +1 -1
- package/src/collector-manager.ts +91 -0
- package/src/index.ts +1 -0
- package/src/logger.ts +74 -9
- package/src/runtime.ts +28 -1
package/src/runtime.ts
CHANGED
|
@@ -4,6 +4,8 @@ import { GatewayRequester } from './requester.js';
|
|
|
4
4
|
import { AuthManager } from './auth.js';
|
|
5
5
|
import { createLogger } from './logger.js';
|
|
6
6
|
import { loadEnvironmentConfig } from './env.js';
|
|
7
|
+
import { setupCollectorBeforeLogging } from './collector-manager.js';
|
|
8
|
+
import pino from 'pino';
|
|
7
9
|
import { listRegisteredServices, getServiceOptions, getConfigureServicesHandlers, getInitializeServicesHandlers } from './decorators.js';
|
|
8
10
|
import { generateOpenApiDocument } from './docs.js';
|
|
9
11
|
import { VERSION } from './index.js';
|
|
@@ -60,7 +62,15 @@ export class MicroserviceRuntime {
|
|
|
60
62
|
constructor(env?: EnvironmentConfig) {
|
|
61
63
|
this.env = env ?? loadEnvironmentConfig();
|
|
62
64
|
|
|
63
|
-
//
|
|
65
|
+
// STEP 1: Create minimal console logger for startup messages (before collector setup)
|
|
66
|
+
// This ensures we have logging available immediately, even before collector is ready
|
|
67
|
+
const startupLogger = pino({
|
|
68
|
+
name: 'beamable-runtime-startup',
|
|
69
|
+
level: 'info',
|
|
70
|
+
}, process.stdout);
|
|
71
|
+
startupLogger.info('Starting Beamable Node microservice runtime.');
|
|
72
|
+
|
|
73
|
+
// STEP 2: Get registered services to extract service name
|
|
64
74
|
const registered = listRegisteredServices();
|
|
65
75
|
if (registered.length === 0) {
|
|
66
76
|
throw new Error('No microservices registered. Use the @Microservice decorator to register at least one class.');
|
|
@@ -70,10 +80,27 @@ export class MicroserviceRuntime {
|
|
|
70
80
|
const primaryService = registered[0];
|
|
71
81
|
const qualifiedServiceName = `micro_${primaryService.qualifiedName}`;
|
|
72
82
|
|
|
83
|
+
// STEP 3: Setup collector BEFORE creating the main logger
|
|
84
|
+
// This ensures all logs from the main logger are captured via OTLP
|
|
85
|
+
startupLogger.info('Setting up OpenTelemetry collector...');
|
|
86
|
+
const otlpEndpoint = setupCollectorBeforeLogging(
|
|
87
|
+
this.env,
|
|
88
|
+
60000 // 60 second timeout
|
|
89
|
+
);
|
|
90
|
+
|
|
91
|
+
if (otlpEndpoint) {
|
|
92
|
+
startupLogger.info(`Collector ready at ${otlpEndpoint}, creating main logger...`);
|
|
93
|
+
} else {
|
|
94
|
+
startupLogger.warn('Collector setup did not complete, continuing without OTLP logging');
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// STEP 4: Create main logger (collector is now ready, so all logs will be captured)
|
|
98
|
+
// Pass the OTLP endpoint to skip re-discovery/startup
|
|
73
99
|
this.logger = createLogger(this.env, {
|
|
74
100
|
name: 'beamable-node-microservice',
|
|
75
101
|
serviceName: primaryService.name,
|
|
76
102
|
qualifiedServiceName: qualifiedServiceName,
|
|
103
|
+
otlpEndpoint: otlpEndpoint || undefined, // Pass endpoint if collector was set up
|
|
77
104
|
});
|
|
78
105
|
this.serviceManager = new BeamableServiceManager(this.env, this.logger);
|
|
79
106
|
|