Skip to content

Commit 8dd1d1a

Browse files
authored
Add winston formatting support for error causes (#6576)
* Add winston formatting support for error causes Signed-off-by: Sebastian Malton <[email protected]> * Fix failing to run built version - Finally make logger fully injectable - Simplify startMainApplication to only have runMany(Sync) invocations to fix time of use bugs related to logger Signed-off-by: Sebastian Malton <[email protected]> * Remove legacy type enforced ipc to fix tests Signed-off-by: Sebastian Malton <[email protected]> * Fix type error Signed-off-by: Sebastian Malton <[email protected]> Signed-off-by: Sebastian Malton <[email protected]>
1 parent a4d0451 commit 8dd1d1a

28 files changed

+545
-507
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,6 @@
290290
"uuid": "^8.3.2",
291291
"win-ca": "^3.5.0",
292292
"winston": "^3.8.2",
293-
"winston-console-format": "^1.0.8",
294293
"winston-transport-browserconsole": "^1.0.5",
295294
"ws": "^8.11.0",
296295
"xterm-link-provider": "^1.3.1"
@@ -366,6 +365,7 @@
366365
"@typescript-eslint/parser": "^5.43.0",
367366
"adr": "^1.4.3",
368367
"ansi_up": "^5.1.0",
368+
"chalk": "^4.1.2",
369369
"chart.js": "^2.9.4",
370370
"circular-dependency-plugin": "^5.2.2",
371371
"cli-progress": "^3.11.2",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/**
2+
* Copyright (c) OpenLens Authors. All rights reserved.
3+
* Licensed under MIT License. See LICENSE in root directory for more information.
4+
*/
5+
import { getInjectable } from "@ogre-tools/injectable";
6+
import appPathsInjectable from "./app-paths.injectable";
7+
8+
const directoryForLogsInjectable = getInjectable({
9+
id: "directory-for-logs",
10+
instantiate: (di) => di.inject(appPathsInjectable).logs,
11+
});
12+
13+
export default directoryForLogsInjectable;

src/common/ipc/__tests__/type-enforced-ipc.test.ts

-131
This file was deleted.

src/common/ipc/index.ts

-1
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,3 @@
55

66
export * from "./ipc";
77
export * from "./invalid-kubeconfig";
8-
export * from "./type-enforced-ipc";

src/common/ipc/type-enforced-ipc.ts

-107
This file was deleted.

src/common/logger.injectable.ts

+9-2
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,19 @@
33
* Licensed under MIT License. See LICENSE in root directory for more information.
44
*/
55
import { getInjectable } from "@ogre-tools/injectable";
6+
import { createLogger, format } from "winston";
67
import type { Logger } from "./logger";
7-
import logger from "./logger";
8+
import { loggerTransportInjectionToken } from "./logger/transports";
89

910
const loggerInjectable = getInjectable({
1011
id: "logger",
11-
instantiate: (): Logger => logger,
12+
instantiate: (di): Logger => createLogger({
13+
format: format.combine(
14+
format.splat(),
15+
format.simple(),
16+
),
17+
transports: di.injectMany(loggerTransportInjectionToken),
18+
}),
1219
});
1320

1421
export default loggerInjectable;

src/common/logger.ts

+6-67
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,8 @@
33
* Licensed under MIT License. See LICENSE in root directory for more information.
44
*/
55

6-
import { app, ipcMain } from "electron";
7-
import winston, { format } from "winston";
8-
import type Transport from "winston-transport";
9-
import { consoleFormat } from "winston-console-format";
10-
import { isDebugging, isTestEnv } from "./vars";
11-
import BrowserConsole from "winston-transport-browserconsole";
6+
import { asLegacyGlobalForExtensionApi } from "../extensions/as-legacy-globals-for-extension-api/as-legacy-global-object-for-extension-api";
7+
import loggerInjectable from "./logger.injectable";
128

139
export interface Logger {
1410
info: (message: string, ...args: any) => void;
@@ -18,64 +14,7 @@ export interface Logger {
1814
silly: (message: string, ...args: any) => void;
1915
}
2016

21-
const logLevel = process.env.LOG_LEVEL
22-
? process.env.LOG_LEVEL
23-
: isDebugging
24-
? "debug"
25-
: isTestEnv
26-
? "error"
27-
: "info";
28-
29-
const transports: Transport[] = [];
30-
31-
if (ipcMain) {
32-
transports.push(
33-
new winston.transports.Console({
34-
handleExceptions: false,
35-
level: logLevel,
36-
format: format.combine(
37-
format.colorize({ level: true, message: false }),
38-
format.padLevels(),
39-
format.ms(),
40-
consoleFormat({
41-
showMeta: true,
42-
inspectOptions: {
43-
depth: 4,
44-
colors: true,
45-
maxArrayLength: 10,
46-
breakLength: 120,
47-
compact: Infinity,
48-
},
49-
}),
50-
),
51-
}),
52-
);
53-
54-
if (!isTestEnv) {
55-
transports.push(
56-
new winston.transports.File({
57-
handleExceptions: false,
58-
level: "debug",
59-
filename: "lens.log",
60-
/**
61-
* SAFTEY: the `ipcMain` check above should mean that this is only
62-
* called in the main process
63-
*/
64-
dirname: app.getPath("logs"),
65-
maxsize: 1024 * 1024,
66-
maxFiles: 16,
67-
tailable: true,
68-
}),
69-
);
70-
}
71-
} else {
72-
transports.push(new BrowserConsole());
73-
}
74-
75-
export default winston.createLogger({
76-
format: format.combine(
77-
format.splat(),
78-
format.simple(),
79-
),
80-
transports,
81-
}) as Logger;
17+
/**
18+
* @deprecated use `di.inject(loggerInjectable)` instead
19+
*/
20+
export default asLegacyGlobalForExtensionApi(loggerInjectable);

src/common/logger/transports.ts

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
/**
2+
* Copyright (c) OpenLens Authors. All rights reserved.
3+
* Licensed under MIT License. See LICENSE in root directory for more information.
4+
*/
5+
6+
import { getInjectionToken } from "@ogre-tools/injectable";
7+
import type TransportStream from "winston-transport";
8+
9+
export const loggerTransportInjectionToken = getInjectionToken<TransportStream>({
10+
id: "logger-transport",
11+
});

0 commit comments

Comments
 (0)