这可能是一个愚蠢的问题(请注意:很可能是),但是我还是想问一下...
有没有一种简单的、最好是非第三方的方法在浏览器中显示Rails日志?每次打开日志文件,然后关闭它并在下一个错误时重新打开它真的很烦人。如果只需转到domain.tld/logs
就可以查看日志,那将是超级棒的,当然需要用户身份验证。
这可能是一个愚蠢的问题(请注意:很可能是),但是我还是想问一下...
有没有一种简单的、最好是非第三方的方法在浏览器中显示Rails日志?每次打开日志文件,然后关闭它并在下一个错误时重新打开它真的很烦人。如果只需转到domain.tld/logs
就可以查看日志,那将是超级棒的,当然需要用户身份验证。
参考资料,有一种非常简单的方法可以实现这个功能。但是,您可能希望使用某种身份验证/授权方式来保护此页面。
控制器:
lines = params[:lines]
if Rails.env == "production"
@logs = `tail -n #{lines} log/production.log`
else
@logs = `tail -n #{lines} log/development.log`
end
日志文件查看:
<pre><%= @logs %></pre>
显示链接的视图:
<%= link_to "log file", log_path(lines: 100) %>
路由:
get 'logs/:lines' => "pages#log", as: "log"
您只需要打开日志文件并将其内容放入浏览器中即可。
相关主题:ruby:从文件读取的所有方法。
此外,您应该知道您的日志会增长得非常快,将整个日志显示在浏览器中并不是一个好主意。您可以只打开最后100-200行。相关主题:Ruby中读取文件的最后n行?
此外,您可以尝试这个解决方案:http://newrelic.com/。它更复杂,有点离题,但非常有用。
gem 'browserlog'
MyApp::Application.routes.draw do
mount Browserlog::Engine => '/logs'
end
Pimp my Log 可以用于可视化许多类型的日志,包括 Ruby on Rails。
它还包括用户管理和通知功能。
[编辑]
默认情况下,PimpMyLog 不支持 Ruby on Rails 日志。需要实现正则表达式才能与其配合使用。
[/编辑]
if-else
改为log/#{Rails.env}.log
,这样是否更加健壮一些?请注意不要改变原意。 - alexanderbird