如何使“轻量级”Web服务器将日志打印到标准输出(STDOUT)?

13

背景:为了将本地主机运行为SSL,我按照这个网站上的说明进行操作。

设置完SSL证书之后,为了运行本地rails服务器,该网站建议执行以下步骤:

thin start --ssl <some more options>

当我这样做时,我注意到不再看到Rails日志被打印到STDOUT。

我如何将--ssl和其他选项传递给thin?这行不通:

bundle exec rails s thin --ssl

.../rails/commands/server.rb:33:in `parse!': 
    invalid option: --ssl (OptionParser::InvalidOption)

另外,我该如何让thin将Rails日志输出到标准输出?


相关链接:https://dev59.com/KWsz5IYBdhLWcg3wiYY0#7829852 - Lucio
3个回答

12

我认为你需要告诉Rails使用STDOUT来记录日志,而不是记录到log/development.log中,方法是在app/config/environments/development.rb中添加config.logger = Logger.new(STDOUT)


1
谢谢,但是这对我没用,因为日志只会输出到标准输出流(STDOUT),而不是同时输出到日志文件和标准输出流(STDOUT)。 - Zabba
1
我认为没有其他方法了。我甚至不知道当你使用rails server运行Rails时,日志会输出到标准输出流。我总是使用Foreman启动我的应用程序,并在其中跟踪日志。 - phoet
谢谢,Foreman很好地解决了这个问题。我只是添加了一个尾随日志文件的条目,效果很好! - Zabba

5

默认情况下,Well Thin不会记录任何日志,除非您通过传递选项来指定它这样做。

-D or --debug and -V or --trace 

但是需要注意的是,这只会跟踪请求/响应标头,而不是Rails特定的日志,因为你可能正在将Rails作为Rack应用程序启动。
我猜你需要在ssl模式下启动Rails,你可以在这里找到一些文档,这里这里
提醒一下,在Rails中使用Thin作为后端适配器,只需将gem 'thin'添加到Gemfile中并启动Rails即可,它将使用thin适配器启动Rails,但您不能像启动thin时那样传递thin选项。

0
请确保您的config/environments/development.rb文件已配置为打印日志,如果没有,请在该文件中添加以下行。
logger = ActiveSupport::Logger.new(STDOUT)
logger.formatter = config.log_formatter
config.logger = ActiveSupport::TaggedLogging.new(logger)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接