@@ -8,6 +8,7 @@ import { Event } from 'vs/base/common/event';
8
8
import { IChannel , IServerChannel } from 'vs/base/parts/ipc/common/ipc' ;
9
9
import { AbstractLoggerService , AbstractMessageLogger , AdapterLogger , DidChangeLoggersEvent , ILogger , ILoggerOptions , ILoggerResource , ILoggerService , isLogLevel , LogLevel } from 'vs/platform/log/common/log' ;
10
10
import { Disposable } from 'vs/base/common/lifecycle' ;
11
+ import { IURITransformer } from 'vs/base/common/uriIpc' ;
11
12
12
13
export class LoggerChannelClient extends AbstractLoggerService implements ILoggerService {
13
14
@@ -110,26 +111,39 @@ class Logger extends AbstractMessageLogger {
110
111
111
112
export class LoggerChannel implements IServerChannel {
112
113
113
- constructor ( private readonly loggerService : ILoggerService ) { }
114
+ constructor ( private readonly loggerService : ILoggerService , private getUriTransformer : ( requestContext : any ) => IURITransformer ) { }
114
115
115
- listen ( _ : unknown , event : string , windowId ?: number ) : Event < any > {
116
+ listen ( context : any , event : string ) : Event < any > {
117
+ const uriTransformer = this . getUriTransformer ( context ) ;
116
118
switch ( event ) {
117
- case 'onDidChangeLoggers' : return this . loggerService . onDidChangeLoggers ;
118
- case 'onDidChangeVisibility' : return this . loggerService . onDidChangeVisibility ;
119
- case 'onDidChangeLogLevel' : return this . loggerService . onDidChangeLogLevel ;
119
+ case 'onDidChangeLoggers' : return Event . map < DidChangeLoggersEvent , DidChangeLoggersEvent > ( this . loggerService . onDidChangeLoggers , ( e ) =>
120
+ ( {
121
+ added : [ ...e . added ] . map ( logger => this . transformLogger ( logger , uriTransformer ) ) ,
122
+ removed : [ ...e . removed ] . map ( logger => this . transformLogger ( logger , uriTransformer ) ) ,
123
+ } ) ) ;
124
+ case 'onDidChangeVisibility' : return Event . map < [ URI , boolean ] , [ URI , boolean ] > ( this . loggerService . onDidChangeVisibility , e => [ uriTransformer . transformOutgoingURI ( e [ 0 ] ) , e [ 1 ] ] ) ;
125
+ case 'onDidChangeLogLevel' : return Event . map < LogLevel | [ URI , LogLevel ] , LogLevel | [ URI , LogLevel ] > ( this . loggerService . onDidChangeLogLevel , e => isLogLevel ( e ) ? e : [ uriTransformer . transformOutgoingURI ( e [ 0 ] ) , e [ 1 ] ] ) ;
120
126
}
121
127
throw new Error ( `Event not found: ${ event } ` ) ;
122
128
}
123
129
124
- async call ( _ : unknown , command : string , arg ?: any ) : Promise < any > {
130
+ async call ( context : any , command : string , arg ?: any ) : Promise < any > {
131
+ const uriTransformer : IURITransformer | null = this . getUriTransformer ( context ) ;
125
132
switch ( command ) {
126
- case 'setLogLevel' : return isLogLevel ( arg [ 0 ] ) ? this . loggerService . setLogLevel ( arg [ 0 ] ) : this . loggerService . setLogLevel ( URI . revive ( arg [ 0 ] ) , arg [ 1 ] ) ;
127
- case 'getRegisteredLoggers' : return Promise . resolve ( [ ...this . loggerService . getRegisteredLoggers ( ) ] ) ;
133
+ case 'setLogLevel' : return isLogLevel ( arg [ 0 ] ) ? this . loggerService . setLogLevel ( arg [ 0 ] ) : this . loggerService . setLogLevel ( URI . revive ( uriTransformer . transformIncoming ( arg [ 0 ] [ 0 ] ) ) , arg [ 0 ] [ 1 ] ) ;
134
+ case 'getRegisteredLoggers' : return Promise . resolve ( [ ...this . loggerService . getRegisteredLoggers ( ) ] . map ( logger => this . transformLogger ( logger , uriTransformer ) ) ) ;
128
135
}
129
136
130
137
throw new Error ( `Call not found: ${ command } ` ) ;
131
138
}
132
139
140
+ private transformLogger ( logger : ILoggerResource , transformer : IURITransformer ) : ILoggerResource {
141
+ return {
142
+ ...logger ,
143
+ resource : transformer . transformOutgoingURI ( logger . resource )
144
+ } ;
145
+ }
146
+
133
147
}
134
148
135
149
export class RemoteLoggerChannelClient extends Disposable {
0 commit comments