Rails:如何让puts语句在生产环境与开发环境均输出?
解决Rails生产环境中
puts无法输出到日志的问题 嘿,这个场景我太熟悉了!在Rails里直接用puts确实只有开发环境的控制台能看到,生产环境因为服务器(比如Puma、Unicorn)的运行机制,puts的输出不会被捕获到正式日志里。要让你的自定义信息在生产和开发环境都能正常记录,得换用Rails内置的日志系统,具体做法如下:
替换
puts为Rails日志方法
把你代码里的puts换成Rails.logger对应的日志级别方法,比如info、debug、warn等。以你的create方法为例,修改后应该是这样:def create Rails.logger.info "working on production and development" end这样不管是开发环境的控制台,还是生产环境的
log/production.log文件,都会看到这条日志信息。调整生产环境的日志级别(可选)
生产环境默认的日志级别通常是:info,如果你想用更细致的:debug级别记录信息,需要修改config/environments/production.rb里的配置:config.log_level = :debug改完后重启服务器,
:debug级别的日志就会被写入生产日志了。为什么不用
puts?
生产环境中,服务器进程的标准输出(puts的输出)一般不会被定向到正式日志文件,可能会被丢弃或者混在服务器的启动日志里,不利于后续的问题排查。而Rails的logger是专门为日志管理设计的,能和日志轮转、监控工具更好地兼容。
内容的提问来源于stack exchange,提问作者user1670773
相关产品推荐
相关产品推荐

