如何从vscode扩展写入日志?

hin*_*nst 10 visual-studio-code vscode-extensions language-server-protocol

我正在尝试使用VSCode的语言服务器开发扩展.我试图找出如何写文本来从扩展的语言 - 服务器部分记录.console.log什么都不产生

Ale*_*lex 23

作为更新,您可以使用vscode.window.createOutputChannel来创建输出容器,然后使用该appendLine方法对其进行写入。

    //Create output channel
    let orange = vscode.window.createOutputChannel("Orange");

    //Write to output.
    orange.appendLine("I am a banana.");
Run Code Online (Sandbox Code Playgroud)

创建输出通道的结果。

  • 这个回复有点晚了,但是你可以调用`orange.show();`来使输出通道显示出来。 (4认同)
  • 那个躺着的香蕉/橙子!:) (2认同)

小智 15

只需打开 vscode 并转到菜单“帮助”->“切换开发人员工具”,控制台就会显示在右侧窗口中。


Tom*_*lny 8

在服务器端尝试使用connection.console.log。

// Create a connection for the server. The connection uses 
// stdin / stdout for message passing
let connection: IConnection = createConnection(process.stdin, process.stdout);
connection.console.log(`Console test.`);
Run Code Online (Sandbox Code Playgroud)

该消息显示在客户端的调试控制台中。

对于客户端,简单的 console.log 对我来说效果很好。

  • IConnection 是 [vscode-languageserver-node](https://github.com/Microsoft/vscode-languageserver-node) 模块的一部分。 (5认同)

TBi*_*iek 6

您必须outputChannelName在客户端扩展代码内的客户端选项上设置属性:

let clientOptions: LanguageClientOptions = {
  outputChannelName: 'XYZ Language Server',
};
Run Code Online (Sandbox Code Playgroud)

一旦完成,就可以使用console.log()它,它将显示在VSCode扩展输出面板中。

  • 这有点不清楚:我该把它放在哪里,为什么要使用它而不是其他答案中的“createOutputChannel”指令,等等。 (3认同)