Answers:
您可以使用Magento Hackthon Logger来完成此工作:https : //github.com/firegento/firegento-logger/
这不是问题,但是该扩展有一些扩展:https : //github.com/magento-hackathon/LoggerSentry/
我想说的是:轻松实现自己的“作家” :-)
这似乎不像我认为应该从我进行的某些搜索中获得的那样容易,因此,我发布了一个问题,以供将来参考。
您可以为使用errors / local.xml引发的异常启用电子邮件通知。您可以将您的文件复制errors/local.xml.template
到`errors / local.xml',然后放入您要使用的电子邮件地址和主题行。
<config>
<skin>default</skin>
<report>
<action>email</action>
<subject>domain.com exception</subject>
<email_address>name@example.com</email_address>
<trash>leave</trash>
</report>
</config>
然后,如果Magento的错误处理系统抛出并捕获了任何异常,并向最终用户显示了错误报告屏幕,您将收到一封电子邮件通知。
如果您还希望获取未引发但已记录的异常的电子邮件通知,则需要进一步了解。
首先,重写核心日志编写器类。
完成此操作后,在记录异常后,只需放入代码即可向自己发送电子邮件。请记住,您需要从中保存日志文件名__construct()
,以便可以从_write()
方法中访问它。
class Module_Core_Model_Zend_Log_Writer_Stream extends Zend_Log_Writer_Stream
{
protected $_streamOrUrl;
public function __construct($streamOrUrl, $mode = NULL)
{
parent::__construct($streamOrUrl, $mode);
$this->_streamOrUrl = $streamOrUrl;
}
protected function _write($event)
{
parent::_write($event);
if (strpos($this->_streamOrUrl, 'exception.log') === false) {
return;
}
// Send email here
}
}
通过电子邮件发送每个异常可能会导致大量邮件。
将异常记录到异常日志中,然后每天在Linux中使用cronjob一次将其发送给自己,可能是一个更好的选择
0 23 * * * /usr/lib/sendmail email@domain.com < /home/shop.com/www/var/log/exception.log
邮寄后可以选择清理
0 23 * * * /usr/lib/sendmail email@domain.com < /home/shop.com/www/var/log/exception.log;rm /home/shop.com/www/var/log/exception.log
或者,如果需要更高的频率,则可以每小时执行一次。
这样,就无需覆盖任何文件并保持不断向自己发送邮件的服务器上的负载。
我不喜欢Mage :: log的自定义writerModel的实现,或者我不理解。对我来说,它没有利用Zend_Log设计来启用n个编写器。我会选择一个日志而不是一个作家。因此,我做了一个变通办法,以充分利用Zend_Log并仍然编写很多代码,因为我聚合了Zend_log。
class XX_XXX_Model_Log extends Zend_Log_Writer_Abstract{
/**
* @var Zend_Log
*/
protected $zendLog = array();
/**
*
* @param mixed $writer Zend_Log_Writer_Abstract or Config array
* @return void
*/
public function addWriter($writer)
{
return $this->zendLog->addWriter($writer);
}
/**
* Write a message to the log.
*
* @param array $event log data event
* @return void
*/
protected function _write($event){
$this->zendLog->log($event['message'], $event['priority']);
}
/**
* Konstruktor erweitert Log automatisch um Writer
*
* @param sting $file
*/
public function __construct($file){
$this->zendLog = new Zend_Log();
$this->enhance($file);
}
/**
* Hier werden die Writer and Zend_Log angehangen
*
* @param sting $file
*/
public function enhance($file){
/* put your custom Logger here - example firePHP*/
$writer = Mage::getModel('gdcore/firephp');
$writer->addFilter(Zend_Log::Debug);
$this->addWriter($writer);
}
}
/**
* Construct a Zend_Log driver
*
* @param array|Zen_Config $config
* @return Zend_Log_FactoryInterface
*/
static public function factory($config){
return Zend_Log::factory($config);
}
}
顺便说一下,在Magento 1.7中,我仅收到几封电子邮件。我想每封电子邮件对于一个请求都有一些例外/错误。因此,频繁访问的网站仍会产生许多电子邮件。我会看看的。现在对我来说还可以。
您还可以使用一个模块来创建电子邮件通知或获取出现异常的客户的每日报告:
这里解释了实现:https : //grafzahl-io.blogspot.de/2017/03/notifications-for-every-exception-in-magento.html
这是监视错误和其他事件的模块(如果客户遇到异常,甚至可以对客户进行折扣):https : //grafzahl.io/notify-module