Skip to content

Commit 0179b23

Browse files
author
Amit Joshi
committed
Enhance server logic debugging telemetry events and improve logging details
1 parent 1f7bb17 commit 0179b23

File tree

2 files changed

+59
-5
lines changed

2 files changed

+59
-5
lines changed

src/common/OneDSLoggerTelemetry/client/desktopExtensionTelemetryEventNames.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,13 @@
55

66
export enum desktopTelemetryEventNames {
77
DESKTOP_EXTENSION_INIT_CONTEXT = "DesktopExtensionInitContext",
8+
9+
// Server Logic Debugger Events
810
SERVER_LOGIC_DEBUG_STARTED = "ServerLogicDebugStarted",
911
SERVER_LOGIC_DEBUG_COMMAND_EXECUTED = "ServerLogicDebugCommandExecuted",
1012
SERVER_LOGIC_RUN_COMMAND_EXECUTED = "ServerLogicRunCommandExecuted",
13+
SERVER_LOGIC_DEBUG_ERROR = "ServerLogicDebugError",
14+
SERVER_LOGIC_WELCOME_NOTIFICATION_SHOWN = "ServerLogicWelcomeNotificationShown",
15+
SERVER_LOGIC_WELCOME_NOTIFICATION_ACTION = "ServerLogicWelcomeNotificationAction",
16+
SERVER_LOGIC_RUNTIME_LOADER_CREATED = "ServerLogicRuntimeLoaderCreated",
1117
}

src/debugger/server-logic/ServerLogicDebugger.ts

Lines changed: 53 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,17 @@ async function ensureRuntimeLoader(folder: vscode.WorkspaceFolder): Promise<stri
6969
}
7070

7171
// Only create if it doesn't exist to preserve user customizations
72-
if (!fs.existsSync(loaderPath)) {
72+
const loaderExists = fs.existsSync(loaderPath);
73+
if (!loaderExists) {
7374
const loaderContent = generateServerMockSdk();
7475
fs.writeFileSync(loaderPath, loaderContent, 'utf8');
76+
77+
oneDSLoggerWrapper.getLogger().traceInfo(
78+
desktopTelemetryEventNames.SERVER_LOGIC_RUNTIME_LOADER_CREATED,
79+
{
80+
workspaceFolder: folder.name
81+
}
82+
);
7583
}
7684

7785
ensureGitignore(gitignorePath);
@@ -170,14 +178,28 @@ export class ServerLogicDebugProvider implements vscode.DebugConfigurationProvid
170178
oneDSLoggerWrapper.getLogger().traceInfo(
171179
desktopTelemetryEventNames.SERVER_LOGIC_DEBUG_STARTED,
172180
{
173-
hasCustomMockData: !!config.mockDataPath
181+
hasCustomMockData: String(!!config.mockDataPath),
182+
workspaceFolder: folder.name,
183+
programFile: config.program ? path.basename(config.program) : 'unknown'
174184
}
175185
);
176186

177187
return config;
178188
} catch (error) {
189+
const errorMessage = error instanceof Error ? error.message : String(error);
190+
191+
oneDSLoggerWrapper.getLogger().traceError(
192+
desktopTelemetryEventNames.SERVER_LOGIC_DEBUG_ERROR,
193+
errorMessage,
194+
error instanceof Error ? error : new Error(errorMessage),
195+
{
196+
phase: 'resolveDebugConfiguration',
197+
workspaceFolder: folder.name
198+
}
199+
);
200+
179201
vscode.window.showErrorMessage(
180-
vscode.l10n.t(SERVER_LOGIC_STRINGS.ERROR_INIT_FAILED, error instanceof Error ? error.message : String(error))
202+
vscode.l10n.t(SERVER_LOGIC_STRINGS.ERROR_INIT_FAILED, errorMessage)
181203
);
182204
return undefined;
183205
}
@@ -235,7 +257,9 @@ export function activateServerLogicDebugger(context: vscode.ExtensionContext): v
235257
oneDSLoggerWrapper.getLogger().traceInfo(
236258
desktopTelemetryEventNames.SERVER_LOGIC_DEBUG_COMMAND_EXECUTED,
237259
{
238-
fileName: path.basename(filePath)
260+
fileName: path.basename(filePath),
261+
workspaceFolder: workspaceFolder.name,
262+
triggerSource: 'command'
239263
}
240264
);
241265
}
@@ -275,7 +299,9 @@ export function activateServerLogicDebugger(context: vscode.ExtensionContext): v
275299
oneDSLoggerWrapper.getLogger().traceInfo(
276300
desktopTelemetryEventNames.SERVER_LOGIC_RUN_COMMAND_EXECUTED,
277301
{
278-
fileName: path.basename(filePath)
302+
fileName: path.basename(filePath),
303+
workspaceFolder: workspaceFolder.name,
304+
triggerSource: 'command'
279305
}
280306
);
281307
}
@@ -305,24 +331,46 @@ function showServerLogicWelcomeNotification(): void {
305331
const learnMoreButton = vscode.l10n.t(SERVER_LOGIC_STRINGS.BUTTON_LEARN_MORE);
306332
const dontShowButton = vscode.l10n.t(SERVER_LOGIC_STRINGS.BUTTON_DONT_SHOW_AGAIN);
307333

334+
oneDSLoggerWrapper.getLogger().traceInfo(
335+
desktopTelemetryEventNames.SERVER_LOGIC_WELCOME_NOTIFICATION_SHOWN,
336+
{}
337+
);
338+
308339
vscode.window.showInformationMessage(
309340
vscode.l10n.t(SERVER_LOGIC_STRINGS.WELCOME_MESSAGE),
310341
debugButton,
311342
learnMoreButton,
312343
dontShowButton
313344
).then(selection => {
314345
if (selection === debugButton) {
346+
oneDSLoggerWrapper.getLogger().traceInfo(
347+
desktopTelemetryEventNames.SERVER_LOGIC_WELCOME_NOTIFICATION_ACTION,
348+
{ action: 'debug' }
349+
);
315350
vscode.commands.executeCommand('powerpages.debugServerLogic');
316351
} else if (selection === learnMoreButton) {
352+
oneDSLoggerWrapper.getLogger().traceInfo(
353+
desktopTelemetryEventNames.SERVER_LOGIC_WELCOME_NOTIFICATION_ACTION,
354+
{ action: 'learnMore' }
355+
);
317356
vscode.env.openExternal(
318357
vscode.Uri.parse(SERVER_LOGIC_URLS.LEARN_MORE)
319358
);
320359
} else if (selection === dontShowButton) {
360+
oneDSLoggerWrapper.getLogger().traceInfo(
361+
desktopTelemetryEventNames.SERVER_LOGIC_WELCOME_NOTIFICATION_ACTION,
362+
{ action: 'dontShowAgain' }
363+
);
321364
vscode.workspace.getConfiguration().update(
322365
SERVER_LOGIC_CONFIG_KEYS.DONT_SHOW_WELCOME,
323366
true,
324367
vscode.ConfigurationTarget.Global
325368
);
369+
} else {
370+
oneDSLoggerWrapper.getLogger().traceInfo(
371+
desktopTelemetryEventNames.SERVER_LOGIC_WELCOME_NOTIFICATION_ACTION,
372+
{ action: 'dismissed' }
373+
);
326374
}
327375
});
328376
}

0 commit comments

Comments
 (0)