为VSCode扩展创建日志文件

时间:2019-04-09 01:03:47

标签: typescript visual-studio-code

在VSCode扩展中将日志记录语句写入 文件 的标准方法是什么?

我觉得我缺少一些工作范式...我可以找到很多方法来使控制台日志对调试扩展程序更有用(通道,typescript-logging之类的库),但是我没有找到用于为我的扩展程序创建日志文件的任何方法。

这不是常见的做法吗?如果我的扩展程序用户遇到问题,是他们向我发送诊断信息以保存他们可以通过打开开发人员工具看到的控制台日志的最简单方法?

感谢任何建议

1 个答案:

答案 0 :(得分:0)

对于那些试图解决相同问题并寻求建议的人,我最后选择了winston.js,它提供了打字稿的类型。

我这样定义了一个记录器:

const logger: winston.Logger = winston.createLogger({
level: 'debug',
format: winston.format.combine(
    winston.format.simple(),
    winston.format.timestamp({
        format: 'YYYY-MM-DD HH:mm:ss'
    }),
    winston.format.printf(info => `${info.timestamp} ${info.level}: ${info.message}`)
),
transports: [
    new winston.transports.File({
        level: 'info',
        dirname: logFileDir,
        filename: logFileName
    }),
    new winston.transports.File({
        level: 'debug',
        dirname: logFileDir,
        filename: debugLogFileName
    }),
]
});
export logger;

然后可以从我的代码中的其他地方调用logger.info("whatever"),并将其写入指定的日志文件。

您还可以通过添加Console传输将日志也写入控制台,但是请注意this bug,它会阻止日志显示在VSCode的“调试控制台”中。 This workaround为我解决了这个问题。