From cada1a75d4fe66095bff4ab01407ba0bce4e8bba Mon Sep 17 00:00:00 2001 From: Sami Tiilikainen <97873007+samitiilikainen@users.noreply.github.com> Date: Fri, 9 Dec 2022 09:02:00 +0200 Subject: [PATCH] Renderer logging to file Related to https://github.com/lensapp/support-lens-extension/issues/118 --- src/renderer/bootstrap.tsx | 3 ++ .../logger/add-file-logging.injectable.ts | 29 +++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 src/renderer/logger/add-file-logging.injectable.ts diff --git a/src/renderer/bootstrap.tsx b/src/renderer/bootstrap.tsx index ea3899b566..1c47d37219 100644 --- a/src/renderer/bootstrap.tsx +++ b/src/renderer/bootstrap.tsx @@ -45,6 +45,7 @@ import autoRegistrationInjectable from "../common/k8s-api/api-manager/auto-regis import assert from "assert"; import startFrameInjectable from "./start-frame/start-frame.injectable"; import initializeSentryReportingWithInjectable from "../common/error-reporting/initialize-sentry-reporting.injectable"; +import addFileLoggingInjectable from "./logger/add-file-logging.injectable"; configurePackages(); // global packages registerCustomThemes(); // monaco editor themes @@ -91,6 +92,8 @@ export async function bootstrap(di: DiContainer) { */ di.inject(autoRegistrationInjectable); + di.inject(addFileLoggingInjectable); + await attachChromeDebugger(); rootElem.classList.toggle("is-mac", isMac); diff --git a/src/renderer/logger/add-file-logging.injectable.ts b/src/renderer/logger/add-file-logging.injectable.ts new file mode 100644 index 0000000000..46d0dbe53a --- /dev/null +++ b/src/renderer/logger/add-file-logging.injectable.ts @@ -0,0 +1,29 @@ +/** + * 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 { transports } from "winston"; +import type winston from "winston"; +import directoryForLogsInjectable from "../../common/app-paths/directory-for-logs.injectable"; +import loggerInjectable from "../../common/logger.injectable"; + +const addFileLoggingInjectable = getInjectable({ + id: "add-renderer-file-logger-transport", + causesSideEffects: true, + instantiate: (di) => { + const logger = di.inject(loggerInjectable) as winston.Logger; + + return logger.add(new transports.File({ + handleExceptions: false, + level: "debug", + filename: "lens-renderer.log", + dirname: di.inject(directoryForLogsInjectable), + maxsize: 1024 * 1024, + maxFiles: 1, + tailable: true, + })); + }, +}); + +export default addFileLoggingInjectable;