In December, we rolled out the public beta of a sweet new logging system for Heroku. The new system combines log output from your app’s processes and Heroku’s system components (such as the HTTP router). With all of your logs collated into a single, time-ordered stream, you get an integrated view of everything happening in your app.
Here’s a sample:
$ heroku logs 2010-10-21T14:11:16-07:00 app[web.2]: Processing PostController#list (for 208.16.84.131 at 2010-10-21 14:11:16) [GET] 2010-10-21T14:11:16-07:00 app[web.2]: Rendering template within layouts/application 2010-10-21T14:11:16-07:00 app[web.2]: Rendering post/list 2010-10-21T14:11:16-07:00 app[web.2]: Rendered includes/_header (0.1ms) 2010-10-21T14:11:16-07:00 app[web.2]: Completed in 150ms (View: 27, DB: 121) | 200 OK [http://myapp.heroku.com/] 2010-10-21T14:11:16-07:00 heroku[router]: GET myapp.heroku.com/ dyno=web.2 queue=0 wait=0ms service=251ms bytes=24523 2010-10-21T14:11:16-07:00 heroku[nginx]: GET / HTTP/1.1 | 208.66.27.62 | 247 | http | 304
Logging comes in three plans:
- Basic provides access to logs from your app and the Heroku system.
- Expanded includes feature upgrades such as realtime tail and filtering. It’s free for verified users.
- Advanced supports high-traffic, production-grade apps with truly powerful features such as unlimited throughput and syslog drains. This plan is priced at $100.
Today we’re taking the beta label off of all the Logging add-on plans and moving them to general availability. All new apps will get basic logging by default, and existing apps can opt in to the new system by installing the logging:basic add-on. Make sure you have the latest Heroku client gem (gem install heroku) to access the client-side features of the new logging system.