我在我的项目中使用Monolog(https://github.com/Seldaek/monolog),我们希望在应用程序出错时收到电子邮件。日志按预期工作但如果日志级别为ERROR(低于日志级别为DEBUG),我希望记录器向我发送电子邮件。
我尝试使用类NativeMailHandler,但它似乎不起作用,我更喜欢使用我们的SMTP邮件服务器(在PHP中运行良好,但我无法弄清楚如何将它与Monolog链接错误处理程序)
$logger = new Logger('LOG');
$logHandler = new StreamHandler('synchro.log',Logger::DEBUG);
$logger->pushHandler($logHandler);
答案 0 :(得分:1)
我为Monolog创建了PHPMailer处理程序。它使您可以使用PHPMailer将日志发送到电子邮件。
它在this also和GitHub上可用,但也可以在没有Composer的情况下使用(这需要手动安装Monolog和PHPMailer)。
<?php
use MonologPHPMailer\PHPMailerHandler;
use Monolog\Formatter\HtmlFormatter;
use Monolog\Logger;
use Monolog\Processor\IntrospectionProcessor;
use Monolog\Processor\MemoryUsageProcessor;
use Monolog\Processor\WebProcessor;
use PHPMailer\PHPMailer\PHPMailer;
require __DIR__ . '/vendor/autoload.php';
$mailer = new PHPMailer(true);
$logger = new Logger('logger');
$mailer->isSMTP();
$mailer->Host = 'smtp.example.com';
$mailer->SMTPAuth = true;
$mailer->Username = 'server@example.com';
$mailer->Password = 'password';
$mailer->setFrom('server@example.com', 'Logging Server');
$mailer->addAddress('user@example.com', 'Your Name');
$logger->pushProcessor(new IntrospectionProcessor);
$logger->pushProcessor(new MemoryUsageProcessor);
$logger->pushProcessor(new WebProcessor);
$handler = new PHPMailerHandler($mailer);
$handler->setFormatter(new HtmlFormatter);
$logger->pushHandler($handler);
$logger->error('Error!');
$logger->alert('Something went wrong!');
答案 1 :(得分:0)
好吧,我找到了解决问题的方法,也许有一天会帮助别人:
由于类NativeMailHandler正在使用mail()php函数。我更改了函数send()的monolog / monolog / src / Monolog / Handler / NativeMailhandler.php中的代码,并且我在那里声明了我的PHPMailer()而不是mail()函数。
$mailHandler = new NativeMailerHandler(your_email@email.com, $subject, $from,Logger::ERROR,true, 70);
$logHandler = new StreamHandler('synchro.log',Logger::DEBUG);
$logger->pushHandler($logHandler);
$logger->pushHandler($mailHandler); //push the mail Handler. on the log level defined (Logger::ERROR in this example), it will send an email to the configured mail in the send() function in monolog/monolog/src/Monolog/Handler/NativeMailhandler.php