我做不到 winston记录器将日志写入 stackdriver安慰。我将我的函数部署为 google firebase 函数(使用 firebase deploy
)。 console
日志记录工作正常,但我们没有在项目中使用这样的工具。
我尝试过的:
- 使用https://github.com/greglearns/winston-stderr输出到stderr
- 使用https://www.npmjs.com/package/@google-cloud/logging-winston (
winston.add(require('@google-cloud/logging-winston')); winston.log('error', 'Winston error!');
并添加参数,例如项目 IDprojectId
/服务帐户 JSON 凭据文件keyFilename
); - 使用https://github.com/findanyemail/winston-transport-stackdriver-error-reporting .也没有运气。我仍然看不到 stackdriver 中的日志。
请建议...我厌倦了实验(每次重新部署都需要时间)
最佳答案
最后我做了什么 - 实现 custom transport它实际上在后台调用了 console.log
。这很有帮助。
const winston = require('winston');
const util = require('util');
const ClassicConsoleLoggerTransport = winston.transports.CustomLogger = function (options) {
options = options || {};
this.name = 'ClassicConsoleLoggerTransport';
this.level = options.level || 'info';
// Configure your storage backing as you see fit
};
util.inherits(ClassicConsoleLoggerTransport, winston.Transport);
ClassicConsoleLoggerTransport.prototype.log = function (level, msg, meta, callback) {
let args = [msg, '---', meta];
switch (level) {
case 'verbose':
case 'debug':
console.log.apply(null, args);
break;
case 'notice':
case 'info':
console.info.apply(null, args);
break;
case 'warn':
case 'warning':
console.warn.apply(null, args);
break;
case 'error':
case 'crit':
case 'alert':
case 'emerg':
console.error.apply(null, args);
break;
default:
console.log.apply(null, args);
}
callback(null, true);
};
关于node.js - Firebase 函数 : logging with winston in stackdriver console,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45479084/