diff --git a/packages/core/src/renderer/bootstrap.tsx b/packages/core/src/renderer/bootstrap.tsx index f509847c74..3fc23120a6 100644 --- a/packages/core/src/renderer/bootstrap.tsx +++ b/packages/core/src/renderer/bootstrap.tsx @@ -19,6 +19,7 @@ import { Router } from "react-router"; import historyInjectable from "./navigation/history.injectable"; import assert from "assert"; import startFrameInjectable from "./start-frame/start-frame.injectable"; +import closeRendererLogFileInjectable from "./logger/close-renderer-log-file.injectable"; export async function bootstrap(di: DiContainer) { const startFrame = di.inject(startFrameInjectable); @@ -54,7 +55,15 @@ export async function bootstrap(di: DiContainer) { } try { - await initializeApp(() => unmountComponentAtNode(rootElem)); + const unmount = () => { + const closeLogFile = di.inject(closeRendererLogFileInjectable); + + closeLogFile(); + + unmountComponentAtNode(rootElem); + }; + + await initializeApp(unmount); } catch (error) { console.error(`[BOOTSTRAP]: view initialization error: ${error}`, { origin: location.href, diff --git a/packages/core/src/renderer/logger/close-renderer-log-file.injectable.ts b/packages/core/src/renderer/logger/close-renderer-log-file.injectable.ts new file mode 100644 index 0000000000..b47e2572a8 --- /dev/null +++ b/packages/core/src/renderer/logger/close-renderer-log-file.injectable.ts @@ -0,0 +1,19 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import { getInjectable } from "@ogre-tools/injectable"; +import rendererFileLoggerTransportInjectable from "./file-transport.injectable"; + +const closeRendererLogFileInjectable = getInjectable({ + id: "close-renderer-log-file", + instantiate: (di) => { + const fileLoggingTransport = di.inject(rendererFileLoggerTransportInjectable); + + return () => { + fileLoggingTransport.close?.(); + }; + }, +}); + +export default closeRendererLogFileInjectable;