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

голоса
1

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

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

Задан 30/05/2016 в 09:25
источник пользователем
На других языках...                            


2 ответов

голоса
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
Ответил 30/05/2016 в 17:50
источник пользователем

голоса
1

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

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

Вот то, что работает для меня, используя Экспресс и 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 Logging:

В самом деле, request_logсодержит только HTTP запросы записей журнала на App Engine прогибается. Посмотрите в stdoutжурнале , чтобы увидеть результат вашего приложения.

Ответил 31/05/2016 в 07:17
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more