123456789101112131415161718192021222324252627282930313233343536373839 |
- /**
- * Log an error
- *
- * The {@link message} property describes what went wrong. Generally (but not
- * always) in such situations we also have an "error" object that has specific
- * details about the issue - that gets passed as the second parameter.
- *
- * Note that the "error" {@link e} is not typed. This is because in JavaScript
- * any arbitrary value can be thrown. So this function allows us to pass it an
- * arbitrary value as the error, and will internally figure out how best to deal
- * with it.
- *
- * Where and how this error gets logged is dependent on where this code is
- * running. The default implementation logs a string to the console, but in
- * practice the layers above us will use the hooks provided in this file to
- * route and show this error elsewhere.
- *
- * TODO (MR): Currently this is a placeholder function to funnel error logs
- * through. This needs to do what the existing logError in @ente/shared does,
- * but it cannot have a direct Electron/Sentry dependency here. For now, we just
- * log on the console.
- */
- export const logError = (message: string, e?: unknown) => {
- if (e === undefined || e === null) {
- console.error(message);
- return;
- }
- let es: string;
- if (e instanceof Error) {
- // In practice, we expect ourselves to be called with Error objects, so
- // this is the happy path so to say.
- es = `${e.name}: ${e.message}\n${e.stack}`;
- } else {
- // For the rest rare cases, use the default string serialization of e.
- es = String(e);
- }
- console.error(`${message}: ${es}`);
- };
|