我在heroku上有一個小應用程序。 每當我想看日誌時,我都會去命令行作 web
heroku logs
這隻能讓我看到大約100行。 有沒有辦法在heroku上查看咱們的應用程序的完整日誌? bash
對於雪松堆棧,請參閱: app
https://devcenter.heroku.com/articles/oneoff-admin-ps 工具
你須要運行: post
heroku運行bash ... spa
Heroku將日誌視爲按時間排序的事件流。 出於各類緣由,不建議在此類環境中訪問文件系統上的*.log
文件。 命令行
首先,若是您的應用有多個dyno,則每一個日誌文件僅表明您應用事件的部分視圖。 您必須手動聚合全部文件才能得到完整視圖。 日誌
其次,Heroku上的文件系統是短暫的意思,不管什麼時候重啓或移動dyno(大約天天一次 )日誌文件都會丟失。 所以,您最多隻能得到一天的單個dyno日誌。 code
最後,在運行heroku console
甚至heroku run bash
的Cedar堆棧上, heroku run bash
不會將您鏈接到當前正在運行的dyno。 它專門爲bash
命令生成一個新的。 這稱爲一次性過程 。 所以,您將找不到運行實際http進程的其餘dynos的日誌文件,這些進程是爲heroku run
。 router
通常來講, 記錄和可見性是Heroku的一流公民,有幾種工具能夠解決這些問題。 首先,要查看全部dynos和應用程序/堆棧的全部層的應用程序事件的實時流,請使用heroku logs -t
命令將輸出拖尾到您的終端。
$ heroku logs -t 2010-09-16T15:13:46-07:00 app[web.1]: Processing PostController#list (for 208.39.138.12 at 2010-09-16 15:13:46) [GET] 2010-09-16T15:13:46-07:00 app[web.1]: Rendering template within layouts/application 2010-09-16T15:13:46-07:00 heroku[router]: GET myapp.heroku.com/posts queue=0 wait=0ms service=1ms bytes=975 2010-09-16T15:13:47-07:00 app[worker.1]: 2 jobs processed at 16.6761 j/s, 0 failed ...
這對於當即觀察應用程序的行爲很是有用。 若是要將日誌存儲更長時間,可使用提供日誌保留,警報和觸發器的衆多日誌記錄加載項之一。
最後,若是您想本身存儲日誌文件,能夠設置本身的系統日誌,以接收來自Heroku的事件流並自行進行後處理/分析。
簡介:不要使用heroku console
或heroku run bash
來查看靜態日誌文件。 使用heroku logs
或日誌記錄加載項將Heroku的日誌事件流輸入到您的應用程序中。
heroku logs -t
向咱們顯示實時日誌。
可能值得將免費的Papertrail計劃添加到您的應用程序中。 零配置,您能夠得到7天的日誌數據,最高可達10MB /天,並能夠搜索2天的日誌。
另請參閱各個流/過濾器。
例如,僅尾隨您的應用程序日誌
heroku logs --source app -t
或者只查看路由器日誌
heroku logs --ps router
或者把它們連在一塊兒
heroku logs --source app --ps worker
超好的..