symfony 邮件通知程序错误
最近比较忙,所以好久不更新博客了。接下来会一直持续更新博客的,另外已经在用 symfony4
重写这个博客了,到时候会顺带一起推出一些 symfony4 的教程。
以前没有自觉实现这块的东西,直到公司有了奖惩制度以后。为了不被罚款,于是研究起这个实现思路。
monolog
SwiftMailer
主要是基于这两个实现的。
monolog实际上已经实现了我们的这个功能,我们只需要拿着它的方法过来用就行了。
这是它的hub地址。https://github.com/Seldaek/monolog
我的项目中用的是symfony,所以就看了下文档。文档其实有提到这块。
1.使用日志教程 传送门
2.异常错误发邮件通知 传送门
其实只要照着文档来配置就行。
我在这里对日志进行了一些特殊处理。我喜欢把日志按天分散记录,不想放在系统默认下。所以做了一些小小的配置
monolog:
handlers:
rotate_handler:
type: rotating_file
path: '%kernel.logs_dir%/rotates/%kernel.environment%.log'
level: debug
rotating_file表示按天存储日志文件。具体参数配置请进传送门\
按天保存是可以了,接下来我们开始实现一个发送邮件功能。
跟着文档走,文档讲的很好理解。 传送门
写一个测试文件看看能否发送:
public function indexAction($name, \Swift_Mailer $mailer)
{
$message = (new \Swift_Message('test'))
->setFrom('form@email.com')
->setTo('to@email.com')
->setBody('test');
dump($mailer->send($message));exit;
}
注重说的是,你可能测试的时候各种配置都好了,却收不到邮件。可能是
https://symfony.com/doc/current/email/spoo...
我直接很粗暴的注释掉这段代码就行。
config/packages/swiftmailer.yaml
swiftmailer:
...
spool: { type: memory }
\
如果你的邮件用户名端口之类的配置没问题的话,现在应该可以发送邮件了。
\
\
两个单独的操作都已经好了,那么我们怎么让他们融合呢?这时候我们应该去看看 https://symfony.com/doc/current/logging/mo...
\
\
按照文档我们做一下配置
mail:
type: fingers_crossed
# 500 errors are logged at the critical level
action_level: critical
# to also log 400 level errors (but not 404's):
# action_level: error
# excluded_404s:
# - ^/
handler: deduplicated
deduplicated:
type: deduplication
handler: swift
swift:
type: swift_mailer
from_email: '%env(LOG_FORM_EMAIL)%'
to_email: '%env(LOG_TO_EMAIL)%'
subject: '%%message%%'
level: debug
formatter: monolog.formatter.html
content_type: text/html
然后我们程序只要有 critical 等级的错误,就会给我们发邮件推送
\
类似这种。
\
\
当然,邮件模版也是可以自己重写的。
\
\
这样是不是会给自己省下很多钱啊?一旦有错误出现,我们能及时收到。然后进行修复还怎么惩罚。哈哈哈哈哈哈哈哈哈
文章里有好多斜杆