From 768f6c8e2f1caf41adaabd8d54858be21071fd79 Mon Sep 17 00:00:00 2001 From: Rachel Macfarlane Date: Mon, 12 Feb 2018 14:41:17 -0800 Subject: [PATCH] Add logging to issue reporter --- .../issue/issueReporterMain.ts | 18 ++++++++++++++---- .../issue/electron-main/issueService.ts | 8 ++++++-- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/vs/code/electron-browser/issue/issueReporterMain.ts b/src/vs/code/electron-browser/issue/issueReporterMain.ts index d3a82fe2377..dce948d5427 100644 --- a/src/vs/code/electron-browser/issue/issueReporterMain.ts +++ b/src/vs/code/electron-browser/issue/issueReporterMain.ts @@ -15,6 +15,8 @@ import { escape } from 'vs/base/common/strings'; import product from 'vs/platform/node/product'; import pkg from 'vs/platform/node/package'; import * as os from 'os'; +import { debounce } from 'vs/base/common/decorators'; +import * as platform from 'vs/base/common/platform'; import { Disposable } from 'vs/base/common/lifecycle'; import { Client as ElectronIPCClient } from 'vs/base/parts/ipc/electron-browser/ipc.electron-browser'; import { getDelayedChannel } from 'vs/base/parts/ipc/common/ipc'; @@ -34,8 +36,9 @@ import { IssueReporterModel } from 'vs/code/electron-browser/issue/issueReporter import { IssueReporterData, IssueReporterStyles, IssueType, ISettingsSearchIssueReporterData, IssueReporterFeatures } from 'vs/platform/issue/common/issue'; import BaseHtml from 'vs/code/electron-browser/issue/issueReporterPage'; import { ILocalExtension } from 'vs/platform/extensionManagement/common/extensionManagement'; -import { debounce } from 'vs/base/common/decorators'; -import * as platform from 'vs/base/common/platform'; +import { createSpdLogService } from 'vs/platform/log/node/spdlogService'; +import { LogLevelSetterChannelClient, FollowerLogService } from 'vs/platform/log/common/logIpc'; +import { ILogService, getLogLevel } from 'vs/platform/log/common/log'; const MAX_URL_LENGTH = 5400; @@ -59,6 +62,7 @@ export function startup(configuration: IssueReporterConfiguration) { export class IssueReporter extends Disposable { private environmentService: IEnvironmentService; private telemetryService: ITelemetryService; + private logService: ILogService; private issueReporterModel: IssueReporterModel; private shouldQueueSearch = true; private features: IssueReporterFeatures; @@ -88,6 +92,7 @@ export class IssueReporter extends Disposable { this.features = configuration.features; ipcRenderer.on('issuePerformanceInfoResponse', (event, info) => { + this.logService.trace('issueReporter: Received performance data'); this.issueReporterModel.update(info); this.receivedPerformanceInfo = true; @@ -98,6 +103,7 @@ export class IssueReporter extends Disposable { }); ipcRenderer.on('issueSystemInfoResponse', (event, info) => { + this.logService.trace('issueReporter: Received system data'); this.issueReporterModel.update({ systemInfo: info }); this.receivedSystemInfo = true; @@ -107,6 +113,7 @@ export class IssueReporter extends Disposable { ipcRenderer.send('issueSystemInfoRequest'); ipcRenderer.send('issuePerformanceInfoRequest'); + this.logService.trace('issueReporter: Sent data requests'); if (window.document.documentElement.lang !== 'en') { show(document.getElementById('english')); @@ -266,6 +273,10 @@ export class IssueReporter extends Disposable { serviceCollection.set(IWindowsService, new WindowsChannelClient(windowsChannel)); this.environmentService = new EnvironmentService(configuration, configuration.execPath); + const logService = createSpdLogService(`issuereporter${configuration.windowId}`, getLogLevel(this.environmentService), this.environmentService.logsPath); + const logLevelClient = new LogLevelSetterChannelClient(mainProcessClient.getChannel('loglevel')); + this.logService = new FollowerLogService(logLevelClient, logService); + const sharedProcess = (serviceCollection.get(IWindowsService)).whenSharedProcessReady() .then(() => connectNet(this.environmentService.sharedIPCHandle, `window:${configuration.windowId}`)); @@ -532,8 +543,7 @@ export class IssueReporter extends Disposable { } private logSearchError(error: Error) { - // TODO: Use LogService here. - console.log(error); + this.logService.warn('issueReporter#search ', error.message); /* __GDPR__ "issueReporterSearchError" : { "message" : { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" } diff --git a/src/vs/platform/issue/electron-main/issueService.ts b/src/vs/platform/issue/electron-main/issueService.ts index ff083572f83..d706dcd5ff9 100644 --- a/src/vs/platform/issue/electron-main/issueService.ts +++ b/src/vs/platform/issue/electron-main/issueService.ts @@ -15,7 +15,8 @@ import { ILaunchService } from 'vs/code/electron-main/launch'; import { getPerformanceInfo, PerformanceInfo, getSystemInfo, SystemInfo } from 'vs/code/electron-main/diagnostics'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import { isMacintosh } from 'vs/base/common/platform'; -import { IConfigurationService } from '../../configuration/common/configuration'; +import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; +import { ILogService } from 'vs/platform/log/common/log'; const DEFAULT_BACKGROUND_COLOR = '#1E1E1E'; @@ -28,7 +29,8 @@ export class IssueService implements IIssueService { private machineId: string, @IEnvironmentService private environmentService: IEnvironmentService, @ILaunchService private launchService: ILaunchService, - @IConfigurationService private configurationService: IConfigurationService + @IConfigurationService private configurationService: IConfigurationService, + @ILogService private logService: ILogService ) { } openReporter(data: IssueReporterData): TPromise { @@ -67,6 +69,7 @@ export class IssueService implements IIssueService { useDuplicateSearch: this.configurationService.getValue('issueReporter.searchDuplicates') }; + this.logService.trace('issueService#openReporter: opening issue reporter'); this._issueWindow.loadURL(this.getIssueReporterPath(data, features)); return TPromise.as(null); @@ -158,6 +161,7 @@ export class IssueService implements IIssueService { resolve(diagnosticInfo); }) .catch(err => { + this.logService.warn('issueService#getPerformanceInfo ', err.message); reject(err); }); });