Rails 7.1.3 如何在生产环境中查看堆栈跟踪

问题描述 投票:0回答:1

如何查看在生产环境中运行的 Rails 7.1.3 应用程序的堆栈跟踪? 我习惯于跟踪 production.log 文件,但是该文件已不再存在 在参考This answer加上rails文档的各种链接之后,描述了各种解决方案,但是它们都是有缺陷的,并导致堆栈跟踪被推送到生产.log文件,但所有解决方案都会阻止渲染任何页面内容并导致空白屏幕,删除日志记录功能,我就可以渲染内容了。

我尝试过的选项包括向环境 production.rb 添加各种日志记录代码

新 Rails 应用程序自动生成的代码具有以下几行

  # Log to STDOUT by default
  config.logger = ActiveSupport::Logger.new(STDOUT)
    .tap  { |logger| logger.formatter = ::Logger::Formatter.new }
    .then { |logger| ActiveSupport::TaggedLogging.new(logger) }

摘自这里

broadcast = BroadcastLogger.new(stdout_logger, stderr_logger, file_logger)

从上面链接的已接受答案中进行的另一次尝试是这样的

config.logger = ActiveSupport::BroadcastLogger.new(
  ActiveSupport::TaggedLogging.new(ActiveSupport::Logger.new($stdout,              formatter: Logger::Formatter.new)),
  ActiveSupport::TaggedLogging.new(ActiveSupport::Logger.new("log/production.log", formatter: Logger::Formatter.new))
)

我认为文件日志记录被默认删除是有原因的,现在必须有一种替代的首选方法来调试生产应用程序?

尽管日志跟踪显示操作成功,但除原始代码之外的所有尝试都不会显示任何内容。

我需要调试一个无法找到tinymce javascript 资源的特定页面,这很可能取决于路由。由于无法查看堆栈跟踪,我陷入了困境。

ruby-on-rails logging stack-trace ruby-on-rails-7
1个回答
0
投票

最好弄清楚如何在生产中查看日志。

systemd
设置示例:

$ systemctl list-units | grep rails
  rails-app.service                     loaded active running   StackoverflowApp

可以使用

journalctl
查看日志:

$ journalctl -f -u rails-app.service

您还可以尝试跟踪系统日志:

$ tail -f /var/log/syslog

BroadcastLogger
仍然损坏,但似乎无需标记日志即可工作:

config.logger = ActiveSupport::BroadcastLogger.new(
  ActiveSupport::Logger.new($stdout,              formatter: Logger::Formatter.new),
  ActiveSupport::Logger.new("log/production.log", formatter: Logger::Formatter.new)
)
© www.soinside.com 2019 - 2024. All rights reserved.