在 DokuWiki 中,有几种方法可以打印和查看调试日志。DokuWiki 提供了专门的调试函数和日志系统,让你能够记录和查看调试信息。
1. 使用 dbg()
函数打印调试信息
DokuWiki 提供了 dbg()
函数,可以直接在页面上打印调试信息:
dbg($variable); // 在页面上显示变量内容
dbg($variable, true); // 在HTML注释中显示变量内容(不可见但在源代码中可查看)
这个函数定义在 inc/infoutils.php
文件中: infoutils.php:522-533
2. 使用 Logger 类记录调试日志
对于更系统化的日志记录,DokuWiki 提供了 Logger
类:
use dokuwiki\Logger;
// 记录调试日志
Logger::getInstance(Logger::LOG_DEBUG)->log('调试信息标题', $data);
Logger 类定义在 inc/Logger.php
文件中: Logger.php:10-20
Logger 支持几种不同类型的日志: Logger.php:12-14
3. 启用调试模式
要使用调试功能,你需要在 DokuWiki 配置中启用调试模式:
- 编辑
conf/local.php
文件 - 添加或修改
$conf['allowdebug'] = 1;
设置
4. 查看调试日志
4.1 查看页面上的调试输出
如果你使用 dbg()
函数,调试信息会直接显示在页面上,或者在页面源代码的HTML注释中(如果使用了 dbg($var, true)
)。
4.2 查看日志文件
使用 Logger
类记录的日志会保存在 DokuWiki 的日志目录中:
- 调试日志:
data/log/debug.log
- 错误日志:
data/log/error.log
- 废弃功能日志:
data/log/deprecated.log
你可以通过FTP或服务器文件管理器访问这些文件。
4.3 使用内置调试页面
DokuWiki 还提供了一个内置的调试页面,可以显示系统信息和配置:
- 确保
$conf['allowdebug'] = 1;
已设置 - 访问
http://你的网站/doku.php?do=debug
这将显示一个包含系统信息的页面,如下所示: html.php:732-740
5. 使用 DebugHelper 类
对于更高级的调试需求,DokuWiki 提供了 DebugHelper
类: DebugHelper.php:9-20
实际使用示例
示例1:在插件中记录调试信息
<?php
// 在插件中使用调试功能
use dokuwiki\Logger;
class syntax_plugin_example extends \dokuwiki\Extension\SyntaxPlugin {
public function handle($match, $state, $pos, \Doku_Handler $handler) {
// 使用dbg()直接在页面上显示
dbg("处理匹配: " . $match);
// 使用Logger记录到日志文件
Logger::getInstance(Logger::LOG_DEBUG)->log(
'插件调试',
['match' => $match, 'state' => $state, 'pos' => $pos]
);
// 处理逻辑...
return $data;
}
}
示例2:检查配置是否允许调试
<?php
// 检查是否允许调试
global $conf;
if ($conf['allowdebug']) {
dbg("调试模式已启用");
// 执行调试代码
}
注意事项
- 安全考虑:在生产环境中应禁用调试功能(
$conf['allowdebug'] = 0;
),因为调试信息可能包含敏感数据。 - 日志轮换:DokuWiki 的日志文件会按日期自动轮换,每天创建一个新的日志文件。
- 禁用特定类型的日志:你可以在配置中禁用特定类型的日志:
$conf['dontlog'] = 'debug,deprecated'; // 禁用调试和废弃功能日志
Notes
DokuWiki 提供了多种调试工具,从简单的 dbg()
函数到更复杂的 Logger
类和 DebugHelper
。选择哪种方法取决于你的具体需求和调试场景。
在开发插件或修改 DokuWiki 核心时,良好的日志记录习惯可以帮助你更快地识别和解决问题。但请记住,在生产环境中应该禁用详细的调试日志,以避免性能问题和潜在的安全风险。