更新启动日志

This commit is contained in:
whyour 2025-11-16 21:31:52 +08:00
parent af96bd98ac
commit 0e5de4a824

View File

@ -60,11 +60,11 @@ class Application {
// Wait for gRPC worker to signal it's ready before starting HTTP worker // Wait for gRPC worker to signal it's ready before starting HTTP worker
this.waitForWorkerReady(grpcWorker, 30000) this.waitForWorkerReady(grpcWorker, 30000)
.then(() => { .then(() => {
Logger.info('gRPC worker is ready, starting HTTP worker'); Logger.info('✌️ gRPC worker is ready, starting HTTP worker');
this.httpWorker = this.forkWorker('http'); this.httpWorker = this.forkWorker('http');
}) })
.catch((error) => { .catch((error) => {
Logger.error('Failed to wait for gRPC worker:', error); Logger.error('✌️ Failed to wait for gRPC worker:', error);
process.exit(1); process.exit(1);
}); });
@ -73,7 +73,7 @@ class Application {
if (metadata) { if (metadata) {
if (!this.isShuttingDown) { if (!this.isShuttingDown) {
Logger.error( Logger.error(
`${metadata.serviceType} worker ${worker.process.pid} died (${signal || code `✌️ ${metadata.serviceType} worker ${worker.process.pid} died (${signal || code
}). Restarting...`, }). Restarting...`,
); );
// If gRPC worker died, restart it and wait for it to be ready // If gRPC worker died, restart it and wait for it to be ready
@ -81,26 +81,26 @@ class Application {
const newGrpcWorker = this.forkWorker('grpc'); const newGrpcWorker = this.forkWorker('grpc');
this.waitForWorkerReady(newGrpcWorker, 30000) this.waitForWorkerReady(newGrpcWorker, 30000)
.then(() => { .then(() => {
Logger.info('gRPC worker restarted and ready'); Logger.info('✌️ gRPC worker restarted and ready');
// Re-register cron jobs by notifying the HTTP worker // Re-register cron jobs by notifying the HTTP worker
if (this.httpWorker) { if (this.httpWorker) {
try { try {
this.httpWorker.send('reregister-crons'); this.httpWorker.send('reregister-crons');
Logger.info('Sent reregister-crons message to HTTP worker'); Logger.info('✌️ Sent reregister-crons message to HTTP worker');
} catch (error) { } catch (error) {
Logger.error('Failed to send reregister-crons message:', error); Logger.error('✌️ Failed to send reregister-crons message:', error);
} }
} }
}) })
.catch((error) => { .catch((error) => {
Logger.error('Failed to restart gRPC worker:', error); Logger.error('✌️ Failed to restart gRPC worker:', error);
process.exit(1); process.exit(1);
}); });
} else { } else {
// For HTTP worker, just restart it // For HTTP worker, just restart it
const newWorker = this.forkWorker(metadata.serviceType); const newWorker = this.forkWorker(metadata.serviceType);
this.httpWorker = newWorker; this.httpWorker = newWorker;
Logger.info(`Restarted ${metadata.serviceType} worker (PID: ${newWorker.process.pid})`); Logger.info(`✌️ Restarted ${metadata.serviceType} worker (PID: ${newWorker.process.pid})`);
} }
} }
@ -169,7 +169,7 @@ class Application {
if (worker) { if (worker) {
const exitPromise = new Promise<void>((resolve) => { const exitPromise = new Promise<void>((resolve) => {
worker.once('exit', () => { worker.once('exit', () => {
Logger.info(`Worker ${worker.process.pid} exited`); Logger.info(`✌️ Worker ${worker.process.pid} exited`);
resolve(); resolve();
}); });
@ -177,7 +177,7 @@ class Application {
worker.send('shutdown'); worker.send('shutdown');
} catch (error) { } catch (error) {
Logger.warn( Logger.warn(
`Failed to send shutdown to worker ${worker.process.pid}:`, `✌️ Failed to send shutdown to worker ${worker.process.pid}:`,
error, error,
); );
} }
@ -192,14 +192,14 @@ class Application {
Promise.all(workerPromises), Promise.all(workerPromises),
new Promise<void>((resolve) => { new Promise<void>((resolve) => {
setTimeout(() => { setTimeout(() => {
Logger.warn('Worker shutdown timeout reached'); Logger.warn('✌️ Worker shutdown timeout reached');
resolve(); resolve();
}, 10000); }, 10000);
}), }),
]); ]);
process.exit(0); process.exit(0);
} catch (error) { } catch (error) {
Logger.error('Error during worker shutdown:', error); Logger.error('✌️ Error during worker shutdown:', error);
process.exit(1); process.exit(1);
} }
}; };
@ -211,7 +211,7 @@ class Application {
private async startWorkerProcess() { private async startWorkerProcess() {
const serviceType = process.env.SERVICE_TYPE; const serviceType = process.env.SERVICE_TYPE;
if (!serviceType || !['http', 'grpc'].includes(serviceType)) { if (!serviceType || !['http', 'grpc'].includes(serviceType)) {
Logger.error('Invalid SERVICE_TYPE:', serviceType); Logger.error('✌️ Invalid SERVICE_TYPE:', serviceType);
process.exit(1); process.exit(1);
} }
@ -226,7 +226,7 @@ class Application {
process.send?.('ready'); process.send?.('ready');
} catch (error) { } catch (error) {
Logger.error(`${serviceType} worker failed:`, error); Logger.error(`✌️ ${serviceType} worker failed:`, error);
process.exit(1); process.exit(1);
} }
} }
@ -265,13 +265,13 @@ class Application {
} else if (msg === 'reregister-crons' && serviceType === 'http') { } else if (msg === 'reregister-crons' && serviceType === 'http') {
// Re-register cron jobs when gRPC worker restarts // Re-register cron jobs when gRPC worker restarts
try { try {
Logger.info('Received reregister-crons message, re-registering cron jobs...'); Logger.info('✌️ Received reregister-crons message, re-registering cron jobs...');
const CronService = (await import('./services/cron')).default; const CronService = (await import('./services/cron')).default;
const cronService = Container.get(CronService); const cronService = Container.get(CronService);
await cronService.autosave_crontab(); await cronService.autosave_crontab();
Logger.info('Cron jobs re-registered successfully'); Logger.info('✌️ Cron jobs re-registered successfully');
} catch (error) { } catch (error) {
Logger.error('Failed to re-register cron jobs:', error); Logger.error('✌️ Failed to re-register cron jobs:', error);
} }
} }
}); });
@ -293,7 +293,7 @@ class Application {
} }
process.exit(0); process.exit(0);
} catch (error) { } catch (error) {
Logger.error(`[${serviceType}] Error during shutdown:`, error); Logger.error(`✌️ [${serviceType}] Error during shutdown:`, error);
process.exit(1); process.exit(1);
} }
} }
@ -301,6 +301,6 @@ class Application {
const app = new Application(); const app = new Application();
app.start().catch((error) => { app.start().catch((error) => {
Logger.error('Application failed to start:', error); Logger.error('🙅‍♀️ Application failed to start:', error);
process.exit(1); process.exit(1);
}); });