我正在调查我在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_URL
和PAPERTRAIL_API_TOKEN
都会返回undefined
,即使这些值都填充在heroku config
中。< / p>
所以我的问题是:
1)如何从Bash(或Heroku仪表板以外的任何其他可靠方法)查看Review App的日志?
2)评论应用和制作之间的配置值是否不同?如果是,我如何为评论应用配置它们?
答案 0 :(得分:1)
使用--app指向您的评论应用,例如:
heroku config --app my_review_app
heroku config:set VAR=VALUE --app my_review_app
答案 1 :(得分:0)
有些插件可以收集日志,还有很多其他功能,例如警报。
所以你可以考虑使用其中一个。我只是给我们在我们的应用程序中使用的一个名为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...
。
所以我仍然试图解决这个问题,如果我这样做,我会更新这个答案。