Создание файла журнала для расширения VSCode

#typescript #visual-studio-code

#typescript #visual-studio-code

Вопрос:

Каков стандартный способ записи инструкций ведения журнала в расширении VSCode в файл?

Я чувствую, что в работе есть какая-то парадигма, которую я упускаю… Я могу найти множество способов сделать консольный журнал более полезным для отладки моего расширения (каналы, библиотеки, такие как typescript-logging), но я не вижу никаких методов для создания файла журнала для моего расширения.

Разве это не обычная практика? Если у пользователя моего расширения возникает проблема, это самый простой способ для них отправить мне диагностику, чтобы сохранить журнал консоли, который они могут увидеть, открыв инструменты разработчика?

Спасибо за любые предложения

Комментарии:

1. Расширения получают папку logPath, которой они владеют и в которую могут записывать журналы. Что касается того, как вы на самом деле записываете туда файл и что вы пишете, вы можете использовать любую библиотеку ведения журнала, которую вы хотите, или просто использовать Node API. github.com/Microsoft/vscode/blob /…

Ответ №1:

Для тех, кто пытается решить ту же проблему и ищет предложения, я в конечном итоге выбралwinston.js который предоставляет типы для typescript.

Я определил регистратор следующим образом:

 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 транспорт, но будьте осторожны с этой ошибкой, которая предотвращает отображение журналов в «Консоли отладки» VSCode. Это обходное решение решило эту проблему для меня.