Heroku Review App配置和日志记录(与生产配置/日志记录相对)

时间:2016-07-17 16:36:09

标签: node.js bash heroku

我正在调查我在Heroku Review Apps中遇到的一些问题。

看来,从Bash开始,无法访问配置(环境变量)或记录。如果我跑:

heroku logs --tail

这只是从生产应用程序返回日志(这是有道理的,因为似乎没有办法将范围保持在评论应用程序中)。我可以在Heroku仪表板中看到Review App日志,但即使这看起来有点偏,因为后续刷新将省略日志中的不同行(这就是为什么我试图从Bash中看到它们)。 / p>

另外,如果我这样做:

heroku config

它返回预期的配置值(即DATABASE_URL),但同样,我不确定这是否仅适用于生产。

例如,从评论应用中运行此代码:

console.log("process.env.PORT: " + process.env.PORT);
console.log("process.env.DATABASE_URL: " + process.env.DATABASE_URL);
console.log("process.env.PAPERTRAIL_API_TOKEN: " + process.env.PAPERTRAIL_API_TOKEN);

PORT正在返回一个值,但DATABASE_URLPAPERTRAIL_API_TOKEN都会返回undefined,即使这些值都填充在heroku config中。< / p>

所以我的问题是:

1)如何从Bash(或Heroku仪表板以外的任何其他可靠方法)查看Review App的日志?

2)评论应用和制作之间的配置值是否不同?如果是,我如何为评论应用配置它们?

3 个答案:

答案 0 :(得分:1)

使用--app指向您的评论应用,例如:

heroku config --app my_review_app
heroku config:set VAR=VALUE --app my_review_app

答案 1 :(得分:0)

有些插件可以收集日志,还有很多其他功能,例如警报。

所以你可以考虑使用其中一个。我只是给我们在我们的应用程序中使用的一个名为Logentries

https://elements.heroku.com/addons/logentries

答案 2 :(得分:0)

Yoni完全正确,但这里有更多细节。

运行//! @brief Reads a single byte of data from the EEPROM. //! @param address The EEPROM address to write the data to (note that not all //! 16-bits of this variable may be supported). //! @returns The byte of data read from EEPROM. //! @warning This function does not return until read operation is complete. uint8_t Eeprom_ReadByte(uint16_t address) { // Set address registers EEADRH = (uint8_t)(address >> 8); EEADR = (uint8_t)address; EECON1bits.EEPGD = 0; // Select EEPROM Data Memory EECON1bits.CFGS = 0; // Access flash/EEPROM NOT config. registers EECON1bits.RD = 1; // Start a read cycle // A read should only take one cycle, and then the hardware will clear // the RD bit while(EECON1bits.RD == 1); return EEDATA; // Return data } //! @brief Writes a single byte of data to the EEPROM. //! @param address The EEPROM address to write the data to (note that not all //! 16-bits of this variable may be supported). //! @param data The data to write to EEPROM. //! @warning This function does not return until write operation is complete. void Eeprom_WriteByte(uint16_t address, uint8_t data) { // Set address registers EEADRH = (uint8_t)(address >> 8); EEADR = (uint8_t)address; EEDATA = data; // Write data we want to write to SFR EECON1bits.EEPGD = 0; // Select EEPROM data memory EECON1bits.CFGS = 0; // Access flash/EEPROM NOT config. registers EECON1bits.WREN = 1; // Enable writing of EEPROM (this is disabled again after the write completes) // The next three lines of code perform the required operations to // initiate a EEPROM write EECON2 = 0x55; // Part of required sequence for write to internal EEPROM EECON2 = 0xAA; // Part of required sequence for write to internal EEPROM EECON1bits.WR = 1; // Part of required sequence for write to internal EEPROM // Loop until write operation is complete while(PIR2bits.EEIF == 0) { continue; // Do nothing, are just waiting } PIR2bits.EEIF = 0; //Clearing EEIF bit (this MUST be cleared in software after each write) EECON1bits.WREN = 0; // Disable write (for safety, it is re-enabled next time a EEPROM write is performed) } 时,响应的第一行会显示当前指向的应用。这应该是我的第一个线索,我最初错过了它。

heroku config

一旦我为我的评论应用程序运行配置,它确实返回空。

$ heroku config
=== fathomless-meadow-38193 Config Vars
DATABASE_URL: postgres://xxxxxxxxxx...

正如Yoni所说,您可以在设置配置变量时使用$ heroku config --app blooming-river-14132-pr-2 === blooming-river-14132-pr-2 Config Vars 开关指定应用。但我希望我的默认应用指向我的-app应用,该应用会引导我this post了解如何更改此内容:

blooming-river

现在我可以使用

设置$ heroku git:remote -a blooming-river-14132-pr-2
DATABASE_URL

我真的不想为每个新的拉取请求手动设置它,所以我发现Review Apps can inherit config vars from a parent app。不幸的是,我永远无法完成这项工作,至少不适用于$ heroku config:set DATABASE_URL=POSTGRES://xxxxxxxx...

所以我仍然试图解决这个问题,如果我这样做,我会更新这个答案。