@@ -36,6 +36,8 @@ export type WorkerCatalog = {
3636 retry ?: RetryOptions ;
3737 cron ?: string ;
3838 jitterInMs ?: number ;
39+ /** Defaults to true. If false, errors will not be logged. */
40+ logErrors ?: boolean ;
3941 } ;
4042} ;
4143
@@ -541,12 +543,12 @@ class Worker<TCatalog extends WorkerCatalog> {
541543 const catalogItem = this . options . catalog [ job as any ] ;
542544 const handler = this . jobs [ job as any ] ;
543545 if ( ! handler ) {
544- this . logger . error ( `No handler found for job type: ${ job } ` ) ;
546+ this . logger . error ( `Worker no handler found for job type: ${ job } ` ) ;
545547 return ;
546548 }
547549
548550 if ( ! catalogItem ) {
549- this . logger . error ( `No catalog item found for job type: ${ job } ` ) ;
551+ this . logger . error ( `Worker no catalog item found for job type: ${ job } ` ) ;
550552 return ;
551553 }
552554
@@ -590,15 +592,25 @@ class Worker<TCatalog extends WorkerCatalog> {
590592 }
591593 ) . catch ( async ( error ) => {
592594 const errorMessage = error instanceof Error ? error . message : String ( error ) ;
593- this . logger . error ( `Error processing item:` , {
595+
596+ const shouldLogError = catalogItem . logErrors ?? true ;
597+
598+ const logAttributes = {
594599 name : this . options . name ,
595600 id,
596601 job,
597602 item,
598603 visibilityTimeoutMs,
599604 error,
600605 errorMessage,
601- } ) ;
606+ } ;
607+
608+ if ( shouldLogError ) {
609+ this . logger . error ( `Worker error processing item` , logAttributes ) ;
610+ } else {
611+ this . logger . info ( `Worker failed to process item` , logAttributes ) ;
612+ }
613+
602614 // Attempt requeue logic.
603615 try {
604616 const newAttempt = attempt + 1 ;
@@ -609,7 +621,7 @@ class Worker<TCatalog extends WorkerCatalog> {
609621 const retryDelay = calculateNextRetryDelay ( retrySettings , newAttempt ) ;
610622
611623 if ( ! retryDelay ) {
612- this . logger . error ( `Item ${ id } reached max attempts. Moving to DLQ.` , {
624+ this . logger . error ( `Worker item reached max attempts. Moving to DLQ.` , {
613625 name : this . options . name ,
614626 id,
615627 job,
@@ -629,7 +641,7 @@ class Worker<TCatalog extends WorkerCatalog> {
629641 }
630642
631643 const retryDate = new Date ( Date . now ( ) + retryDelay ) ;
632- this . logger . info ( `Requeuing failed item ${ id } with delay` , {
644+ this . logger . info ( `Worker requeuing failed item with delay` , {
633645 name : this . options . name ,
634646 id,
635647 job,
@@ -649,7 +661,7 @@ class Worker<TCatalog extends WorkerCatalog> {
649661 } ) ;
650662 } catch ( requeueError ) {
651663 this . logger . error (
652- `Failed to requeue item ${ id } . It will be retried after the visibility timeout.` ,
664+ `Worker failed to requeue item. It will be retried after the visibility timeout.` ,
653665 {
654666 name : this . options . name ,
655667 id,
0 commit comments