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 等级的错误,就会给我们发邮件推送

\

类似这种。

\

\

当然,邮件模版也是可以自己重写的。

\

\

这样是不是会给自己省下很多钱啊?一旦有错误出现,我们能及时收到。然后进行修复还怎么惩罚。哈哈哈哈哈哈哈哈哈

讨论数量: 1
Summer

文章里有好多斜杆

4年前 评论
coffey (楼主) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!