如何查看未截断的完整日志详细信息

突然,我所有的邮件都被退回。我需要查看完整的日志详情。Discourse 中的视图被省略号截断了。我该如何查看完整条目?这对解决此问题至关重要,急需查看。

Reporting-MTA: dsn; a27-22.smtp-out.us-west-2.amazonses.com

Action: failed
Final-Recipient: rfc822; keith.jones@du.edu
Diagnostic-Code: smtp; 554 被阻止 - 请参阅 https://ipcheck.proofpoint.com/?ip=54.240.27.22
Sta…

您需要查看邮件服务器的日志。看起来 Discourse 正在发送邮件,但邮件服务器拒绝投递。

我在这儿有点迷茫。我使用 Amazon SES 发送邮件。已登录到容器的 bash 环境,但不知道在哪里可以找到 Discourse 的邮件日志。在 /var/log 目录下找不到任何相关内容。为我的完全无知表示歉意。我至少能在 Discourse 的 /logs 网址看到日志,但为什么在磁盘上找不到呢?它们是否存在于数据库中?

你好 @Andro

在 Discourse 中,Rails 的 Action Mailer 会在邮件被调度为 Sidekiq 任务后发送。

通常情况下,某些任务异常错误会记录在 Rails 的生产日志中,例如:

linux# docker exec -it your-app bash
your-app:/# cd /shared/log/rails


your-app:/shared/log/rails# grep -i SMTP *

production.log-20201215:Job exception: 454 4.7.0 Cannot authenticate due to temporary system problem. Try again later. m7sm3825233oou.11 - gsmtp

production.log-20201215:Job exception: 454 4.7.0 Cannot authenticate due to temporary system problem. Try again later. 63sm3561399otx.2 - gsmtp

production.log-20201215:Job exception: 454 4.7.0 Cannot authenticate due to temporary system problem. Try again later. z63sm4258403otb.20 - gsmtp

production.log-20201215:Job exception: 454 4.7.0 Cannot authenticate due to temporary system problem. Try again later. q18sm3815880ood.35 - gsmtp

production.log-20201215:Job exception: 454 4.7.0 Cannot authenticate due to temporary system problem. Try again later. h2sm4265076otn.15 - gsmtp

production.log-20201215:Job exception: 454 4.7.0 Cannot authenticate due to temporary system problem. Try again later. y84sm4346372oig.36 - gsmtp

production.log-20201215:Job exception: 454 4.7.0 Cannot authenticate due to temporary system problem. Try again later. 8sm4343514oii.45 - gsmtp

production.log-20201215:Job exception: 454 4.7.0 Cannot authenticate due to temporary system problem. Try again later. t18sm722516otc.64 - gsmtp

production.log-20201215:Job exception: 454 4.7.0 Cannot authenticate due to temporary system problem. Try again later. j22sm1840062otp.45 - gsmtp

因此,正如上面所示,你可能可以在 Rails 的生产日志中找到一些线索。

祝好,希望这能帮到你。

附:还有一个小事项可以检查,虽然可能不适用于你的用例,那就是在 Rails 控制台中运行:

EmailLog.where(bounced:true).count

或者更简单地:

EmailLog.bounced.count

另外,我忘了提到,如果你需要更多的日志记录,可以配置 Rails 以记录更多的邮件器信息:

config.action_mailer 提供了一些设置:

config.action_mailer.logger 接受一个符合 Log4r 接口或 Ruby 默认 Logger 类的记录器,该记录器随后用于记录 Action Mailer 的信息。设置为 nil 可禁用日志记录。

Discourse 开箱即用(OOTB)时,此设置默认为 nil,即不记录日志:

[5] pry(main)> Rails.application.config.action_mailer.logger
=> nil

例如,请参阅章节 3.10 配置 Action Mailer

问题是,我们使用的是亚马逊简单邮件服务(Amazon SES),我找不到任何查看日志的方法。我认为该服务本身就不提供日志功能。

你好 @neounix,非常感谢。我能够在 dated production.log 文件中查看完整的邮件详情。我可以看到来自 Amazon SES 的完整响应。这正是我所需要的。非常有用,不胜感激。

亲爱的 @Andro

不客气。很高兴能帮助您找到问题的根源。

节日快乐,蒸蒸日上!