带有 Unicorn 和 Sinatra 的 nginx 服务器不记录崩溃

nginx server with Unicorn and Sinatra not logging crashes

我有一个使用 Ruby、Sinatra、Unicorn 和 nginx 的服务器。我最近遇到了一次崩溃,在终端 运行 时重现了这个问题,我可以看到它产生了这个崩溃日志:

/Users/Andrew/.rvm/gems/ruby-2.3.0/gems/tweetstream-2.6.1/lib/tweetstream/client.rb:449:in `block in connect': Failed to reconnect after 6 tries. (TweetStream::ReconnectError)
    from /Users/Andrew/.rvm/gems/ruby-2.3.0/gems/em-twitter-0.3.5/lib/em-twitter/connection.rb:297:in `invoke_callback'
    from /Users/Andrew/.rvm/gems/ruby-2.3.0/gems/em-twitter-0.3.5/lib/em-twitter/connection.rb:269:in `rescue in schedule_reconnect'
    from /Users/Andrew/.rvm/gems/ruby-2.3.0/gems/em-twitter-0.3.5/lib/em-twitter/connection.rb:264:in `schedule_reconnect'
    from /Users/Andrew/.rvm/gems/ruby-2.3.0/gems/em-twitter-0.3.5/lib/em-twitter/connection.rb:92:in `unbind'
    from /Users/Andrew/.rvm/gems/ruby-2.3.0/gems/eventmachine-1.2.0.1/lib/eventmachine.rb:1483:in `event_callback'
    from /Users/Andrew/.rvm/gems/ruby-2.3.0/gems/eventmachine-1.2.0.1/lib/eventmachine.rb:194:in `run_machine'
    from /Users/Andrew/.rvm/gems/ruby-2.3.0/gems/eventmachine-1.2.0.1/lib/eventmachine.rb:194:in `run'
    from /Users/Andrew/.rvm/gems/ruby-2.3.0/gems/thin-1.7.0/lib/thin/backends/base.rb:73:in `start'
    from /Users/Andrew/.rvm/gems/ruby-2.3.0/gems/thin-1.7.0/lib/thin/server.rb:162:in `start'
    from /Users/Andrew/.rvm/gems/ruby-2.3.0/gems/rack-1.6.4/lib/rack/handler/thin.rb:19:in `run'
    from /Users/Andrew/.rvm/gems/ruby-2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1506:in `start_server'
    from /Users/Andrew/.rvm/gems/ruby-2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1444:in `run!'
    from server.rb:234:in `<main>'

但是我之前在找错误日志的时候,并没有找到类似上面的内容。

我的 /etc/nginx/nginx.conf 文件将此显示为日志的位置:

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

但是我转到了这两个目录,访问日志只显示了所有请求,正如我所料,错误日志是空的。

如果我的日志存储在别处,我如何确定它在哪里?或者,如果由于某种原因没有记录崩溃,我如何确保它是?

我建议您在 unicorn.rb 文件中为独角兽设置 stderrstdout 日志。

# set path to app that will be used to configure unicorn,
# note the trailing slash in this example
@dir = File.dirname(__FILE__) + '/'

worker_processes 2
working_directory @dir

timeout 30

# Specify path to socket unicorn listens to,
# we will use this in our nginx.conf later
listen "/home/vagrant/sockets/unicorn.sock", :backlog => 64

# Set process id path
pid "#{@dir}tmp/pids/unicorn.pid"

# Set log file paths
stderr_path "/var/log/unicorn/stderr.log"
stdout_path "/var/log/unicorn/stdout.log"