@@ -8,26 +8,49 @@ import { Event } from 'vs/base/common/event';
88import { localize } from 'vs/nls' ;
99import { ILogger , ILoggerService , LogLevel } from 'vs/platform/log/common/log' ;
1010import { ITerminalLogService } from 'vs/platform/terminal/common/terminal' ;
11+ import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace' ;
1112
1213export class TerminalLogService extends Disposable implements ITerminalLogService {
1314 declare _serviceBrand : undefined ;
1415 declare _logBrand : undefined ;
1516
1617 private readonly _logger : ILogger ;
1718
19+ private _workspaceId ! : string ;
20+
1821 get onDidChangeLogLevel ( ) : Event < LogLevel > { return this . _logger . onDidChangeLogLevel ; }
1922
20- constructor ( @ILoggerService private readonly _loggerService : ILoggerService ) {
23+ constructor (
24+ @ILoggerService private readonly _loggerService : ILoggerService ,
25+ @IWorkspaceContextService workspaceContextService : IWorkspaceContextService
26+ ) {
2127 super ( ) ;
2228 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+ } ) ) ;
2332 }
2433
2534 getLevel ( ) : LogLevel { return this . _logger . getLevel ( ) ; }
2635 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 ) ; }
3236 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+ }
3356}
0 commit comments