Использование отчета об ошибках Google Cloud Platform с ExpressJS

Я поменял ExpressJS заявление от Heroku в Google App Engine,
Теперь все работает нормально.
Но мне любопытно, как отладить мое приложение, если некоторые исключения происходят на GAE,
На heroku, Я могу сделать heroku logs -t отследить ошибки. Я могу проверить переменную, напечатанную console.error(var) также.
Тем не менее, я не знаю, как сделать то же самое на GAE,

Я проверил ведение журнала Stack Driver, кажется, что он показывает только некоторые данные каждого HTTP-запроса вместо подробных журналов, таких как heroku,
Я обнаружил, что существует служба отчетов об ошибках драйвера стека. Это может то, что я хочу.
Вот учебник, рассказывающий нам, как настроить. Но шаги сбивают меня с толку.
У кого-нибудь есть опыт настройки отчетов об ошибках?
Я нахожу более четкие шаги для настройки этого.
Большое спасибо и ценится!

2 ответа

Решение

Для отчетов об ошибках Stackdriver:

Вы можете использовать код, аналогичный тому, который рекомендован для Google Compute Engine: https://cloud.google.com/error-reporting/docs/setup/compute-engine

Вот что сработало для меня, используя Express и Winston в гибкой среде App Engine:

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_log содержит только записи журнала HTTP-запросов в App Engine flex. Посмотри в stdout войти, чтобы увидеть вывод вашего приложения.

Если вы просто хотите прочитать данные из журналов, вы можете попробовать:

$ 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