joomla异常没有被记录


joomla exceptions are not being logged

我有一个运行3.0.2*的joomla站点,我注意到joomla捕获的异常没有记录在任何地方。我目前正在使用内置的数据库日志记录,由以下代码初始化,放在自定义插件的onAfterInitialize函数中。

        // Initialize logging. 
    jimport('joomla.log.log');
    $config = jFactory::getConfig();
    JLog::addLogger(array(
        'logger'    => 'database',
        'db_driver' => $config->get('dbtype'),
        'db_host'   => $config->get('host'),
        'db_user'   => $config->get('user'),
        'db_pass'   => $config->get('password'),
        'db_prefix' => $config->get('dbprefix'),            
        'db_database' => ctaSettings::get('logging.db'),
        JLog::ALL,
        ''
    )); 

ctaSettings::get是一个类方法,用于检索用于日志记录的数据库的名称。我可以验证它是否正常工作,以及是否记录了以下命令:

JLog::add(__LINE__. " - ". __FILE__, JLog::INFO, 'cat');

但是,如果在组件中引发异常,则不会记录任何内容。Joomla应该记录被捕获的异常吗?有没有办法让Joomla内置的错误处理功能自动记录这些事情?我们有相当多的自定义代码,如果每个自定义组件、插件和模块都必须进行修改,以便在抛出错误时显式记录错误,这将是不方便的。

* We're working on upgrading, but cannot at the moment.

我使用了setErrorHandling方法来启用异常日志记录。它被否决了,但我的理解是,还没有引入任何替代方案。所以,我会保持开放,以防有人有更好的答案,但下面的代码行解决了我的问题。

JError::setErrorHandling(JLog::ALL & ~JLog::WARNING, 'log');

&JLog::WARNING是指定不记录"不推荐使用此类"错误。这并不理想,但似乎是唯一可行的答案。