【发布时间】:2011-01-24 00:20:24
【问题描述】:
所以我正在尝试创建一种允许即时记录调试消息的方法,并且我想包括出现消息的文件名和行号。我的第一个倾向是将 debug_backtrace() 作为记录方法的参数之一,它返回一个包含当前文件名和行号的数组。
问题是,这只给出了第一个文件(index.php)的文件和行。 index.php 只是一个五行文件,它从包含文件中的类调用方法但是,因此行和文件信息总是说(index.php,第 5 行)无论如何并且无用。
无论你在代码的哪个位置,有没有办法获取当前行和文件?
加法
这是文件和行信息:
[2011-01-23 06:26:10] 信息: “请求不存在 控制器(测试)。”,文件: "/home/spotless/public_html/mymvc/index.php", 行:5,请求:“/test”
这里是整个 index.php:
<?php
include_once('application/init.php');
lev_init::init();
?>
这是在 init.php 文件(第 37 行)中使用 debug_backtrace() 的日志记录调用:
// if requested controller does not exist, log
lev_logging::message('Request made for non-existant controller ('.$requested_controller.').', debug_backtrace());
第二次更新
debug_backtrace 的var_dump
数组(1) { [0]=> 数组(6) { ["文件"]=> 字符串(42) “/home/spotless/public_html/mymvc/index.php” ["行"]=> int(5) ["函数"]=> 字符串(4)“初始化”[“类”]=>字符串(8) “lev_init” [“类型”]=> 字符串(2)“::” ["args"]=> 数组(0) { } } }
【问题讨论】:
-
不应该的。回溯应该包含完整的信息。你知道它是一个数组吗?你能展示一个示例回溯吗?
-
@dqhendricks:你确定文档显示它显示了每个函数调用的当前行和文件......
-
根据您的描述,这需要
__FILE__和__LINE__常量。 -
@Pekka @RageZ @mario 添加了其他信息。 mario,我不希望这个调用有两个参数而不是一个,另外我可能会在某些时候利用跟踪数组中的其他元素。
-
在数组上做一个
print_r(),里面应该有更多的信息