相信用过 rails 的人,都写过一个自己的 rails 的项目,大多数人因该都部署在 heroku 上吧,因为免费的平台太少了。 那么 heroku 上部署了那么多的系统,他们的日志都是怎么记录的呢?原来他们有个用 erlang 写的日志服务叫做 Logplex,这个服务是可扩展的,他的作用是接收来自 http 和 tcp 的日志推送请求(这些请求可以来自你部署在 heroku 的 web 项目,heroku 的路由栈,heroku 平台本身,还有你项目增加的配件服务),其他的系统只要调用 http 接口,或者保持 tcp 链接并不断的推送,然后把收到的日志发送排水管道中(tcp 或 http),而我们通过 heroku logs --tail 或者 heroku 上的日志配件服务 (flydata,papertrail) 就是这个排水管道的接收方。Logplex 起到了一个日志路由的功能,:)。 https://blog.heroku.com/archives/2013/11/7/logplex-down-the-rabbit-hole 这个文章就是 Logplex 的开发人员在完成这个系统后,面对海量的 log 时,遇到的问题和怎么解决的过程。 顺便还能锻炼英语为以后出国做好准备,多好的事啊。 这个文章不是我找到的,而是看褚霸的 blog 里推荐的,被我剽窃过来了,啦啦啦。