我需要记录通过ActionMailer发送的电子邮件,而简单的文本文件是不够的。我需要将日志存储在ActiveRecord模型中。电子邮件发送性能可能会受到影响,但在这种情况下,它是最好的选择(因为应用程序会定期访问日志)。
我还需要记录实际发送的内容和相关的错误,而不仅仅是我的控制器传递给ActionMailer的内容(即可能的最低级别实现)。
config.action_mailer.logger
似乎是劫持Rails已经存在的机制的理想方式。但是,根据我的理解,Log4r和默认的Ruby记录器只能输出到文本文件。
有什么建议吗?
谢谢!
答案 0 :(得分:1)
有两种方法可以解决您的问题,因为您也想存储邮件的内容 在此之前,邮件的典型内容是:
Sent mail to 123@gmail.com
From: abc@xyz.com
To: 123@gmail.com
Subject: Blah
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8
Hi, yourself.
这些概述如下
根据您的需要,可以在期刊(例如一小时,一天或一周)内将数据存储在数据库中。通过这种方式,您可以将作为后台作业运行,它将查找日志文件并提取您想要的内容。
更好的方法是,您将回调函数附加到邮件功能,这样无论何时发送邮件,即调用传递函数,回调函数自己被调用,从尾端查找日志到某个点,然后提取内容然后将其存储在同一个中。
回调函数可以是一个简单的ruby脚本,它打开日志并读取其内容,然后您可以使用它并以您想要的方式存储它。