生产日志是空白的?

时间:2014-05-01 05:40:58

标签: ruby-on-rails configuration puma

我的美洲狮配置:

path = Dir.pwd + "/tmp/puma/"

threads 0,20
environment "production"
daemonize true
drain_on_shutdown true

bind  "unix://" + path + "socket/puma.sock"
pidfile path + "pid/puma.pid"
state_path path + "pid/puma.state"

我的环境/ production.rb

MyApp::Application.configure do    
  config.log_level = :debug
end

我启动服务器:

starkers@ubuntu:~/Desktop/myspp$ pumactl -F config/puma.rb start
=> Booting Puma
=> Rails 4.0.2 application starting in production on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
config.eager_load is set to nil. Please update your config/environments/*.rb files accordingly:

  * development - set it to false
  * test - set it to false (unless you use a tool that preloads your test environment)
  * production - set it to true

Puma 2.8.2 starting...
* Min threads: 0, max threads: 16
* Environment: production
* Listening on tcp://0.0.0.0:3000

我浏览了我的应用。我的log / production.log是空白的。不确定为什么?

我的应用程序中的目录访问权限为0777

不知道造成这种情况的原因。真的需要日志(显然)。在本地和远程发生,因此它与我的配置有关。但是,我不确定是什么配置。 puma / ubuntu / rails中有什么可能导致这种情况吗?

development.log工作正常。

我已将我的development.rb粘贴到我的production.rb文件中。字面相同。好的?相同的development.rb和生产.rb然而:

RAILS_ENV=development rails s

填充development.log

RAILS_ENV=production rails s

让production.log像Kim Kardashian的头一样空洞。

2 个答案:

答案 0 :(得分:3)

在配置文件的末尾设置bind

path = Dir.pwd + "/tmp/puma/"

threads 0,20
environment "production"
daemonize true
drain_on_shutdown true

pidfile path + "pid/puma.pid"
state_path path + "pid/puma.state"
bind  "unix://" + path + "socket/puma.sock"

我使用命令pumactl -F config/puma.rb start启动服务器(我想没有区别,但无论如何)。

我建议使用#{}作为路径:

pidfile "#{path}pid/puma.pid"
state_path "#{path}pid/puma.state"
bind  "unix://#{path}socket/puma.sock"

但这是你的选择。

希望它有所帮助(对我而言,你的配置也不起作用)。

您还可以添加Puma日志:

stdout_redirect "#{Dir.pwd}/log/puma.stdout.log", "#{Dir.pwd}/log/puma.stderr.log"

bind之前添加此行。

答案 1 :(得分:1)

如果要将服务器的输出添加到日志中,最简单的方法是告诉系统执行此操作。运行服务器启动命令,如:

pumactl -F config/puma.rb start >> log/development.log

将服务器的每一行输出附加到开发日志。虽然为了使调试更容易,但您可能希望为每个服务器提供自己的日志,例如log/puma.log。如果这样做,您可能希望每次启动服务器时都从头开始重写文件,而不是保留累积日志,如果是这种情况,只需将>>转换为>,例如:

pumactl -F config/puma.rb start > log/puma.log

但是,如果您将系统设置为在服务器失败时自动重新启动服务器,则使用>将覆盖服务器重新启动时可能导致崩溃的日志。

同样,您可以通过启动rails服务器来使production.log正常工作:

RAILS_ENV=production rails s >> log/production.log

如果您想像在生产环境中那样在后台运行服务器,可以在末尾添加&字符,如:

pumactl -F config/puma.rb start > log/puma.log &

如果执行此操作,您可能希望存储进程标识符,以便稍后可以终止服务器,因为^C不适用于后台进程。要存储进程ID,请在lib/pids/puma.pid之类的地方创建另一个空文件,然后将该puma服务器的进程ID导出到空文件中,如:

pumactl -F config/puma.rb start > log/puma.log &
echo $! > lib/pids/puma.pid

然后您可以使用以下命令终止服务器:

kill `cat lib/pids/puma.pid`

重要的是要记住,即使将服务器的输出附加到development.log文件,它也不会显示在开发rails服务器的输出中。如果要实时查看日志以进行调试,可以使用tailf命令,例如:

tailf log/puma.log

有关命令行界面的更多信息,Command Line Crash Course是一个很好的资源。