Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
5c49d86e
V
vscode
项目概览
掘金者说
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
5c49d86e
编写于
6月 07, 2016
作者:
J
Joao Moreno
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
extract error telemetry
上级
7d8f715c
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
43 addition
and
21 deletion
+43
-21
src/vs/platform/telemetry/browser/errorTelemetry.ts
src/vs/platform/telemetry/browser/errorTelemetry.ts
+3
-1
src/vs/platform/telemetry/browser/telemetryService.ts
src/vs/platform/telemetry/browser/telemetryService.ts
+0
-5
src/vs/platform/telemetry/test/node/telemetryService.test.ts
src/vs/platform/telemetry/test/node/telemetryService.test.ts
+36
-13
src/vs/workbench/electron-browser/shell.ts
src/vs/workbench/electron-browser/shell.ts
+4
-2
未找到文件。
src/vs/platform/telemetry/
common
/errorTelemetry.ts
→
src/vs/platform/telemetry/
browser
/errorTelemetry.ts
浏览文件 @
5c49d86e
...
...
@@ -36,13 +36,15 @@ namespace ErrorEvent {
export
default
class
ErrorTelemetry
{
public
static
ERROR_FLUSH_TIMEOUT
:
number
=
5
*
1000
;
private
_telemetryService
:
ITelemetryService
;
private
_flushDelay
:
number
;
private
_flushHandle
=
-
1
;
private
_buffer
:
ErrorEvent
[]
=
[];
private
_disposables
:
IDisposable
[]
=
[];
constructor
(
telemetryService
:
ITelemetryService
,
flushDelay
)
{
constructor
(
telemetryService
:
ITelemetryService
,
flushDelay
=
ErrorTelemetry
.
ERROR_FLUSH_TIMEOUT
)
{
this
.
_telemetryService
=
telemetryService
;
this
.
_flushDelay
=
flushDelay
;
...
...
src/vs/platform/telemetry/browser/telemetryService.ts
浏览文件 @
5c49d86e
...
...
@@ -11,7 +11,6 @@ import {ITelemetryService, ITelemetryAppender, ITelemetryInfo} from 'vs/platform
import
{
optional
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
IConfigurationService
}
from
'
vs/platform/configuration/common/configuration
'
;
import
{
IConfigurationRegistry
,
Extensions
}
from
'
vs/platform/configuration/common/configurationRegistry
'
;
import
ErrorTelemetry
from
'
vs/platform/telemetry/common/errorTelemetry
'
;
import
{
IdleMonitor
,
UserStatus
}
from
'
vs/base/browser/idleMonitor
'
;
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
{
IDisposable
,
dispose
}
from
'
vs/base/common/lifecycle
'
;
...
...
@@ -34,7 +33,6 @@ export class TelemetryService implements ITelemetryService {
public
static
SOFT_IDLE_TIME
=
2
*
60
*
1000
;
public
static
IDLE_START_EVENT_NAME
=
'
UserIdleStart
'
;
public
static
IDLE_STOP_EVENT_NAME
=
'
UserIdleStop
'
;
public
static
ERROR_FLUSH_TIMEOUT
:
number
=
5
*
1000
;
public
serviceId
=
ITelemetryService
;
...
...
@@ -75,9 +73,6 @@ export class TelemetryService implements ITelemetryService {
this
.
_disposables
.
push
(
this
.
_timeKeeper
);
this
.
_disposables
.
push
(
this
.
_timeKeeper
.
addListener
(
events
=>
this
.
_onTelemetryTimerEventStop
(
events
)));
const
errorTelemetry
=
new
ErrorTelemetry
(
this
,
TelemetryService
.
ERROR_FLUSH_TIMEOUT
);
this
.
_disposables
.
push
(
errorTelemetry
);
if
(
this
.
_configuration
.
enableHardIdle
)
{
this
.
_hardIdleMonitor
=
new
IdleMonitor
();
this
.
_disposables
.
push
(
this
.
_hardIdleMonitor
);
...
...
src/vs/platform/telemetry/test/node/telemetryService.test.ts
浏览文件 @
5c49d86e
...
...
@@ -9,6 +9,7 @@ import IdleMonitor = require('vs/base/browser/idleMonitor');
import
{
Emitter
}
from
'
vs/base/common/event
'
;
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
{
TelemetryService
}
from
'
vs/platform/telemetry/browser/telemetryService
'
;
import
ErrorTelemetry
from
'
vs/platform/telemetry/browser/errorTelemetry
'
;
import
Telemetry
=
require
(
'
vs/platform/telemetry/common/telemetry
'
);
import
Errors
=
require
(
'
vs/base/common/errors
'
);
import
Timer
=
require
(
'
vs/base/common/timer
'
);
...
...
@@ -243,6 +244,7 @@ suite('TelemetryService', () => {
try
{
let
testAppender
=
new
TestTelemetryAppender
();
let
service
=
new
TelemetryService
({
appender
:
[
testAppender
]
},
undefined
);
const
errorTelemetry
=
new
ErrorTelemetry
(
service
);
let
e
:
any
=
new
Error
(
'
This is a test.
'
);
...
...
@@ -252,11 +254,12 @@ suite('TelemetryService', () => {
}
Errors
.
onUnexpectedError
(
e
);
this
.
clock
.
tick
(
TelemetryService
.
ERROR_FLUSH_TIMEOUT
);
this
.
clock
.
tick
(
ErrorTelemetry
.
ERROR_FLUSH_TIMEOUT
);
assert
.
equal
(
testAppender
.
getEventsCount
(),
1
);
assert
.
equal
(
testAppender
.
events
[
0
].
eventName
,
'
UnhandledError
'
);
assert
.
equal
(
testAppender
.
events
[
0
].
data
.
message
,
'
This is a test.
'
);
errorTelemetry
.
dispose
();
service
.
dispose
();
}
finally
{
Errors
.
setUnexpectedErrorHandler
(
origErrorHandler
);
...
...
@@ -280,7 +283,7 @@ suite('TelemetryService', () => {
// // prevent console output from failing the test
// this.stub(console, 'log');
// // allow for the promise to finish
// this.clock.tick(Main
TelemetryService
.ERROR_FLUSH_TIMEOUT);
// this.clock.tick(Main
ErrorTelemetry
.ERROR_FLUSH_TIMEOUT);
//
// assert.equal(testAppender.getEventsCount(), 1);
// assert.equal(testAppender.events[0].eventName, 'UnhandledError');
...
...
@@ -297,10 +300,11 @@ suite('TelemetryService', () => {
let
testAppender
=
new
TestTelemetryAppender
();
let
service
=
new
TelemetryService
({
appender
:
[
testAppender
]
},
undefined
);
const
errorTelemetry
=
new
ErrorTelemetry
(
service
);
let
testError
=
new
Error
(
'
test
'
);
(
<
any
>
window
.
onerror
)(
'
Error Message
'
,
'
file.js
'
,
2
,
42
,
testError
);
this
.
clock
.
tick
(
TelemetryService
.
ERROR_FLUSH_TIMEOUT
);
this
.
clock
.
tick
(
ErrorTelemetry
.
ERROR_FLUSH_TIMEOUT
);
assert
.
equal
(
errorStub
.
alwaysCalledWithExactly
(
'
Error Message
'
,
'
file.js
'
,
2
,
42
,
testError
),
true
);
assert
.
equal
(
errorStub
.
callCount
,
1
);
...
...
@@ -313,6 +317,7 @@ suite('TelemetryService', () => {
assert
.
equal
(
testAppender
.
events
[
0
].
data
.
column
,
42
);
assert
.
equal
(
testAppender
.
events
[
0
].
data
.
error
.
message
,
'
test
'
);
errorTelemetry
.
dispose
();
service
.
dispose
();
}));
...
...
@@ -321,11 +326,12 @@ suite('TelemetryService', () => {
let
settings
=
new
ErrorTestingSettings
();
let
testAppender
=
new
TestTelemetryAppender
();
let
service
=
new
TelemetryService
({
appender
:
[
testAppender
]
},
undefined
);
const
errorTelemetry
=
new
ErrorTelemetry
(
service
);
let
dangerousFilenameError
:
any
=
new
Error
(
'
dangerousFilename
'
);
dangerousFilenameError
.
stack
=
settings
.
stack
;
(
<
any
>
window
.
onerror
)(
'
dangerousFilename
'
,
settings
.
dangerousPathWithImportantInfo
+
'
/test.js
'
,
2
,
42
,
dangerousFilenameError
);
this
.
clock
.
tick
(
TelemetryService
.
ERROR_FLUSH_TIMEOUT
);
this
.
clock
.
tick
(
ErrorTelemetry
.
ERROR_FLUSH_TIMEOUT
);
assert
.
equal
(
errorStub
.
callCount
,
1
);
assert
.
equal
(
testAppender
.
events
[
0
].
data
.
filename
.
indexOf
(
settings
.
dangerousPathWithImportantInfo
),
-
1
);
...
...
@@ -333,12 +339,13 @@ suite('TelemetryService', () => {
dangerousFilenameError
=
new
Error
(
'
dangerousFilename
'
);
dangerousFilenameError
.
stack
=
settings
.
stack
;
(
<
any
>
window
.
onerror
)(
'
dangerousFilename
'
,
settings
.
dangerousPathWithImportantInfo
+
'
/test.js
'
,
2
,
42
,
dangerousFilenameError
);
this
.
clock
.
tick
(
TelemetryService
.
ERROR_FLUSH_TIMEOUT
);
this
.
clock
.
tick
(
ErrorTelemetry
.
ERROR_FLUSH_TIMEOUT
);
assert
.
equal
(
errorStub
.
callCount
,
2
);
assert
.
equal
(
testAppender
.
events
[
0
].
data
.
filename
.
indexOf
(
settings
.
dangerousPathWithImportantInfo
),
-
1
);
assert
.
equal
(
testAppender
.
events
[
0
].
data
.
filename
,
settings
.
importantInfo
+
'
/test.js
'
);
errorTelemetry
.
dispose
();
service
.
dispose
();
}));
...
...
@@ -349,11 +356,12 @@ suite('TelemetryService', () => {
let
settings
=
new
ErrorTestingSettings
();
let
testAppender
=
new
TestTelemetryAppender
();
let
service
=
new
TelemetryService
({
appender
:
[
testAppender
]
},
undefined
);
const
errorTelemetry
=
new
ErrorTelemetry
(
service
);
let
dangerousPathWithoutImportantInfoError
:
any
=
new
Error
(
settings
.
dangerousPathWithoutImportantInfo
);
dangerousPathWithoutImportantInfoError
.
stack
=
settings
.
stack
;
Errors
.
onUnexpectedError
(
dangerousPathWithoutImportantInfoError
);
this
.
clock
.
tick
(
TelemetryService
.
ERROR_FLUSH_TIMEOUT
);
this
.
clock
.
tick
(
ErrorTelemetry
.
ERROR_FLUSH_TIMEOUT
);
assert
.
equal
(
testAppender
.
events
[
0
].
data
.
message
.
indexOf
(
settings
.
personalInfo
),
-
1
);
assert
.
equal
(
testAppender
.
events
[
0
].
data
.
message
.
indexOf
(
settings
.
filePrefix
),
-
1
);
...
...
@@ -363,6 +371,7 @@ suite('TelemetryService', () => {
assert
.
notEqual
(
testAppender
.
events
[
0
].
data
.
stack
.
indexOf
(
settings
.
stack
[
4
]),
-
1
);
assert
.
equal
(
testAppender
.
events
[
0
].
data
.
stack
.
split
(
'
\n
'
).
length
,
settings
.
stack
.
length
);
errorTelemetry
.
dispose
();
service
.
dispose
();
}
finally
{
...
...
@@ -375,11 +384,12 @@ suite('TelemetryService', () => {
let
settings
=
new
ErrorTestingSettings
();
let
testAppender
=
new
TestTelemetryAppender
();
let
service
=
new
TelemetryService
({
appender
:
[
testAppender
]
},
undefined
);
const
errorTelemetry
=
new
ErrorTelemetry
(
service
);
let
dangerousPathWithoutImportantInfoError
:
any
=
new
Error
(
'
dangerousPathWithoutImportantInfo
'
);
dangerousPathWithoutImportantInfoError
.
stack
=
settings
.
stack
;
(
<
any
>
window
.
onerror
)(
settings
.
dangerousPathWithoutImportantInfo
,
'
test.js
'
,
2
,
42
,
dangerousPathWithoutImportantInfoError
);
this
.
clock
.
tick
(
TelemetryService
.
ERROR_FLUSH_TIMEOUT
);
this
.
clock
.
tick
(
ErrorTelemetry
.
ERROR_FLUSH_TIMEOUT
);
assert
.
equal
(
errorStub
.
callCount
,
1
);
// Test that no file information remains, esp. personal info
...
...
@@ -390,6 +400,7 @@ suite('TelemetryService', () => {
assert
.
notEqual
(
testAppender
.
events
[
0
].
data
.
stack
.
indexOf
(
settings
.
stack
[
4
]),
-
1
);
assert
.
equal
(
testAppender
.
events
[
0
].
data
.
stack
.
split
(
'
\n
'
).
length
,
settings
.
stack
.
length
);
errorTelemetry
.
dispose
();
service
.
dispose
();
}));
...
...
@@ -402,13 +413,14 @@ suite('TelemetryService', () => {
let
settings
=
new
ErrorTestingSettings
();
let
testAppender
=
new
TestTelemetryAppender
();
let
service
=
new
TelemetryService
({
appender
:
[
testAppender
]
},
undefined
);
const
errorTelemetry
=
new
ErrorTelemetry
(
service
);
let
dangerousPathWithImportantInfoError
:
any
=
new
Error
(
settings
.
dangerousPathWithImportantInfo
);
dangerousPathWithImportantInfoError
.
stack
=
settings
.
stack
;
// Test that important information remains but personal info does not
Errors
.
onUnexpectedError
(
dangerousPathWithImportantInfoError
);
this
.
clock
.
tick
(
TelemetryService
.
ERROR_FLUSH_TIMEOUT
);
this
.
clock
.
tick
(
ErrorTelemetry
.
ERROR_FLUSH_TIMEOUT
);
assert
.
notEqual
(
testAppender
.
events
[
0
].
data
.
message
.
indexOf
(
settings
.
importantInfo
),
-
1
);
assert
.
equal
(
testAppender
.
events
[
0
].
data
.
message
.
indexOf
(
settings
.
personalInfo
),
-
1
);
...
...
@@ -419,6 +431,7 @@ suite('TelemetryService', () => {
assert
.
notEqual
(
testAppender
.
events
[
0
].
data
.
stack
.
indexOf
(
settings
.
stack
[
4
]),
-
1
);
assert
.
equal
(
testAppender
.
events
[
0
].
data
.
stack
.
split
(
'
\n
'
).
length
,
settings
.
stack
.
length
);
errorTelemetry
.
dispose
();
service
.
dispose
();
}
finally
{
...
...
@@ -431,11 +444,12 @@ suite('TelemetryService', () => {
let
settings
=
new
ErrorTestingSettings
();
let
testAppender
=
new
TestTelemetryAppender
();
let
service
=
new
TelemetryService
({
appender
:
[
testAppender
]
},
undefined
);
const
errorTelemetry
=
new
ErrorTelemetry
(
service
);
let
dangerousPathWithImportantInfoError
:
any
=
new
Error
(
'
dangerousPathWithImportantInfo
'
);
dangerousPathWithImportantInfoError
.
stack
=
settings
.
stack
;
(
<
any
>
window
.
onerror
)(
settings
.
dangerousPathWithImportantInfo
,
'
test.js
'
,
2
,
42
,
dangerousPathWithImportantInfoError
);
this
.
clock
.
tick
(
TelemetryService
.
ERROR_FLUSH_TIMEOUT
);
this
.
clock
.
tick
(
ErrorTelemetry
.
ERROR_FLUSH_TIMEOUT
);
assert
.
equal
(
errorStub
.
callCount
,
1
);
// Test that important information remains but personal info does not
...
...
@@ -448,6 +462,7 @@ suite('TelemetryService', () => {
assert
.
notEqual
(
testAppender
.
events
[
0
].
data
.
stack
.
indexOf
(
settings
.
stack
[
4
]),
-
1
);
assert
.
equal
(
testAppender
.
events
[
0
].
data
.
stack
.
split
(
'
\n
'
).
length
,
settings
.
stack
.
length
);
errorTelemetry
.
dispose
();
service
.
dispose
();
}));
...
...
@@ -460,6 +475,7 @@ suite('TelemetryService', () => {
let
settings
=
new
ErrorTestingSettings
();
let
testAppender
=
new
TestTelemetryAppender
();
let
service
=
new
TelemetryService
({
appender
:
[
testAppender
]
},
undefined
);
const
errorTelemetry
=
new
ErrorTelemetry
(
service
);
let
missingModelError
:
any
=
new
Error
(
settings
.
missingModelMessage
);
missingModelError
.
stack
=
settings
.
stack
;
...
...
@@ -467,7 +483,7 @@ suite('TelemetryService', () => {
// Test that no file information remains, but this particular
// error message does (Received model events for missing model)
Errors
.
onUnexpectedError
(
missingModelError
);
this
.
clock
.
tick
(
TelemetryService
.
ERROR_FLUSH_TIMEOUT
);
this
.
clock
.
tick
(
ErrorTelemetry
.
ERROR_FLUSH_TIMEOUT
);
assert
.
notEqual
(
testAppender
.
events
[
0
].
data
.
message
.
indexOf
(
settings
.
missingModelPrefix
),
-
1
);
assert
.
equal
(
testAppender
.
events
[
0
].
data
.
message
.
indexOf
(
settings
.
personalInfo
),
-
1
);
...
...
@@ -478,6 +494,7 @@ suite('TelemetryService', () => {
assert
.
notEqual
(
testAppender
.
events
[
0
].
data
.
stack
.
indexOf
(
settings
.
stack
[
4
]),
-
1
);
assert
.
equal
(
testAppender
.
events
[
0
].
data
.
stack
.
split
(
'
\n
'
).
length
,
settings
.
stack
.
length
);
errorTelemetry
.
dispose
();
service
.
dispose
();
}
finally
{
Errors
.
setUnexpectedErrorHandler
(
origErrorHandler
);
...
...
@@ -489,11 +506,12 @@ suite('TelemetryService', () => {
let
settings
=
new
ErrorTestingSettings
();
let
testAppender
=
new
TestTelemetryAppender
();
let
service
=
new
TelemetryService
({
appender
:
[
testAppender
]
},
undefined
);
const
errorTelemetry
=
new
ErrorTelemetry
(
service
);
let
missingModelError
:
any
=
new
Error
(
'
missingModelMessage
'
);
missingModelError
.
stack
=
settings
.
stack
;
(
<
any
>
window
.
onerror
)(
settings
.
missingModelMessage
,
'
test.js
'
,
2
,
42
,
missingModelError
);
this
.
clock
.
tick
(
TelemetryService
.
ERROR_FLUSH_TIMEOUT
);
this
.
clock
.
tick
(
ErrorTelemetry
.
ERROR_FLUSH_TIMEOUT
);
assert
.
equal
(
errorStub
.
callCount
,
1
);
// Test that no file information remains, but this particular
...
...
@@ -507,6 +525,7 @@ suite('TelemetryService', () => {
assert
.
notEqual
(
testAppender
.
events
[
0
].
data
.
stack
.
indexOf
(
settings
.
stack
[
4
]),
-
1
);
assert
.
equal
(
testAppender
.
events
[
0
].
data
.
stack
.
split
(
'
\n
'
).
length
,
settings
.
stack
.
length
);
errorTelemetry
.
dispose
();
service
.
dispose
();
}));
...
...
@@ -519,6 +538,7 @@ suite('TelemetryService', () => {
let
settings
=
new
ErrorTestingSettings
();
let
testAppender
=
new
TestTelemetryAppender
();
let
service
=
new
TelemetryService
({
appender
:
[
testAppender
]
},
undefined
);
const
errorTelemetry
=
new
ErrorTelemetry
(
service
);
let
noSuchFileError
:
any
=
new
Error
(
settings
.
noSuchFileMessage
);
noSuchFileError
.
stack
=
settings
.
stack
;
...
...
@@ -526,7 +546,7 @@ suite('TelemetryService', () => {
// Test that no file information remains, but this particular
// error message does (ENOENT: no such file or directory)
Errors
.
onUnexpectedError
(
noSuchFileError
);
this
.
clock
.
tick
(
TelemetryService
.
ERROR_FLUSH_TIMEOUT
);
this
.
clock
.
tick
(
ErrorTelemetry
.
ERROR_FLUSH_TIMEOUT
);
assert
.
notEqual
(
testAppender
.
events
[
0
].
data
.
message
.
indexOf
(
settings
.
noSuchFilePrefix
),
-
1
);
assert
.
equal
(
testAppender
.
events
[
0
].
data
.
message
.
indexOf
(
settings
.
personalInfo
),
-
1
);
...
...
@@ -537,6 +557,7 @@ suite('TelemetryService', () => {
assert
.
notEqual
(
testAppender
.
events
[
0
].
data
.
stack
.
indexOf
(
settings
.
stack
[
4
]),
-
1
);
assert
.
equal
(
testAppender
.
events
[
0
].
data
.
stack
.
split
(
'
\n
'
).
length
,
settings
.
stack
.
length
);
errorTelemetry
.
dispose
();
service
.
dispose
();
}
finally
{
Errors
.
setUnexpectedErrorHandler
(
origErrorHandler
);
...
...
@@ -552,11 +573,12 @@ suite('TelemetryService', () => {
let
settings
=
new
ErrorTestingSettings
();
let
testAppender
=
new
TestTelemetryAppender
();
let
service
=
new
TelemetryService
({
appender
:
[
testAppender
]
},
undefined
);
const
errorTelemetry
=
new
ErrorTelemetry
(
service
);
let
noSuchFileError
:
any
=
new
Error
(
'
noSuchFileMessage
'
);
noSuchFileError
.
stack
=
settings
.
stack
;
(
<
any
>
window
.
onerror
)(
settings
.
noSuchFileMessage
,
'
test.js
'
,
2
,
42
,
noSuchFileError
);
this
.
clock
.
tick
(
TelemetryService
.
ERROR_FLUSH_TIMEOUT
);
this
.
clock
.
tick
(
ErrorTelemetry
.
ERROR_FLUSH_TIMEOUT
);
assert
.
equal
(
errorStub
.
callCount
,
1
);
// Test that no file information remains, but this particular
...
...
@@ -571,6 +593,7 @@ suite('TelemetryService', () => {
assert
.
notEqual
(
testAppender
.
events
[
0
].
data
.
stack
.
indexOf
(
settings
.
stack
[
4
]),
-
1
);
assert
.
equal
(
testAppender
.
events
[
0
].
data
.
stack
.
split
(
'
\n
'
).
length
,
settings
.
stack
.
length
);
errorTelemetry
.
dispose
();
service
.
dispose
();
}
finally
{
Errors
.
setUnexpectedErrorHandler
(
origErrorHandler
);
...
...
src/vs/workbench/electron-browser/shell.ts
浏览文件 @
5c49d86e
...
...
@@ -21,6 +21,7 @@ import {Workbench} from 'vs/workbench/browser/workbench';
import
{
Storage
,
inMemoryLocalStorageInstance
}
from
'
vs/workbench/common/storage
'
;
import
{
ITelemetryService
,
NullTelemetryService
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
{
TelemetryService
}
from
'
vs/platform/telemetry/browser/telemetryService
'
;
import
ErrorTelemetry
from
'
vs/platform/telemetry/browser/errorTelemetry
'
;
import
{
createAppender
}
from
'
vs/platform/telemetry/node/appInsightsAppender
'
;
import
{
resolveCommonProperties
}
from
'
vs/platform/telemetry/node/commonProperties
'
;
import
{
ElectronIntegration
}
from
'
vs/workbench/electron-browser/integration
'
;
...
...
@@ -218,9 +219,10 @@ export class WorkbenchShell {
commonProperties
:
resolveCommonProperties
(
this
.
storageService
,
this
.
contextService
),
piiPaths
:
[
this
.
configuration
.
env
.
appRoot
,
this
.
configuration
.
env
.
userExtensionsHome
]
};
let
telemetryService
=
instantiationService
.
createInstance
(
TelemetryService
,
config
);
const
telemetryService
=
instantiationService
.
createInstance
(
TelemetryService
,
config
);
const
errorTelemetry
=
new
ErrorTelemetry
(
telemetryService
);
this
.
telemetryService
=
telemetryService
;
disposables
.
add
(
telemetryService
,
...
config
.
appender
);
disposables
.
add
(
telemetryService
,
errorTelemetry
,
...
config
.
appender
);
}
else
{
this
.
telemetryService
=
NullTelemetryService
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录