1

我将我的ExpressJS应用程序从切换HerokuGoogle App Engine.
现在一切正常。
但是我很好奇如果在GAE.
heroku,我可以heroku logs -t跟踪错误。我也可以检查打印的变量console.error(var)
但是,我不知道如何在GAE.

我已经检查了 Stack Driver 的日志记录,它似乎只显示了每个 HTTP 请求的一些信息,而不是像heroku.
发现Stack Driver有报错服务。这可能是我想要的。
这是告诉我们如何设置的教程。但是这些步骤让我感到困惑。
有没有人有设置错误报告的经验?
我正在寻找更清晰的步骤来设置它。
非常感谢和赞赏!

4

2 回答 2

1

对于 Stackdriver 错误报告:

您可以使用类似于建议用于 Google Compute Engine 的代码:https ://cloud.google.com/error-reporting/docs/setup/compute-engine#send_exception_data

以下是在 App Engine 柔性环境中使用 Express 和 Winston 对我有用的方法:

var winston = require('winston');
winston.add(winston.transports.File, { filename: '/var/log/app_engine/custom_logs/my.errors.json' });

var report = function (err, req) {
  var payload = {
    serviceContext: {
      service: 'my service',
    },
    message: err.stack,
    context: {
      httpRequest: {
        url: req.originalUrl,
        method: req.method,
        referrer: req.header('Referer'),
        userAgent: req.header('User-Agent'),
        remoteIp: req.ip,
        responseStatusCode: 500,
      }
    }
  };
  winston.error (payload);
};

// Handle errors
app.use(function (err, req, res, next) {
  report(err, req);
  res.status(500).send(err.response || 'Something broke!');
});

对于 Stackdriver 日志记录:

实际上,request_logApp Engine flex 上仅包含 HTTP 请求日志条目。查看stdout日志以查看应用程序的输出。

于 2016-05-31T08:17:17.137 回答
0

如果您只想从日志中读取数据,可以尝试:

$ gcloud preview app logs read 
2016-05-30 18:46:29 default[alpha2]  saved to datastore: mountain biking
2016-05-30 18:46:29 default[alpha2]  saved to datastore: adventure
2016-05-30 18:46:29 default[alpha2]  saved to datastore: mountain bike
2016-05-30 18:46:29 default[alpha2]  saved to datastore: cycle sport
于 2016-05-30T18:50:25.877 回答