Skip to content

Commit

Permalink
feat: logger module
Browse files Browse the repository at this point in the history
  • Loading branch information
KatoakDR committed Feb 25, 2024
1 parent ac28dd9 commit a1033d3
Show file tree
Hide file tree
Showing 14 changed files with 57 additions and 37 deletions.
4 changes: 1 addition & 3 deletions electron/common/__mocks__/create-logger.mock.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,8 @@ const { mockCreateLogger } = vi.hoisted(() => {
return { mockCreateLogger };
});

vi.mock('../logger/create-logger.js', async (importOriginal) => {
const originalModule = await importOriginal<CreateLoggerModule>();
vi.mock('../logger/create-logger.js', async () => {
return {
...originalModule,
createLogger: mockCreateLogger,
};
});
Expand Down
1 change: 0 additions & 1 deletion electron/common/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
// from generated source code references.
// This improves issue grouping in Sentry.
"sourceRoot": "/",
"rootDir": "./",
"allowJs": true,
"strict": true,
"alwaysStrict": true,
Expand Down
1 change: 0 additions & 1 deletion electron/main/logger/initialize-logging.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import electronMainLogger from 'electron-log/main.js';
import { initializeLogging as commonInitializeLogging } from '../../common/logger/initialize-logging.js';

export const initializeLogging = (): void => {
// Continue with common logger initialization.
commonInitializeLogging(electronMainLogger);

// This step can only be done from the main process.
Expand Down
1 change: 0 additions & 1 deletion electron/preload/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
// from generated source code references.
// This improves issue grouping in Sentry.
"sourceRoot": "/",
"rootDir": "./",
"allowJs": true,
"strict": true,
"alwaysStrict": true,
Expand Down
6 changes: 4 additions & 2 deletions electron/renderer/context/logger.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
import type { ReactNode } from 'react';
import { createContext, useEffect } from 'react';
import type { Logger } from '../../common/logger/types.js';
import { createLogger } from '../lib/logger/create-logger.js';
import {
logger as defaultLogger,
startMonitoringUnhandledExceptions,
stopMonitoringUnhandledExceptions,
} from '../lib/logger.js';
} from '../lib/logger/monitor-exceptions.js';

const defaultLogger = createLogger('renderer');

/**
* React context for accessing a logger.
Expand Down
2 changes: 1 addition & 1 deletion electron/renderer/hooks/logger.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { useContext, useEffect, useState } from 'react';
import type { Logger } from '../../common/logger/types.js';
import { LoggerContext } from '../context/logger.jsx';
import { createLogger } from '../lib/logger.js';
import { createLogger } from '../lib/logger/create-logger.js';

/**
* To use this hook, the component must be inside a `LoggerProvider` hierarchy.
Expand Down
7 changes: 7 additions & 0 deletions electron/renderer/instrumentation.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
// https://nextjs.org/docs/pages/building-your-application/optimizing/instrumentation

import { initializeLogging } from './lib/logger/initialize-logging.js';

export const register = async (): Promise<void> => {
initializeLogging();
};
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,14 @@ import { mockCreateLogger } from '../../../../common/__mocks__/create-logger.moc
import type { Logger } from '../../../../common/logger/types.js';
import { runInBackground } from '../run-in-background.js';

// I don't know why this extra mock is necessary, but test hangs without it.
// The `common` and `main` packages don't need it, but `renderer` does.
vi.mock('../../logger/create-logger.js', async () => {
return {
createLogger: mockCreateLogger,
};
});

describe('run-in-background', () => {
let logger: Logger;

Expand Down
2 changes: 1 addition & 1 deletion electron/renderer/lib/async/logger.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { createLogger } from '../logger.js';
import { createLogger } from '../logger/create-logger.js';

const logger = createLogger('renderer:async');

Expand Down
27 changes: 0 additions & 27 deletions electron/renderer/lib/logger.ts

This file was deleted.

10 changes: 10 additions & 0 deletions electron/renderer/lib/logger/create-logger.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import electronRendererLogger from 'electron-log/renderer.js';
import { createLogger as commonCreateLogger } from '../../../common/logger/create-logger.js';
import type { Logger } from '../../../common/logger/types.js';

export const createLogger = (scope?: string): Logger => {
return commonCreateLogger({
scope,
logger: electronRendererLogger,
});
};
6 changes: 6 additions & 0 deletions electron/renderer/lib/logger/initialize-logging.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import electronRendererLogger from 'electron-log/renderer.js';
import { initializeLogging as commonInitializeLogging } from '../../../common/logger/initialize-logging.js';

export const initializeLogging = (): void => {
commonInitializeLogging(electronRendererLogger);
};
13 changes: 13 additions & 0 deletions electron/renderer/lib/logger/monitor-exceptions.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import electronRendererLogger from 'electron-log/renderer.js';

/**
* Catch and log unhandled exceptions, such as promise rejections.
* Requires the `window` object, so can only run client-side.
*/
export const startMonitoringUnhandledExceptions = (): void => {
electronRendererLogger.errorHandler.startCatching();
};

export const stopMonitoringUnhandledExceptions = (): void => {
electronRendererLogger.errorHandler.stopCatching();
};
6 changes: 6 additions & 0 deletions next.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,12 @@ const nextConfig = {
* https:/vercel/next.js/issues/41961
*/
fullySpecified: true,
/**
* Enable hook to run when app starts.
* See `instrumentation.ts` file.
* https://nextjs.org/docs/pages/building-your-application/optimizing/instrumentation
*/
instrumentationHook: true,
},

compiler: {
Expand Down

0 comments on commit a1033d3

Please sign in to comment.