如何在PHP中记录调用当前函数的文件/行的名称?
我正在用php编写一个轻量级日志类。 如何自动记录调用Log类中函数的文件名/函数/行号,并保存行号、时间和内容,而不让用户在每次调用函数时都麻烦地输入如何在PHP中记录调用当前函数的文件/行的名称?,php,logging,error-logging,Php,Logging,Error Logging,我正在用php编写一个轻量级日志类。 如何自动记录调用Log类中函数的文件名/函数/行号,并保存行号、时间和内容,而不让用户在每次调用函数时都麻烦地输入$\uuuuuuuuuuuuuuuu和$\uuuuuuuuuuuuuuuuuuuuu FILE。有什么事我可以直截了当地说 例如: class Log { static private $instance; static $logfile; private function __construct(){ // doesn't need t
$\uuuuuuuuuuuuuuuu
和$\uuuuuuuuuuuuuuuuuuuuu FILE
。有什么事我可以直截了当地说
例如:
class Log {
static private $instance;
static $logfile;
private function __construct(){
// doesn't need to do anything
// one logging object to avoid/control future/potential race conditions
}
public function getInstance(){
if(!Self::$instance) {
Self::$instance = new Log();
} else {
return Self::$instance;
}
}
public function criticalLog($string){
// I want this to be logging line number, filename
}
}
现在,我希望能够在文件api.php第15行中找到类似的内容
logInstance.criticalLog("This log is important");
在我的日志文件中,我想看到
12/10/09-11:15 api.php 15此日志非常重要
有什么想法吗?我看过PEAR和Log4HP解决方案,但它们对于我想要的东西来说似乎相当沉重。看看这个函数,它似乎提供了您需要的所有信息:
function, line, file, class, object, type, args
魔法常量:在这里没有帮助,因为它们将返回criticalLog()函数的文件和行。他必须将常量作为参数包含到调用中,这是可行的,但很麻烦。但根据我的经验,它非常昂贵,在生产使用中,我倾向于关闭它。但这适用于所有可能都依赖于debug_backtrace()的日志记录解决方案。是的,我通常使用它进行调试,并在系统上线时将其关闭。谢谢,我还没有尝试过,但从示例中可以看出这一点。