diff --git a/web/apps/auth/src/services/index.ts b/web/apps/auth/src/services/index.ts index 88c907b55..5fd032215 100644 --- a/web/apps/auth/src/services/index.ts +++ b/web/apps/auth/src/services/index.ts @@ -35,10 +35,7 @@ export const getAuthCodes = async (): Promise => { ); return Code.fromRawData(entity.id, decryptedCode); } catch (e) { - logError( - Error("failed to parse code"), - "codeId = " + entity.id, - ); + log.error(`failed to parse codeId = ${entity.id}`); return null; } }), diff --git a/web/apps/photos/src/components/PhotoFrame.tsx b/web/apps/photos/src/components/PhotoFrame.tsx index 69f70fc96..7f0327d27 100644 --- a/web/apps/photos/src/components/PhotoFrame.tsx +++ b/web/apps/photos/src/components/PhotoFrame.tsx @@ -340,9 +340,9 @@ const PhotoFrame = ({ } } catch (e) { if (e.message !== CustomError.URL_ALREADY_SET) { - logError( - e, + log.error( "updating photoswipe after msrc url update failed", + e, ); } // ignore @@ -392,9 +392,9 @@ const PhotoFrame = ({ } } catch (e) { if (e.message !== CustomError.URL_ALREADY_SET) { - logError( - e, + log.error( "updating photoswipe after for live photo imgSrc update failed", + e, ); } } @@ -426,9 +426,9 @@ const PhotoFrame = ({ } } catch (e) { if (e.message !== CustomError.URL_ALREADY_SET) { - logError( - e, + log.error( "updating photoswipe for live photo complete update failed", + e, ); } } @@ -444,9 +444,9 @@ const PhotoFrame = ({ } } catch (e) { if (e.message !== CustomError.URL_ALREADY_SET) { - logError( - e, + log.error( "updating photoswipe after src url update failed", + e, ); } } @@ -467,15 +467,11 @@ const PhotoFrame = ({ item.metadata.fileType !== FILE_TYPE.VIDEO && item.metadata.fileType !== FILE_TYPE.LIVE_PHOTO ) { - logError( - new Error(), - "getConvertedVideo called for non video file", - ); + log.error("getConvertedVideo called for non video file"); return; } if (item.conversionFailed) { - logError( - new Error(), + log.error( "getConvertedVideo called for file that conversion failed", ); return; @@ -519,9 +515,9 @@ const PhotoFrame = ({ } } catch (e) { if (e.message !== CustomError.URL_ALREADY_SET) { - logError( - e, + log.error( "updating photoswipe after src url update failed", + e, ); } throw e; diff --git a/web/apps/photos/src/components/PhotoViewer/index.tsx b/web/apps/photos/src/components/PhotoViewer/index.tsx index dc505ec51..29da75e53 100644 --- a/web/apps/photos/src/components/PhotoViewer/index.tsx +++ b/web/apps/photos/src/components/PhotoViewer/index.tsx @@ -612,9 +612,10 @@ function PhotoViewer(props: Iprops) { } catch (e) { setExif({ key: file.src, value: null }); const fileExtension = getFileExtension(file.metadata.title); - logError(e, "checkExifAvailable failed", { - extension: fileExtension, - }); + log.error( + `checkExifAvailable failed for extension ${fileExtension}`, + e, + ); } }; diff --git a/web/apps/photos/src/components/Upload/Uploader.tsx b/web/apps/photos/src/components/Upload/Uploader.tsx index a42ef5389..aba58174b 100644 --- a/web/apps/photos/src/components/Upload/Uploader.tsx +++ b/web/apps/photos/src/components/Upload/Uploader.tsx @@ -544,9 +544,9 @@ export default function Uploader(props: Props) { watchFolderService.resumePausedSync(); } } - } catch (err) { - logError(err, "failed to upload files"); - showUserFacingError(err.message); + } catch (e) { + log.error("failed to upload files", e); + showUserFacingError(e.message); closeUploadProgress(); } finally { postUploadAction(); @@ -565,9 +565,9 @@ export default function Uploader(props: Props) { filesWithCollections.collections, uploaderName, ); - } catch (err) { - logError(err, "retry failed files failed"); - showUserFacingError(err.message); + } catch (e) { + log.error("retry failed files failed", e); + showUserFacingError(e.message); closeUploadProgress(); } finally { postUploadAction(); diff --git a/web/apps/photos/src/pages/_app.tsx b/web/apps/photos/src/pages/_app.tsx index d6cb4fa99..6474df4b4 100644 --- a/web/apps/photos/src/pages/_app.tsx +++ b/web/apps/photos/src/pages/_app.tsx @@ -24,7 +24,6 @@ import EnteSpinner from "@ente/shared/components/EnteSpinner"; import { MessageContainer } from "@ente/shared/components/MessageContainer"; import AppNavbar from "@ente/shared/components/Navbar/app"; import { PHOTOS_PAGES as PAGES } from "@ente/shared/constants/pages"; -import { CustomError } from "@ente/shared/error"; import { Events, eventBus } from "@ente/shared/events"; import { useLocalState } from "@ente/shared/hooks/useLocalState"; import { addLogLine } from "@ente/shared/logging"; @@ -268,9 +267,7 @@ export default function App({ Component, pageProps }: AppProps) { const redirectAction = redirectMap.get(redirect); window.location.href = await redirectAction(); } else { - logError(CustomError.BAD_REQUEST, "invalid redirection", { - redirect, - }); + log.error(`invalid redirection ${redirect}`); } }; diff --git a/web/apps/photos/src/pages/gallery/index.tsx b/web/apps/photos/src/pages/gallery/index.tsx index 4a6ff5200..7b918ed64 100644 --- a/web/apps/photos/src/pages/gallery/index.tsx +++ b/web/apps/photos/src/pages/gallery/index.tsx @@ -871,7 +871,7 @@ export default function Gallery() { clearSelection(); await syncWithRemote(false, true); } catch (e) { - logError(e, "collection ops failed", { ops }); + log.error(`collection ops (${ops}) failed`, e); setDialogMessage({ title: t("ERROR"), @@ -916,7 +916,7 @@ export default function Gallery() { clearSelection(); await syncWithRemote(false, true); } catch (e) { - logError(e, "file ops failed", { ops }); + log.error(`file ops (${ops}) failed`, e); setDialogMessage({ title: t("ERROR"), @@ -935,7 +935,7 @@ export default function Gallery() { const collection = await createAlbum(collectionName); await collectionOpsHelper(ops)(collection); } catch (e) { - logError(e, "create and collection ops failed", { ops }); + log.error(`create and collection ops (${ops}) failed`, e); setDialogMessage({ title: t("ERROR"), diff --git a/web/apps/photos/src/services/billingService.ts b/web/apps/photos/src/services/billingService.ts index eee263d60..090eca17c 100644 --- a/web/apps/photos/src/services/billingService.ts +++ b/web/apps/photos/src/services/billingService.ts @@ -147,9 +147,9 @@ class billingService { const { subscription } = response.data; setData(LS_KEYS.SUBSCRIPTION, subscription); return subscription; - } catch (err) { - logError(err, "Error while verifying subscription"); - throw err; + } catch (e) { + log.error("Error while verifying subscription", e); + throw e; } } diff --git a/web/apps/photos/src/services/clipService.ts b/web/apps/photos/src/services/clipService.ts index f6e56ece2..12795e0c8 100644 --- a/web/apps/photos/src/services/clipService.ts +++ b/web/apps/photos/src/services/clipService.ts @@ -224,9 +224,9 @@ class ClipServiceImpl { ); } catch (e) { if (e?.message !== CustomError.REQUEST_CANCELLED) { - logError( - e, + log.error( "failed to extract clip embedding for file", + e, ); } if ( diff --git a/web/apps/photos/src/services/collectionService.ts b/web/apps/photos/src/services/collectionService.ts index 05d6024d3..0812ca8f9 100644 --- a/web/apps/photos/src/services/collectionService.ts +++ b/web/apps/photos/src/services/collectionService.ts @@ -198,9 +198,10 @@ const getCollections = async ( try { return await getCollectionWithSecrets(collection, key); } catch (e) { - logError(e, `decryption failed for collection`, { - collectionID: collection.id, - }); + log.error( + `decryption failed for collection with ID ${collection.id}`, + e, + ); return collection; } }, @@ -1436,7 +1437,7 @@ export const constructUserIDToEmailMap = ( }); return userIDToEmailMap; } catch (e) { - logError("Error Mapping UserId to email:", e); + log.error("Error Mapping UserId to email:", e); return new Map(); } }; diff --git a/web/apps/photos/src/services/download/index.ts b/web/apps/photos/src/services/download/index.ts index d876ed4f4..ed113b7c1 100644 --- a/web/apps/photos/src/services/download/index.ts +++ b/web/apps/photos/src/services/download/index.ts @@ -338,15 +338,9 @@ class DownloadManagerImpl { return generateStreamFromArrayBuffer(decrypted); } catch (e) { if (e.message === CustomError.PROCESSING_FAILED) { - logError(e, "Failed to process file", { - fileID: file.id, - fromMobile: - !!file.metadata.localID || - !!file.metadata.deviceFolder || - !!file.metadata.version, - }); - addLogLine( - `Failed to process file with fileID:${file.id}, localID: ${file.metadata.localID}, version: ${file.metadata.version}, deviceFolder:${file.metadata.deviceFolder} with error: ${e.message}`, + log.error( + `Failed to process file with fileID:${file.id}, localID: ${file.metadata.localID}, version: ${file.metadata.version}, deviceFolder:${file.metadata.deviceFolder}`, + e, ); } throw e; @@ -430,22 +424,9 @@ class DownloadManagerImpl { e.message === CustomError.PROCESSING_FAILED ) { - logError( + log.error( + `Failed to process file ${file.id} from localID: ${file.metadata.localID} version: ${file.metadata.version} deviceFolder:${file.metadata.deviceFolder}`, e, - "Failed to process file", - { - fileID: file.id, - fromMobile: - !!file.metadata - .localID || - !!file.metadata - .deviceFolder || - !!file.metadata - .version, - }, - ); - addLogLine( - `Failed to process file ${file.id} from localID: ${file.metadata.localID} version: ${file.metadata.version} deviceFolder:${file.metadata.deviceFolder} with error: ${e.message}`, ); } throw e; @@ -471,22 +452,9 @@ class DownloadManagerImpl { e.message === CustomError.PROCESSING_FAILED ) { - logError( + log.error( + `Failed to process file ${file.id} from localID: ${file.metadata.localID} version: ${file.metadata.version} deviceFolder:${file.metadata.deviceFolder}`, e, - "Failed to process file", - { - fileID: file.id, - fromMobile: - !!file.metadata - .localID || - !!file.metadata - .deviceFolder || - !!file.metadata - .version, - }, - ); - addLogLine( - `Failed to process file ${file.id} from localID: ${file.metadata.localID} version: ${file.metadata.version} deviceFolder:${file.metadata.deviceFolder} with error: ${e.message}`, ); } throw e; diff --git a/web/apps/photos/src/services/embeddingService.ts b/web/apps/photos/src/services/embeddingService.ts index e7a2da8bc..882cdd16c 100644 --- a/web/apps/photos/src/services/embeddingService.ts +++ b/web/apps/photos/src/services/embeddingService.ts @@ -1,7 +1,6 @@ import log from "@/next/log"; import ComlinkCryptoWorker from "@ente/shared/crypto"; import { CustomError } from "@ente/shared/error"; -import { addLogLine } from "@ente/shared/logging"; import HTTPService from "@ente/shared/network/HTTPService"; import { getEndpoint } from "@ente/shared/network/api"; import localForage from "@ente/shared/storage/localForage"; @@ -68,10 +67,10 @@ export const syncEmbeddings = async (models: Model[] = [Model.ONNX_CLIP]) => { fileIdToKeyMap.set(file.id, file.key); }); await cleanupDeletedEmbeddings(allLocalFiles, allEmbeddings); - addLogLine(`Syncing embeddings localCount: ${allEmbeddings.length}`); + log.info(`Syncing embeddings localCount: ${allEmbeddings.length}`); for (const model of models) { let modelLastSinceTime = await getModelEmbeddingSyncTime(model); - addLogLine( + log.info( `Syncing ${model} model's embeddings sinceTime: ${modelLastSinceTime}`, ); let response: GetEmbeddingDiffResponse; @@ -107,18 +106,13 @@ export const syncEmbeddings = async (models: Model[] = [Model.ONNX_CLIP]) => { embedding: decryptedData, } as Embedding; } catch (e) { - let info: Record; + let hasHiddenAlbums = false; if (e.message === CustomError.FILE_NOT_FOUND) { - const hasHiddenAlbums = - hiddenAlbums?.length > 0; - info = { - hasHiddenAlbums, - }; + hasHiddenAlbums = hiddenAlbums?.length > 0; } - logError( + log.error( + `decryptEmbedding failed for file (hasHiddenAlbums: ${hasHiddenAlbums})`, e, - "decryptEmbedding failed for file", - info, ); } }), @@ -132,7 +126,7 @@ export const syncEmbeddings = async (models: Model[] = [Model.ONNX_CLIP]) => { } await localForage.setItem(EMBEDDINGS_TABLE, allEmbeddings); await setModelEmbeddingSyncTime(model, modelLastSinceTime); - addLogLine( + log.info( `Syncing embeddings syncedEmbeddingsCount: ${allEmbeddings.length}`, ); } while (response.diff.length === DIFF_LIMIT); @@ -205,7 +199,7 @@ export const cleanupDeletedEmbeddings = async ( activeFileIds.has(embedding.fileID), ); if (allLocalEmbeddings.length !== remainingEmbeddings.length) { - addLogLine( + log.info( `cleanupDeletedEmbeddings embeddingsCount: ${allLocalEmbeddings.length} remainingEmbeddingsCount: ${remainingEmbeddings.length}`, ); await localForage.setItem(EMBEDDINGS_TABLE, remainingEmbeddings); diff --git a/web/apps/photos/src/services/fileService.ts b/web/apps/photos/src/services/fileService.ts index 14c3eaf56..b96ee0fb7 100644 --- a/web/apps/photos/src/services/fileService.ts +++ b/web/apps/photos/src/services/fileService.ts @@ -53,13 +53,14 @@ const setLocalFiles = async (type: "normal" | "hidden", files: EnteFile[]) => { } catch (e1) { try { const storageEstimate = await navigator.storage.estimate(); - logError(e1, "failed to save files to indexedDB", { - storageEstimate, - }); + log.error( + `failed to save files to indexedDB (storageEstimate was ${storageEstimate}`, + e1, + ); addLogLine(`storage estimate ${JSON.stringify(storageEstimate)}`); } catch (e2) { - logError(e1, "failed to save files to indexedDB"); - logError(e2, "failed to get storage stats"); + log.error("failed to save files to indexedDB", e1); + log.error("failed to get storage stats", e2); } throw e1; } diff --git a/web/apps/photos/src/services/heic-convert/service.ts b/web/apps/photos/src/services/heic-convert/service.ts index 76f174c4d..b5b98cd2c 100644 --- a/web/apps/photos/src/services/heic-convert/service.ts +++ b/web/apps/photos/src/services/heic-convert/service.ts @@ -65,17 +65,19 @@ class HEICConverter { }, ); if (!convertedHEIC || convertedHEIC?.size === 0) { - logError( - Error(`converted heic fileSize is Zero`), - "converted heic fileSize is Zero", - { - originalFileSize: convertBytesToHumanReadable( - fileBlob?.size ?? 0, - ), - convertedFileSize: convertBytesToHumanReadable( - convertedHEIC?.size ?? 0, - ), - }, + log.error( + `converted heic fileSize is Zero - ${JSON.stringify( + { + originalFileSize: + convertBytesToHumanReadable( + fileBlob?.size ?? 0, + ), + convertedFileSize: + convertBytesToHumanReadable( + convertedHEIC?.size ?? 0, + ), + }, + )}`, ); } await new Promise((resolve) => { diff --git a/web/apps/photos/src/services/upload/exifService.ts b/web/apps/photos/src/services/upload/exifService.ts index 1f359fe9d..a26075b3a 100644 --- a/web/apps/photos/src/services/upload/exifService.ts +++ b/web/apps/photos/src/services/upload/exifService.ts @@ -67,13 +67,15 @@ export async function getParsedExifData( return parseExifData(filteredExifData); } catch (e) { if (e.message === EXIFR_UNSUPPORTED_FILE_FORMAT_MESSAGE) { - logError(e, "exif library unsupported format", { - fileType: fileTypeInfo.exactType, - }); + log.error( + `exif library unsupported format ${fileTypeInfo.exactType}`, + e, + ); } else { - logError(e, "get parsed exif data failed", { - fileType: fileTypeInfo.exactType, - }); + log.error( + `get parsed exif data failed for file type ${fileTypeInfo.exactType}`, + e, + ); throw e; } } @@ -128,13 +130,13 @@ function parseExifData(exifData: RawEXIFData): ParsedEXIFData { parsedExif.imageWidth = ImageWidth; parsedExif.imageHeight = ImageHeight; } else { - logError( - new Error("ImageWidth or ImageHeight is not a number"), - "Image dimension parsing failed", - { - ImageWidth, - ImageHeight, - }, + log.error( + `Image dimension parsing failed - ImageWidth or ImageHeight is not a number ${JSON.stringify( + { + ImageWidth, + ImageHeight, + }, + )}`, ); } } else if (ExifImageWidth && ExifImageHeight) { @@ -145,13 +147,13 @@ function parseExifData(exifData: RawEXIFData): ParsedEXIFData { parsedExif.imageWidth = ExifImageWidth; parsedExif.imageHeight = ExifImageHeight; } else { - logError( - new Error("ExifImageWidth or ExifImageHeight is not a number"), - "Image dimension parsing failed", - { - ExifImageWidth, - ExifImageHeight, - }, + log.error( + `Image dimension parsing failed - ExifImageWidth or ExifImageHeight is not a number ${JSON.stringify( + { + ExifImageWidth, + ExifImageHeight, + }, + )}`, ); } } else if (PixelXDimension && PixelYDimension) { @@ -162,13 +164,13 @@ function parseExifData(exifData: RawEXIFData): ParsedEXIFData { parsedExif.imageWidth = PixelXDimension; parsedExif.imageHeight = PixelYDimension; } else { - logError( - new Error("PixelXDimension or PixelYDimension is not a number"), - "Image dimension parsing failed", - { - PixelXDimension, - PixelYDimension, - }, + log.error( + `Image dimension parsing failed - PixelXDimension or PixelYDimension is not a number ${JSON.stringify( + { + PixelXDimension, + PixelYDimension, + }, + )}`, ); } } @@ -229,9 +231,7 @@ function parseEXIFDate(dateTimeString: string) { } return date; } catch (e) { - logError(e, "parseEXIFDate failed", { - dateTimeString, - }); + log.error(`Failed to parseEXIFDate ${dateTimeString}`, e); return null; } } @@ -265,12 +265,15 @@ export function parseEXIFLocation( ); return { latitude, longitude }; } catch (e) { - logError(e, "parseEXIFLocation failed", { - gpsLatitude, - gpsLatitudeRef, - gpsLongitude, - gpsLongitudeRef, - }); + log.error( + `Failed to parseEXIFLocation ${JSON.stringify({ + gpsLatitude, + gpsLatitudeRef, + gpsLongitude, + gpsLongitudeRef, + })}`, + e, + ); return NULL_LOCATION; } } diff --git a/web/apps/photos/src/services/upload/livePhotoService.ts b/web/apps/photos/src/services/upload/livePhotoService.ts index 56cf6e196..392b5b9c8 100644 --- a/web/apps/photos/src/services/upload/livePhotoService.ts +++ b/web/apps/photos/src/services/upload/livePhotoService.ts @@ -265,15 +265,13 @@ function areFilesLivePhotoAssets( ) { return true; } else { - logError( - new Error(CustomError.TOO_LARGE_LIVE_PHOTO_ASSETS), - CustomError.TOO_LARGE_LIVE_PHOTO_ASSETS, - { + log.error( + `${CustomError.TOO_LARGE_LIVE_PHOTO_ASSETS} - ${JSON.stringify({ fileSizes: [ firstFileIdentifier.size, secondFileIdentifier.size, ], - }, + })}`, ); } } diff --git a/web/apps/photos/src/services/upload/thumbnailService.ts b/web/apps/photos/src/services/upload/thumbnailService.ts index fba23d8f4..df270b478 100644 --- a/web/apps/photos/src/services/upload/thumbnailService.ts +++ b/web/apps/photos/src/services/upload/thumbnailService.ts @@ -30,7 +30,7 @@ export async function generateThumbnail( fileTypeInfo: FileTypeInfo, ): Promise<{ thumbnail: Uint8Array; hasStaticThumbnail: boolean }> { try { - addLogLine(`generating thumbnail for ${getFileNameSize(file)}`); + log.info(`generating thumbnail for ${getFileNameSize(file)}`); let hasStaticThumbnail = false; let thumbnail: Uint8Array; try { @@ -40,32 +40,26 @@ export async function generateThumbnail( thumbnail = await generateVideoThumbnail(file, fileTypeInfo); } if (thumbnail.length > 1.5 * MAX_THUMBNAIL_SIZE) { - logError( - Error("thumbnail_too_large"), - "thumbnail greater than max limit", - { + log.error( + `thumbnail greater than max limit - ${JSON.stringify({ thumbnailSize: convertBytesToHumanReadable( thumbnail.length, ), fileSize: convertBytesToHumanReadable(file.size), fileType: fileTypeInfo.exactType, - }, + })}`, ); } if (thumbnail.length === 0) { throw Error("EMPTY THUMBNAIL"); } - addLogLine( + log.info( `thumbnail successfully generated ${getFileNameSize(file)}`, ); } catch (e) { - logError(e, "uploading static thumbnail", { - fileFormat: fileTypeInfo.exactType, - }); - addLogLine( - `thumbnail generation failed ${getFileNameSize(file)} error: ${ - e.message - }`, + log.error( + `thumbnail generation failed ${getFileNameSize(file)} with format ${fileTypeInfo.exactType}`, + e, ); thumbnail = Uint8Array.from(atob(BLACK_THUMBNAIL_BASE64), (c) => c.charCodeAt(0), @@ -213,9 +207,10 @@ async function generateVideoThumbnail( file, )} error: ${e.message}`, ); - logError(e, "failed to generate thumbnail using ffmpeg", { - fileFormat: fileTypeInfo.exactType, - }); + log.error( + `failed to generate thumbnail using ffmpeg for format ${fileTypeInfo.exactType}`, + e, + ); thumbnail = await generateVideoThumbnailUsingCanvas(file); } return thumbnail; @@ -265,7 +260,7 @@ export async function generateVideoThumbnailUsingCanvas( const err = Error( `${CustomError.THUMBNAIL_GENERATION_FAILED} err: ${e}`, ); - logError(e, CustomError.THUMBNAIL_GENERATION_FAILED); + log.error(CustomError.THUMBNAIL_GENERATION_FAILED, e); reject(err); } }); diff --git a/web/apps/photos/src/services/upload/uploadHttpClient.ts b/web/apps/photos/src/services/upload/uploadHttpClient.ts index 3dadaad1f..7ba35dc0d 100644 --- a/web/apps/photos/src/services/upload/uploadHttpClient.ts +++ b/web/apps/photos/src/services/upload/uploadHttpClient.ts @@ -156,7 +156,7 @@ class UploadHttpClient { ); if (!resp?.headers?.etag) { const err = Error(CustomError.ETAG_MISSING); - logError(err, "putFile in parts failed"); + log.error("putFile in parts failed", err); throw err; } return resp; @@ -188,7 +188,7 @@ class UploadHttpClient { ); if (!resp?.data?.etag) { const err = Error(CustomError.ETAG_MISSING); - logError(err, "putFile in parts failed"); + log.error("putFile in parts failed", err); throw err; } return resp; diff --git a/web/apps/photos/src/utils/user/family.ts b/web/apps/photos/src/utils/user/family.ts index d47a8042a..b0f90cbaf 100644 --- a/web/apps/photos/src/utils/user/family.ts +++ b/web/apps/photos/src/utils/user/family.ts @@ -1,3 +1,4 @@ +import log from "@/next/log"; import { LS_KEYS, getData } from "@ente/shared/storage/localStorage"; import { User } from "@ente/shared/user/types"; import { FamilyData, FamilyMember } from "types/user"; @@ -28,11 +29,8 @@ export function getFamilyPlanAdmin(familyData: FamilyData): FamilyMember { if (isPartOfFamily(familyData)) { return familyData.members.find((x) => x.isAdmin); } else { - logError( - Error( - "verify user is part of family plan before calling this method", - ), - "invalid getFamilyPlanAdmin call", + log.error( + "invalid getFamilyPlanAdmin call - verify user is part of family plan before calling this method", ); } } diff --git a/web/packages/next/i18n.ts b/web/packages/next/i18n.ts index 11a0e532e..913ecf746 100644 --- a/web/packages/next/i18n.ts +++ b/web/packages/next/i18n.ts @@ -1,5 +1,5 @@ import { isDevBuild } from "@/next/env"; -import { logError } from "@/utils/logging"; +import log from "@/next/log"; import { includes } from "@/utils/type-guards"; import { getUserLocales } from "get-user-locale"; import i18n from "i18next"; @@ -154,7 +154,7 @@ const savedLocaleStringMigratingIfNeeded = (): SupportedLocale | undefined => { } catch (e) { // Not a valid JSON, or not in the format we expected it. This shouldn't // have happened, we're the only one setting it. - logError("Failed to parse locale obtained from local storage", e); + log.error("Failed to parse locale obtained from local storage", e); // Also remove the old key, it is not parseable by us anymore. localStorage.removeItem("locale"); return undefined; @@ -241,7 +241,7 @@ export const getLocaleInUse = (): SupportedLocale => { return locale; } else { // This shouldn't have happened. Log an error to attract attention. - logError( + log.error( `Expected the i18next locale to be one of the supported values, but instead found ${locale}`, ); return defaultLocale;