【问题标题】:redirect console.log messages to an output channel将 console.log 消息重定向到输出通道
【发布时间】:2022-10-24 01:06:44
【问题描述】:

如何配置我的扩展程序以将所有 conselo.log}info|debug 消息写入输出通道? 这似乎是 LSP 扩展 See this issue where it was broken and then fixed 的默认设置,但是我无法找到如何为常规扩展设置此配置。

显然,可以直接创建和写入自定义Output Channel,但这需要我创建一个自定义日志记录类,它只是复制以前做过的一些事情。

【问题讨论】:

  • @rioV8,节点控制台不提供写入 VSCode 输出通道的能力。
  • 编写自己的 stream.Writable 实现并将其传递给构造函数
  • 是的,但这仍然需要将新控制台插入到 VSCode 中,因为这会为扩展创建上下文。请参考:code.visualstudio.com/api/extension-capabilities/overview
  • 让这个新的stream.Writable 将文本传送到输出通道并为您的扩展文件重新定义全局console

标签: visual-studio-code vscode-extensions


【解决方案1】:

这是一种解决方法,而不是确切的解决方案

我最终创建了一个记录器,它包装了 outputchannel 并写入它

import * as vscode from 'vscode';
import { OutputChannel } from "vscode";

export class Logger {
    private outputChannel:OutputChannel ;

    constructor(extensionOuputName: string) {
        this.outputChannel = vscode.window.createOutputChannel(extensionOuputName);
        this.outputChannel.show();
    }

    public append(o: any) {
        let isObject = (typeof o === 'object' && o !== null);
        this.outputChannel.appendLine(isObject ? JSON.stringify(o): o);
    }
}

然后在您的扩展程序中创建一个记录器并使用它

export class YourClass {
    private log: Logger = new Logger('Nav-Code');
    this.log.append(`Checking folder: ${this.projectFolder}`);

这将创建并显示一个名为“Nav-Code”的outputchannel

【讨论】:

    猜你喜欢
    • 2016-08-09
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 2020-02-28
    相关资源
    最近更新 更多