我有一个joomla网站,运行3.0.2 *,我注意到joomla捕获的异常没有记录在任何地方。我目前正在使用内置数据库日志记录,由以下代码初始化,放置在自定义插件的onAfterInitialise函数中。
// 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.
答案 0 :(得分:0)
我使用setErrorHandling方法启用异常日志记录。它已被弃用,但我的理解是尚未引入任何替代方案。所以,我会保持这个开放,万一有人有更好的答案,但以下代码行解决了我的问题。
JError::setErrorHandling(JLog::ALL & ~JLog::WARNING, 'log');
& ~JLog :: WARNING是指定不记录“此类已弃用”错误。它并不理想,但它似乎是唯一有效的答案。