1

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

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

+0

Отчет об ошибках в Stackdriver по-прежнему находится в бета-версии, и мы прилагаем все усилия, чтобы улучшить настройку. В качестве альтернативы инструкции по настройке, которую я предоставил, мы тестируем конечную точку HTTP API для отправки ошибок, зарегистрируйтесь здесь, если вы хотите быть альфа-тестером: https://docs.google.com/forms/d/1JNrDpBQYnpOparS75ab2L1YZHkM3ug3v9j-kWl8g7b0/viewform ? c = 0 & w = 1 – Steren

ответ

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, чтобы просмотреть результаты вашего приложения.

+0

Спасибо, код делает учебник более понятным. Я еще не тестировал код. Но я думаю, что хочу. –

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 
+0

Спасибо за помощь. Но похоже, что журналы, которые он печатает, совпадают с журналами службы ведения журнала в Stack Driver в Google Cloud. –