diff --git a/packages/plugin-ext-headless/src/common/headless-plugin-rpc.ts b/packages/plugin-ext-headless/src/common/headless-plugin-rpc.ts index 8fd578ffd62d7..69aca07ff0416 100644 --- a/packages/plugin-ext-headless/src/common/headless-plugin-rpc.ts +++ b/packages/plugin-ext-headless/src/common/headless-plugin-rpc.ts @@ -27,6 +27,7 @@ export const HEADLESSPLUGIN_RPC_CONTEXT = { ENV_MAIN: PLUGIN_RPC_CONTEXT.ENV_MAIN, NOTIFICATION_MAIN: PLUGIN_RPC_CONTEXT.NOTIFICATION_MAIN, LOCALIZATION_MAIN: PLUGIN_RPC_CONTEXT.LOCALIZATION_MAIN, + LOGGER_MAIN: PLUGIN_RPC_CONTEXT.LOGGER_MAIN, }; export const HEADLESSMAIN_RPC_CONTEXT = { diff --git a/packages/plugin-ext-headless/src/hosted/node/plugin-host-headless-module.ts b/packages/plugin-ext-headless/src/hosted/node/plugin-host-headless-module.ts index 37e9f4108b380..1ed74a1dfcf3d 100644 --- a/packages/plugin-ext-headless/src/hosted/node/plugin-host-headless-module.ts +++ b/packages/plugin-ext-headless/src/hosted/node/plugin-host-headless-module.ts @@ -17,6 +17,7 @@ import '@theia/core/shared/reflect-metadata'; import { ContainerModule } from '@theia/core/shared/inversify'; import { RPCProtocol, RPCProtocolImpl } from '@theia/plugin-ext/lib/common/rpc-protocol'; import { AbstractPluginHostRPC, PluginContainerModuleLoader } from '@theia/plugin-ext/lib/hosted/node/plugin-host-rpc'; +import { setupPluginHostLogger } from '@theia/plugin-ext/lib/hosted/node/plugin-host-logger'; import { AbstractPluginManagerExtImpl, MinimalTerminalServiceExt } from '@theia/plugin-ext/lib/plugin/plugin-manager'; import { HeadlessPluginHostRPC } from './plugin-host-headless-rpc'; import { HeadlessPluginManagerExtImpl } from '../../plugin/headless-plugin-manager'; @@ -34,7 +35,9 @@ import { Disposable } from '@theia/core'; export default new ContainerModule(bind => { const channel = new IPCChannel(); - bind(RPCProtocol).toConstantValue(new RPCProtocolImpl(channel)); + const rpc = new RPCProtocolImpl(channel); + setupPluginHostLogger(rpc, 'headless-plugin-host'); + bind(RPCProtocol).toConstantValue(rpc); bind(PluginContainerModuleLoader).toDynamicValue(({ container }) => (module: ContainerModule) => { diff --git a/packages/plugin-ext-headless/src/main/node/main-context.ts b/packages/plugin-ext-headless/src/main/node/main-context.ts index 2f848d3be5d48..6262c87b51057 100644 --- a/packages/plugin-ext-headless/src/main/node/main-context.ts +++ b/packages/plugin-ext-headless/src/main/node/main-context.ts @@ -18,6 +18,7 @@ import { RPCProtocol } from '@theia/plugin-ext/lib/common/rpc-protocol'; import { EnvMainImpl } from '@theia/plugin-ext/lib/main/common/env-main'; import { BasicMessageRegistryMainImpl } from '@theia/plugin-ext/lib/main/common/basic-message-registry-main'; import { BasicNotificationMainImpl } from '@theia/plugin-ext/lib/main/common/basic-notification-main'; +import { LoggerMainImpl } from '@theia/plugin-ext/lib/main/common/logger-main'; import { HEADLESSMAIN_RPC_CONTEXT, HEADLESSPLUGIN_RPC_CONTEXT } from '../../common/headless-plugin-rpc'; @@ -32,4 +33,7 @@ export function setUpPluginApi(rpc: RPCProtocol, container: interfaces.Container const notificationMain = new BasicNotificationMainImpl(rpc, container, HEADLESSMAIN_RPC_CONTEXT.NOTIFICATION_EXT); rpc.set(HEADLESSPLUGIN_RPC_CONTEXT.NOTIFICATION_MAIN, notificationMain); + + const loggerMain = new LoggerMainImpl(container); + rpc.set(HEADLESSPLUGIN_RPC_CONTEXT.LOGGER_MAIN, loggerMain); } diff --git a/packages/plugin-ext/src/hosted/node/plugin-host-logger.ts b/packages/plugin-ext/src/hosted/node/plugin-host-logger.ts index 5a3f61f554772..d1ccc27954cda 100644 --- a/packages/plugin-ext/src/hosted/node/plugin-host-logger.ts +++ b/packages/plugin-ext/src/hosted/node/plugin-host-logger.ts @@ -19,8 +19,11 @@ import { RPCProtocol } from '../../common/rpc-protocol'; import { PluginLogger } from '../../plugin/logger'; import { format } from 'util'; -export function setupPluginHostLogger(rpc: RPCProtocol): void { - const logger = new PluginLogger(rpc, 'plugin-host'); +/** + * @param name the logger name on the main side, so that hosts can be configured independently + */ +export function setupPluginHostLogger(rpc: RPCProtocol, name = 'plugin-host'): void { + const logger = new PluginLogger(rpc, name); function createLog(level: LogLevel): typeof console.log { return (message, ...params) => { diff --git a/packages/plugin-ext/src/main/browser/main-context.ts b/packages/plugin-ext/src/main/browser/main-context.ts index 5382e0f6483ba..cb8053cf05571 100644 --- a/packages/plugin-ext/src/main/browser/main-context.ts +++ b/packages/plugin-ext/src/main/browser/main-context.ts @@ -65,7 +65,7 @@ import { NotebookKernelsMainImpl } from './notebooks/notebook-kernels-main'; import { NotebooksAndEditorsMain } from './notebooks/notebook-documents-and-editors-main'; import { TestingMainImpl } from './test-main'; import { UriMainImpl } from './uri-main'; -import { LoggerMainImpl } from './logger-main'; +import { LoggerMainImpl } from '../common/logger-main'; import { McpServerDefinitionRegistryMainImpl } from './lm-main'; import { LanguageModelToolsMainImpl } from './lm-tool-main'; diff --git a/packages/plugin-ext/src/main/browser/logger-main.ts b/packages/plugin-ext/src/main/common/logger-main.ts similarity index 96% rename from packages/plugin-ext/src/main/browser/logger-main.ts rename to packages/plugin-ext/src/main/common/logger-main.ts index 619db24e88662..5b547bfec4ec2 100644 --- a/packages/plugin-ext/src/main/browser/logger-main.ts +++ b/packages/plugin-ext/src/main/common/logger-main.ts @@ -17,7 +17,7 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { interfaces } from '@theia/core/shared/inversify'; -import { LoggerMain, LogLevel } from '../../common'; +import { LoggerMain, LogLevel } from '../../common/plugin-api-rpc'; import { ILogger } from '@theia/core'; export class LoggerMainImpl implements LoggerMain {