@@ -8,6 +8,7 @@ import { Event } from 'vs/base/common/event';
88import { IChannel , IServerChannel } from 'vs/base/parts/ipc/common/ipc' ;
99import { AbstractLoggerService , AbstractMessageLogger , AdapterLogger , DidChangeLoggersEvent , ILogger , ILoggerOptions , ILoggerResource , ILoggerService , isLogLevel , LogLevel } from 'vs/platform/log/common/log' ;
1010import { Disposable } from 'vs/base/common/lifecycle' ;
11+ import { IURITransformer } from 'vs/base/common/uriIpc' ;
1112
1213export class LoggerChannelClient extends AbstractLoggerService implements ILoggerService {
1314
@@ -110,26 +111,39 @@ class Logger extends AbstractMessageLogger {
110111
111112export class LoggerChannel implements IServerChannel {
112113
113- constructor ( private readonly loggerService : ILoggerService ) { }
114+ constructor ( private readonly loggerService : ILoggerService , private getUriTransformer : ( requestContext : any ) => IURITransformer ) { }
114115
115- listen ( _ : unknown , event : string , windowId ?: number ) : Event < any > {
116+ listen ( context : any , event : string ) : Event < any > {
117+ const uriTransformer = this . getUriTransformer ( context ) ;
116118 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 ] ] ) ;
120126 }
121127 throw new Error ( `Event not found: ${ event } ` ) ;
122128 }
123129
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 ) ;
125132 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 ) ) ) ;
128135 }
129136
130137 throw new Error ( `Call not found: ${ command } ` ) ;
131138 }
132139
140+ private transformLogger ( logger : ILoggerResource , transformer : IURITransformer ) : ILoggerResource {
141+ return {
142+ ...logger ,
143+ resource : transformer . transformOutgoingURI ( logger . resource )
144+ } ;
145+ }
146+
133147}
134148
135149export class RemoteLoggerChannelClient extends Disposable {
0 commit comments