diff --git a/packages/open-next/src/adapters/cache.ts b/packages/open-next/src/adapters/cache.ts index 55a09f99..437f3d8c 100644 --- a/packages/open-next/src/adapters/cache.ts +++ b/packages/open-next/src/adapters/cache.ts @@ -234,7 +234,7 @@ export default class S3Cache { }, } as CacheHandlerValue; } else { - error("Unknown cache type", cacheData); + warn("Unknown cache type", cacheData); return null; } } catch (e) { @@ -490,7 +490,7 @@ export default class S3Cache { ); return result; } catch (e) { - error("This error can usually be ignored : ", e); + warn("This error can usually be ignored : ", e); return { Body: null, LastModified: null }; } } diff --git a/packages/open-next/src/adapters/logger.ts b/packages/open-next/src/adapters/logger.ts index a2e37e84..f09666ae 100644 --- a/packages/open-next/src/adapters/logger.ts +++ b/packages/open-next/src/adapters/logger.ts @@ -12,7 +12,44 @@ export function warn(...args: any[]) { console.warn(...args); } +interface AwsSdkClientCommandErrorLog { + clientName: string; + commandName: string; + error: Error & { Code?: string }; +} + +type AwsSdkClientCommandErrorInput = Pick< + AwsSdkClientCommandErrorLog, + "clientName" | "commandName" +> & { + errorName: string; +}; + +const DOWNPLAYED_ERROR_LOGS: AwsSdkClientCommandErrorInput[] = [ + { + clientName: "S3Client", + commandName: "GetObjectCommand", + errorName: "NoSuchKey", + }, +]; + +const isDownplayedErrorLog = (errorLog: AwsSdkClientCommandErrorLog) => + DOWNPLAYED_ERROR_LOGS.some( + (downplayedInput) => + downplayedInput.clientName === errorLog?.clientName && + downplayedInput.commandName === errorLog?.commandName && + (downplayedInput.errorName === errorLog?.error?.name || + downplayedInput.errorName === errorLog?.error?.Code), + ); + export function error(...args: any[]) { + if ( + args.some((arg: AwsSdkClientCommandErrorLog) => isDownplayedErrorLog(arg)) + ) { + warn(...args); + return; + } + console.error(...args); }