Joomla模板开发过程中,经常需要通过打印日志进行页面内容的调测。本文针对调测过程中使用的几种日志打印方法做一个简单的介绍,供开发过程中参考使用;
1、通过php echo直接打印
最简单的方法,则是通过echo方法,直接打印变量,可以在页面上直观的观察,使用方法如下:
if ($categoryIds) {
foreach ($categoryIds as $categoryId) {
echo $categoryId;
}
} else {
echo "categoryIds is null!";
}
2、调用Joomla LOG类
通常情况下,通过echo可以直接打印变量信息,但是如果Joomla有异常抛出的情况下,则通过echo的方法无法打印日志,我们可以直接调用Joomla的log类来打印日志。
具体使用方法如下:
use Joomla\CMS\Log\Log;
// 格式:Log::add(消息内容, 日志级别, 日志类别)
if ($categoryIds) {
foreach ($categoryIds as $categoryId) {
Log::add($categoryId, Log::DEBUG, 'article.category.php');
}
} else {
Log::add('categoryIds is null!', Log::DEBUG, 'article.category.php');
}
通过上述方法打印出的日志,可以在/administrator/logs/everything.php中查看。日志级别通过下面的方法指定:
Log::add('正常操作', Log::INFO); // 普通信息
Log::add('数据异常', Log::WARNING); // 警告
Log::add('数据库错误:' . $error, Log::ERROR); // 错误
如果要指定日志输出文件和格式,可以通过下述方法设置:
// 自定义日志目录(默认:administrator/logs/)
$logPath = JPATH_SITE . '/logs'; // 前端日志
// $logPath = JPATH_ADMINISTRATOR . '/logs'; // 后台日志
// 配置日志格式(可选,默认:JSON)
Logger::addLogger(
[
'text_file' => 'yourcomponent.log.php', // 日志文件名
'text_entry_format' => '{DATE} {TIME} {PRIORITY} {MESSAGE} [User: {user_id}]'
],
Log::ALL, // 记录所有级别
['com_yourcomponent'] // 仅记录该类别
);
总之,Joomla 日志核心是 Log::add()
,通过配置可灵活控制记录级别、类别和存储位置。建议在开发阶段使用 Log::DEBUG
记录详细信息,生产环境仅保留 Log::ERROR
以减少性能开销。