gpt4 book ai didi

ruby-on-rails - 将语句投入生产

转载 作者:数据小太阳 更新时间:2023-10-29 07:53:12 26 4
gpt4 key购买 nike

在开发模式下,我们经常使用 puts 语句进行调试,但后来在代码移至生产环境时却错过了删除它们的情况。删除它们是否有助于我们增加响应时间?我无法在本地测试这种情况,因为它们会打印在服务器控制台中,但在生产中我确信它们不会打印在任何日志中。我也很好奇它们是否被执行,那么生产中的输出指向哪里。有办法查出来吗?

最佳答案

首先,不要到处乱用puts。以单一方法限制您的“调试”输出。通过这种方式,您可以非常轻松地控制输出、重定向它、处理它等。例如,这些可能是从简单的日志记录方法发展到更复杂的方法:

def debug_output(s)
STDERR.puts s
end

---

DEBUG_OUTPUT_MINIMUM_LEVEL = 3
def debug_output(s, level=DEBUG_OUTPUT_MINIMUM_LEVEL)
STDERR.puts s if level >= DEBUG_OUTPUT_MINIMUM_LEVEL
end

---

require 'logger'

LOGGER_OUTPUT_FILE = '/path/to/log/output'
def debug_output(s)
@logger ||= Logger.new(LOGGER_OUTPUT_FILE)
@logger << s
end

不过,您可以使用比 puts 更好的工具。学习使用debugger , 或 PRY在 Debug模式和/或使用 Ruby 的内置 LoggerSyslog这样您就可以控制调试级别的输出。

从历史上看,Ruby 关于使用 Syslog 的文档非常……缺乏。在 Ruby v2.0 中,MUCH 得到了改进并且现在有很好的文档记录,所以如果您想要真正强大的功能,请查看 Logger 或 Syslog 和 Syslog::Logger。

这是来自 Syslog 的文档。如果您可以执行以下操作,请考虑对代码调试/日志记录的影响:

Syslog messages are typically passed to a central logging daemon. The daemon may filter them; route them into different files (usually found under /var/log); place them in SQL databases; forward them to centralized logging servers via TCP or UDP; or even alert the system administrator via email, pager or text message.

关于ruby-on-rails - 将语句投入生产,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17349818/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com