Skip to content

Commit fcbe3be

Browse files
committed
Use app logger instead of extLogger where possible
To increase the use of the `app` logger, this replaces the direct use of `extLogger` by the `app.logger` where possible. This should not change the behavior since the `extLogger` is the logger used by the `app`.
1 parent 2b85690 commit fcbe3be

15 files changed

Lines changed: 140 additions & 93 deletions

File tree

extensions/ql-vscode/src/common/vscode/commands.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { commands, Disposable } from "vscode";
22
import { CommandFunction, CommandManager } from "../../packages/commands";
33
import {
44
extLogger,
5-
OutputChannelLogger,
5+
NotificationLogger,
66
showAndLogWarningMessage,
77
} from "../logging";
88
import {
@@ -21,9 +21,9 @@ import { showAndLogExceptionWithTelemetry } from "./logging";
2121
*/
2222
export function createVSCodeCommandManager<
2323
Commands extends Record<string, CommandFunction>,
24-
>(outputLogger?: OutputChannelLogger): CommandManager<Commands> {
24+
>(logger?: NotificationLogger): CommandManager<Commands> {
2525
return new CommandManager((commandId, task) => {
26-
return registerCommandWithErrorHandling(commandId, task, outputLogger);
26+
return registerCommandWithErrorHandling(commandId, task, logger);
2727
}, wrapExecuteCommand);
2828
}
2929

@@ -33,11 +33,12 @@ export function createVSCodeCommandManager<
3333
* @param commandId The ID of the command to register.
3434
* @param task The task to run. It is passed directly to `commands.registerCommand`. Any
3535
* arguments to the command handler are passed on to the task.
36+
* @param logger The logger to use for error reporting.
3637
*/
3738
export function registerCommandWithErrorHandling(
3839
commandId: string,
3940
task: (...args: any[]) => Promise<any>,
40-
outputLogger = extLogger,
41+
logger: NotificationLogger = extLogger,
4142
): Disposable {
4243
return commands.registerCommand(commandId, async (...args: any[]) => {
4344
const startTime = Date.now();
@@ -53,17 +54,17 @@ export function registerCommandWithErrorHandling(
5354
if (e instanceof UserCancellationException) {
5455
// User has cancelled this action manually
5556
if (e.silent) {
56-
void outputLogger.log(errorMessage.fullMessage);
57+
void logger.log(errorMessage.fullMessage);
5758
} else {
58-
void showAndLogWarningMessage(outputLogger, errorMessage.fullMessage);
59+
void showAndLogWarningMessage(logger, errorMessage.fullMessage);
5960
}
6061
} else {
6162
// Include the full stack in the error log only.
6263
const errorStack = getErrorStack(e);
6364
const fullMessage = errorStack
6465
? `${errorMessage.fullMessage}\n${errorStack}`
6566
: errorMessage.fullMessage;
66-
void showAndLogExceptionWithTelemetry(outputLogger, errorMessage, {
67+
void showAndLogExceptionWithTelemetry(logger, errorMessage, {
6768
fullMessage,
6869
extraTelemetryProperties: {
6970
command: commandId,

extensions/ql-vscode/src/common/vscode/selection-commands.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import {
33
TreeViewContextMultiSelectionCommandFunction,
44
TreeViewContextSingleSelectionCommandFunction,
55
} from "../commands";
6-
import { showAndLogErrorMessage, extLogger } from "../logging";
6+
import { showAndLogErrorMessage, NotificationLogger } from "../logging";
77

88
// A hack to match types that are not an array, which is useful to help avoid
99
// misusing createSingleSelectionCommand, e.g. where T accidentally gets instantiated
@@ -25,6 +25,7 @@ type SelectionCommand<T extends NotArray> = CreateSupertypeOf<
2525
>;
2626

2727
export function createSingleSelectionCommand<T extends NotArray>(
28+
logger: NotificationLogger,
2829
f: (argument: T) => Promise<void>,
2930
itemName: string,
3031
): SelectionCommand<T> {
@@ -33,7 +34,7 @@ export function createSingleSelectionCommand<T extends NotArray>(
3334
return f(singleItem);
3435
} else {
3536
void showAndLogErrorMessage(
36-
extLogger,
37+
logger,
3738
`Please select a single ${itemName}.`,
3839
);
3940
return;

extensions/ql-vscode/src/data-extensions-editor/data-extensions-editor-module.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import { App } from "../common/app";
1010
import { withProgress } from "../common/vscode/progress";
1111
import { pickExtensionPackModelFile } from "./extension-pack-picker";
1212
import { showAndLogErrorMessage } from "../common/logging";
13-
import { extLogger } from "../common";
1413

1514
const SUPPORTED_LANGUAGES: string[] = ["java", "csharp"];
1615

@@ -57,13 +56,13 @@ export class DataExtensionsEditorModule {
5756
"codeQL.openDataExtensionsEditor": async () => {
5857
const db = this.databaseManager.currentDatabaseItem;
5958
if (!db) {
60-
void showAndLogErrorMessage(extLogger, "No database selected");
59+
void showAndLogErrorMessage(this.app.logger, "No database selected");
6160
return;
6261
}
6362

6463
if (!SUPPORTED_LANGUAGES.includes(db.language)) {
6564
void showAndLogErrorMessage(
66-
extLogger,
65+
this.app.logger,
6766
`The data extensions editor is not supported for ${db.language} databases.`,
6867
);
6968
return;
@@ -73,7 +72,7 @@ export class DataExtensionsEditorModule {
7372
async (progress, token) => {
7473
if (!(await this.cliServer.cliConstraints.supportsQlpacksKind())) {
7574
void showAndLogErrorMessage(
76-
extLogger,
75+
this.app.logger,
7776
`This feature requires CodeQL CLI version ${CliVersionConstraint.CLI_VERSION_WITH_QLPACKS_KIND.format()} or later.`,
7877
);
7978
return;
@@ -82,6 +81,7 @@ export class DataExtensionsEditorModule {
8281
const modelFile = await pickExtensionPackModelFile(
8382
this.cliServer,
8483
db,
84+
this.app.logger,
8585
progress,
8686
token,
8787
);

extensions/ql-vscode/src/data-extensions-editor/data-extensions-editor-view.ts

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import {
1717
} from "../pure/interface-types";
1818
import { ProgressUpdate } from "../common/vscode/progress";
1919
import { QueryRunner } from "../query-server";
20-
import { extLogger } from "../common";
2120
import { showAndLogExceptionWithTelemetry } from "../common/vscode/logging";
2221
import { outputFile, pathExists, readFile } from "fs-extra";
2322
import { load as loadYaml } from "js-yaml";
@@ -165,10 +164,10 @@ export class DataExtensionsEditorView extends AbstractWebview<
165164
"Original file of this result is not in the database's source archive.",
166165
);
167166
} else {
168-
void extLogger.log(`Unable to handleMsgFromView: ${e.message}`);
167+
void this.app.logger.log(`Unable to handleMsgFromView: ${e.message}`);
169168
}
170169
} else {
171-
void extLogger.log(`Unable to handleMsgFromView: ${e}`);
170+
void this.app.logger.log(`Unable to handleMsgFromView: ${e}`);
172171
}
173172
}
174173
}
@@ -185,7 +184,7 @@ export class DataExtensionsEditorView extends AbstractWebview<
185184

186185
await outputFile(this.modelFile.filename, yaml);
187186

188-
void extLogger.log(
187+
void this.app.logger.log(
189188
`Saved data extension YAML to ${this.modelFile.filename}`,
190189
);
191190
}
@@ -206,7 +205,7 @@ export class DataExtensionsEditorView extends AbstractWebview<
206205

207206
if (!existingModeledMethods) {
208207
void showAndLogErrorMessage(
209-
extLogger,
208+
this.app.logger,
210209
`Failed to parse data extension YAML ${this.modelFile.filename}.`,
211210
);
212211
return;
@@ -218,7 +217,7 @@ export class DataExtensionsEditorView extends AbstractWebview<
218217
});
219218
} catch (e: unknown) {
220219
void showAndLogErrorMessage(
221-
extLogger,
220+
this.app.logger,
222221
`Unable to read data extension YAML ${
223222
this.modelFile.filename
224223
}: ${getErrorMessage(e)}`,
@@ -276,7 +275,7 @@ export class DataExtensionsEditorView extends AbstractWebview<
276275
await this.clearProgress();
277276
} catch (err) {
278277
void showAndLogExceptionWithTelemetry(
279-
extLogger,
278+
this.app.logger,
280279
redactableError(
281280
asError(err),
282281
)`Failed to load external API usages: ${getErrorMessage(err)}`,
@@ -303,7 +302,7 @@ export class DataExtensionsEditorView extends AbstractWebview<
303302
);
304303
if (!database) {
305304
await this.clearProgress();
306-
void extLogger.log("No database chosen");
305+
void this.app.logger.log("No database chosen");
307306

308307
return;
309308
}
@@ -342,7 +341,7 @@ export class DataExtensionsEditorView extends AbstractWebview<
342341
});
343342
} catch (e: unknown) {
344343
void showAndLogExceptionWithTelemetry(
345-
extLogger,
344+
this.app.logger,
346345
redactableError(
347346
asError(e),
348347
)`Failed to generate flow model: ${getErrorMessage(e)}`,
@@ -476,7 +475,7 @@ export class DataExtensionsEditorView extends AbstractWebview<
476475

477476
if (e instanceof RequestError && e.status === 429) {
478477
void showAndLogExceptionWithTelemetry(
479-
extLogger,
478+
this.app.logger,
480479
redactableError(e)`Rate limit hit, please try again soon.`,
481480
);
482481
return null;

extensions/ql-vscode/src/data-extensions-editor/extension-pack-picker.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { DatabaseItem } from "../databases/local-databases";
1313
import { getQlPackPath, QLPACK_FILENAMES } from "../pure/ql";
1414
import { getErrorMessage } from "../pure/helpers-pure";
1515
import { ExtensionPack, ExtensionPackModelFile } from "./shared/extension-pack";
16-
import { showAndLogErrorMessage, extLogger } from "../common/logging";
16+
import { NotificationLogger, showAndLogErrorMessage } from "../common/logging";
1717
import { containsPath } from "../pure/files";
1818

1919
const maxStep = 3;
@@ -27,12 +27,14 @@ const packNameLength = 128;
2727
export async function pickExtensionPackModelFile(
2828
cliServer: Pick<CodeQLCliServer, "resolveQlpacks" | "resolveExtensions">,
2929
databaseItem: Pick<DatabaseItem, "name" | "language">,
30+
logger: NotificationLogger,
3031
progress: ProgressCallback,
3132
token: CancellationToken,
3233
): Promise<ExtensionPackModelFile | undefined> {
3334
const extensionPack = await pickExtensionPack(
3435
cliServer,
3536
databaseItem,
37+
logger,
3638
progress,
3739
token,
3840
);
@@ -60,6 +62,7 @@ export async function pickExtensionPackModelFile(
6062
async function pickExtensionPack(
6163
cliServer: Pick<CodeQLCliServer, "resolveQlpacks">,
6264
databaseItem: Pick<DatabaseItem, "name" | "language">,
65+
logger: NotificationLogger,
6366
progress: ProgressCallback,
6467
token: CancellationToken,
6568
): Promise<ExtensionPack | undefined> {
@@ -85,7 +88,7 @@ async function pickExtensionPack(
8588
Object.entries(extensionPacksInfo).map(async ([name, paths]) => {
8689
if (paths.length !== 1) {
8790
void showAndLogErrorMessage(
88-
extLogger,
91+
logger,
8992
`Extension pack ${name} resolves to multiple paths`,
9093
{
9194
fullMessage: `Extension pack ${name} resolves to multiple paths: ${paths.join(
@@ -104,7 +107,7 @@ async function pickExtensionPack(
104107
extensionPack = await readExtensionPack(path);
105108
} catch (e: unknown) {
106109
void showAndLogErrorMessage(
107-
extLogger,
110+
logger,
108111
`Could not read extension pack ${name}`,
109112
{
110113
fullMessage: `Could not read extension pack ${name} at ${path}: ${getErrorMessage(

extensions/ql-vscode/src/databases/code-search-api.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@ import { throttling } from "@octokit/plugin-throttling";
33
import { Octokit } from "@octokit/rest";
44
import { Progress, CancellationToken } from "vscode";
55
import { Credentials } from "../common/authentication";
6-
import { showAndLogWarningMessage } from "../common/logging";
7-
import { extLogger } from "../common";
6+
import {
7+
NotificationLogger,
8+
showAndLogWarningMessage,
9+
} from "../common/logging";
810

911
export async function getCodeSearchRepositories(
1012
query: string,
@@ -14,9 +16,10 @@ export async function getCodeSearchRepositories(
1416
}>,
1517
token: CancellationToken,
1618
credentials: Credentials,
19+
logger: NotificationLogger,
1720
): Promise<string[]> {
1821
let nwos: string[] = [];
19-
const octokit = await provideOctokitWithThrottling(credentials);
22+
const octokit = await provideOctokitWithThrottling(credentials, logger);
2023

2124
for await (const response of octokit.paginate.iterator(
2225
octokit.rest.search.code,
@@ -44,6 +47,7 @@ export async function getCodeSearchRepositories(
4447

4548
async function provideOctokitWithThrottling(
4649
credentials: Credentials,
50+
logger: NotificationLogger,
4751
): Promise<Octokit> {
4852
const MyOctokit = Octokit.plugin(throttling);
4953
const auth = await credentials.getAccessToken();
@@ -54,15 +58,15 @@ async function provideOctokitWithThrottling(
5458
throttle: {
5559
onRateLimit: (retryAfter: number, options: any): boolean => {
5660
void showAndLogWarningMessage(
57-
extLogger,
61+
logger,
5862
`Rate Limit detected for request ${options.method} ${options.url}. Retrying after ${retryAfter} seconds!`,
5963
);
6064

6165
return true;
6266
},
6367
onSecondaryRateLimit: (_retryAfter: number, options: any): void => {
6468
void showAndLogWarningMessage(
65-
extLogger,
69+
logger,
6670
`Secondary Rate Limit detected for request ${options.method} ${options.url}`,
6771
);
6872
},

extensions/ql-vscode/src/databases/local-databases-ui.ts

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ import {
3232
isLikelyDatabaseRoot,
3333
isLikelyDbLanguageFolder,
3434
} from "./local-databases/db-contents-heuristics";
35-
import { extLogger } from "../common";
3635
import { showAndLogExceptionWithTelemetry } from "../common/vscode/logging";
3736
import {
3837
importArchiveDatabase,
@@ -251,6 +250,7 @@ export class DatabaseUI extends DisposableObject {
251250
this.handleUpgradeDatabase.bind(this),
252251
),
253252
"codeQLDatabases.renameDatabase": createSingleSelectionCommand(
253+
this.app.logger,
254254
this.handleRenameDatabase.bind(this),
255255
"database",
256256
),
@@ -279,7 +279,7 @@ export class DatabaseUI extends DisposableObject {
279279
await this.chooseAndSetDatabase(true, { progress, token });
280280
} catch (e) {
281281
void showAndLogExceptionWithTelemetry(
282-
extLogger,
282+
this.app.logger,
283283
redactableError(
284284
asError(e),
285285
)`Failed to choose and set database: ${getErrorMessage(e)}`,
@@ -372,14 +372,16 @@ export class DatabaseUI extends DisposableObject {
372372

373373
// Public because it's used in tests
374374
public async handleRemoveOrphanedDatabases(): Promise<void> {
375-
void extLogger.log("Removing orphaned databases from workspace storage.");
375+
void this.app.logger.log(
376+
"Removing orphaned databases from workspace storage.",
377+
);
376378
let dbDirs = undefined;
377379

378380
if (
379381
!(await pathExists(this.storagePath)) ||
380382
!(await stat(this.storagePath)).isDirectory()
381383
) {
382-
void extLogger.log(
384+
void this.app.logger.log(
383385
"Missing or invalid storage directory. Not trying to remove orphaned databases.",
384386
);
385387
return;
@@ -404,7 +406,7 @@ export class DatabaseUI extends DisposableObject {
404406
dbDirs = await asyncFilter(dbDirs, isLikelyDatabaseRoot);
405407

406408
if (!dbDirs.length) {
407-
void extLogger.log("No orphaned databases found.");
409+
void this.app.logger.log("No orphaned databases found.");
408410
return;
409411
}
410412

@@ -413,11 +415,11 @@ export class DatabaseUI extends DisposableObject {
413415
await Promise.all(
414416
dbDirs.map(async (dbDir) => {
415417
try {
416-
void extLogger.log(`Deleting orphaned database '${dbDir}'.`);
418+
void this.app.logger.log(`Deleting orphaned database '${dbDir}'.`);
417419
await remove(dbDir);
418420
} catch (e) {
419421
void showAndLogExceptionWithTelemetry(
420-
extLogger,
422+
this.app.logger,
421423
redactableError(
422424
asError(e),
423425
)`Failed to delete orphaned database: ${getErrorMessage(e)}`,
@@ -430,7 +432,7 @@ export class DatabaseUI extends DisposableObject {
430432
if (failures.length) {
431433
const dirname = path_dirname(failures[0]);
432434
void showAndLogErrorMessage(
433-
extLogger,
435+
this.app.logger,
434436
`Failed to delete unused databases (${failures.join(
435437
", ",
436438
)}).\nTo delete unused databases, please remove them manually from the storage folder ${dirname}.`,
@@ -446,7 +448,7 @@ export class DatabaseUI extends DisposableObject {
446448
await this.chooseAndSetDatabase(false, { progress, token });
447449
} catch (e: unknown) {
448450
void showAndLogExceptionWithTelemetry(
449-
extLogger,
451+
this.app.logger,
450452
redactableError(
451453
asError(e),
452454
)`Failed to choose and set database: ${getErrorMessage(e)}`,

0 commit comments

Comments
 (0)