@@ -247,7 +247,7 @@ export class Kernel {
247247 await this . #replyToCommand( { method, params : 'pong' } ) ;
248248 break ;
249249 default :
250- console . error (
250+ this . #logger . error (
251251 'kernel worker received unexpected command' ,
252252 // @ts -expect-error Compile-time exhaustiveness check
253253 { method : method . valueOf ( ) , params } ,
@@ -341,15 +341,23 @@ export class Kernel {
341341 if ( this . #vats. has ( vatId ) ) {
342342 throw new VatAlreadyExistsError ( vatId ) ;
343343 }
344- const commandStream = await this . #vatWorkerService. launch ( vatId , vatConfig ) ;
345- const vat = await VatHandle . make ( {
346- kernel : this ,
344+
345+ // Create a child logger with the vat's ID
346+ const vatLogger = makeLogger ( `[vat ${ vatId } ]` , this . #logger) ;
347+
348+ const vatStream = await this . #vatWorkerService. launch ( vatId , vatConfig ) ;
349+
350+ this . #vats. set (
347351 vatId ,
348- vatConfig,
349- vatStream : commandStream ,
350- kernelStore : this . #kernelStore,
351- } ) ;
352- this . #vats. set ( vatId , vat ) ;
352+ await VatHandle . make ( {
353+ kernel : this ,
354+ vatId,
355+ vatConfig,
356+ vatStream,
357+ kernelStore : this . #kernelStore,
358+ logger : vatLogger ,
359+ } ) ,
360+ ) ;
353361 }
354362
355363 /**
@@ -515,14 +523,13 @@ export class Kernel {
515523 * @param item - The message/notification to deliver.
516524 */
517525 async #deliver( item : RunQueueItem ) : Promise < void > {
518- const { log } = console ;
519526 switch ( item . type ) {
520527 case 'send' : {
521528 const route = this . #routeMessage( item ) ;
522529 if ( route ) {
523530 const { vatId, target } = route ;
524531 const { message } = item ;
525- log (
532+ this . #logger . log (
526533 `@@@@ deliver ${ vatId } send ${ target } <-${ JSON . stringify ( message ) } ` ,
527534 ) ;
528535 if ( vatId ) {
@@ -543,7 +550,9 @@ export class Kernel {
543550 } else {
544551 this . #kernelStore. enqueuePromiseMessage ( target , message ) ;
545552 }
546- log ( `@@@@ done ${ vatId } send ${ target } <-${ JSON . stringify ( message ) } ` ) ;
553+ this . #logger. log (
554+ `@@@@ done ${ vatId } send ${ target } <-${ JSON . stringify ( message ) } ` ,
555+ ) ;
547556 }
548557 break ;
549558 }
@@ -555,7 +564,7 @@ export class Kernel {
555564 context === 'kernel' && isPromise ,
556565 `${ kpid } is not a kernel promise` ,
557566 ) ;
558- log ( `@@@@ deliver ${ vatId } notify ${ vatId } ${ kpid } ` ) ;
567+ this . #logger . log ( `@@@@ deliver ${ vatId } notify ${ vatId } ${ kpid } ` ) ;
559568 const promise = this . #kernelStore. getKernelPromise ( kpid ) ;
560569 const { state, value } = promise ;
561570 assert ( value , `no value for promise ${ kpid } ` ) ;
@@ -588,39 +597,39 @@ export class Kernel {
588597 }
589598 const vat = this . #getVat( vatId ) ;
590599 await vat . deliverNotify ( resolutions ) ;
591- log ( `@@@@ done ${ vatId } notify ${ vatId } ${ kpid } ` ) ;
600+ this . #logger . log ( `@@@@ done ${ vatId } notify ${ vatId } ${ kpid } ` ) ;
592601 break ;
593602 }
594603 case 'dropExports' : {
595604 const { vatId, krefs } = item ;
596- log ( `@@@@ deliver ${ vatId } dropExports` , krefs ) ;
605+ this . #logger . log ( `@@@@ deliver ${ vatId } dropExports` , krefs ) ;
597606 const vat = this . #getVat( vatId ) ;
598607 await vat . deliverDropExports ( krefs ) ;
599- log ( `@@@@ done ${ vatId } dropExports` , krefs ) ;
608+ this . #logger . log ( `@@@@ done ${ vatId } dropExports` , krefs ) ;
600609 break ;
601610 }
602611 case 'retireExports' : {
603612 const { vatId, krefs } = item ;
604- log ( `@@@@ deliver ${ vatId } retireExports` , krefs ) ;
613+ this . #logger . log ( `@@@@ deliver ${ vatId } retireExports` , krefs ) ;
605614 const vat = this . #getVat( vatId ) ;
606615 await vat . deliverRetireExports ( krefs ) ;
607- log ( `@@@@ done ${ vatId } retireExports` , krefs ) ;
616+ this . #logger . log ( `@@@@ done ${ vatId } retireExports` , krefs ) ;
608617 break ;
609618 }
610619 case 'retireImports' : {
611620 const { vatId, krefs } = item ;
612- log ( `@@@@ deliver ${ vatId } retireImports` , krefs ) ;
621+ this . #logger . log ( `@@@@ deliver ${ vatId } retireImports` , krefs ) ;
613622 const vat = this . #getVat( vatId ) ;
614623 await vat . deliverRetireImports ( krefs ) ;
615- log ( `@@@@ done ${ vatId } retireImports` , krefs ) ;
624+ this . #logger . log ( `@@@@ done ${ vatId } retireImports` , krefs ) ;
616625 break ;
617626 }
618627 case 'bringOutYourDead' : {
619628 const { vatId } = item ;
620- log ( `@@@@ deliver ${ vatId } bringOutYourDead` ) ;
629+ this . #logger . log ( `@@@@ deliver ${ vatId } bringOutYourDead` ) ;
621630 const vat = this . #getVat( vatId ) ;
622631 await vat . deliverBringOutYourDead ( ) ;
623- log ( `@@@@ done ${ vatId } bringOutYourDead` ) ;
632+ this . #logger . log ( `@@@@ done ${ vatId } bringOutYourDead` ) ;
624633 break ;
625634 }
626635 default :
@@ -813,7 +822,9 @@ export class Kernel {
813822 throw new VatNotFoundError ( vatId ) ;
814823 }
815824 await vat . terminate ( terminating ) ;
816- await this . #vatWorkerService. terminate ( vatId ) . catch ( console . error ) ;
825+ await this . #vatWorkerService. terminate ( vatId ) . catch ( ( error ) => {
826+ this . #logger. error ( 'Error terminating vat worker:' , error ) ;
827+ } ) ;
817828 this . #vats. delete ( vatId ) ;
818829 }
819830
0 commit comments