有没有办法在浏览器中显示Rails的日志文件?

wer*_*erm 5 logging ruby-on-rails

这可能是(读:可能是)一个愚蠢的问题,但这里......

是否有一种简单的,最好是非第三方的方式在浏览器中显示Rails日志?它有点旧打开一个日志文件,然后关闭它并在下一个错误时重新打开它.当然,只需去domain.tld/logs,这将需要用户身份验证,这将是非常有用的.

kob*_*ltz 12

作为参考,有一种非常简单的方法可以做到这一点.但是,您可能希望使用某种身份验证/授权来保护此页面.

控制器:

lines = params[:lines]
if Rails.env == "production"
  @logs = `tail -n #{lines} log/production.log`
else
  @logs = `tail -n #{lines} log/development.log`
end
Run Code Online (Sandbox Code Playgroud)

日志文件视图:

<pre><%= @logs %></pre>
Run Code Online (Sandbox Code Playgroud)

查看显示链接:

<%= link_to "log file", log_path(lines: 100) %>
Run Code Online (Sandbox Code Playgroud)

路线:

get 'logs/:lines' => "pages#log", as: "log"
Run Code Online (Sandbox Code Playgroud)

  • 执行`log /#{Rails.env} .log`而不是if-else会不会更健壮一点? (2认同)

fl0*_*00r 7

您只需打开日志文件并将其内容放入浏览器即可.

现实主题:ruby:从文件中读取的所有方法.

此外,您应该知道您的日志增长非常快,并且在浏览器中显示整个日志并不是一个好主意.你可以打开最后100-200行.相关主题:在Ruby中读取文件的最后n行?

您也可以尝试这个解决方案:http://newrelic.com/.它更复杂,更少主题,但非常有用.


小智 7

我创建了一个名为browserlog的目的.

安装只是将gem添加到Gemfile:

gem 'browserlog'
Run Code Online (Sandbox Code Playgroud)

之后您只需要将引擎安装在您想要的路线上:

MyApp::Application.routes.draw do
  mount Browserlog::Engine => '/logs'
end
Run Code Online (Sandbox Code Playgroud)

一旦设置完成,访问/日志/开发(或生产,测试等)将显示如下窗口:

browserlog_screenshot http://andredieb.com/assets/images/browserlog1.png