@@ -8,26 +8,49 @@ import { Event } from 'vs/base/common/event';
8
8
import { localize } from 'vs/nls' ;
9
9
import { ILogger , ILoggerService , LogLevel } from 'vs/platform/log/common/log' ;
10
10
import { ITerminalLogService } from 'vs/platform/terminal/common/terminal' ;
11
+ import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace' ;
11
12
12
13
export class TerminalLogService extends Disposable implements ITerminalLogService {
13
14
declare _serviceBrand : undefined ;
14
15
declare _logBrand : undefined ;
15
16
16
17
private readonly _logger : ILogger ;
17
18
19
+ private _workspaceId ! : string ;
20
+
18
21
get onDidChangeLogLevel ( ) : Event < LogLevel > { return this . _logger . onDidChangeLogLevel ; }
19
22
20
- constructor ( @ILoggerService private readonly _loggerService : ILoggerService ) {
23
+ constructor (
24
+ @ILoggerService private readonly _loggerService : ILoggerService ,
25
+ @IWorkspaceContextService workspaceContextService : IWorkspaceContextService
26
+ ) {
21
27
super ( ) ;
22
28
this . _logger = this . _loggerService . createLogger ( 'terminal' , { name : localize ( 'terminalLoggerName' , 'Terminal' ) } ) ;
29
+ this . _register ( Event . runAndSubscribe ( workspaceContextService . onDidChangeWorkspaceFolders , ( ) => {
30
+ this . _workspaceId = workspaceContextService . getWorkspace ( ) . id . substring ( 0 , 7 ) ;
31
+ } ) ) ;
23
32
}
24
33
25
34
getLevel ( ) : LogLevel { return this . _logger . getLevel ( ) ; }
26
35
setLevel ( level : LogLevel ) : void { this . _logger . setLevel ( level ) ; }
27
- trace ( message : string , ...args : any [ ] ) : void { this . _logger . trace ( message , args ) ; }
28
- debug ( message : string , ...args : any [ ] ) : void { this . _logger . debug ( message , args ) ; }
29
- info ( message : string , ...args : any [ ] ) : void { this . _logger . info ( message , args ) ; }
30
- warn ( message : string , ...args : any [ ] ) : void { this . _logger . warn ( message , args ) ; }
31
- error ( message : string | Error , ...args : any [ ] ) : void { this . _logger . error ( message , args ) ; }
32
36
flush ( ) : void { this . _logger . flush ( ) ; }
37
+
38
+ trace ( message : string , ...args : any [ ] ) : void { this . _logger . trace ( this . _formatMessage ( message ) , args ) ; }
39
+ debug ( message : string , ...args : any [ ] ) : void { this . _logger . debug ( this . _formatMessage ( message ) , args ) ; }
40
+ info ( message : string , ...args : any [ ] ) : void { this . _logger . info ( this . _formatMessage ( message ) , args ) ; }
41
+ warn ( message : string , ...args : any [ ] ) : void { this . _logger . warn ( this . _formatMessage ( message ) , args ) ; }
42
+ error ( message : string | Error , ...args : any [ ] ) : void {
43
+ if ( message instanceof Error ) {
44
+ this . _logger . error ( this . _formatMessage ( '' ) , message , args ) ;
45
+ return ;
46
+ }
47
+ this . _logger . error ( this . _formatMessage ( message ) , args ) ;
48
+ }
49
+
50
+ private _formatMessage ( message : string ) : string {
51
+ if ( this . _logger . getLevel ( ) === LogLevel . Trace ) {
52
+ return `[${ this . _workspaceId } ] ${ message } ` ;
53
+ }
54
+ return message ;
55
+ }
33
56
}
0 commit comments