Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中记录调用当前函数的文件/行的名称?_Php_Logging_Error Logging - Fatal编程技术网

如何在PHP中记录调用当前函数的文件/行的名称?

如何在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

我正在用php编写一个轻量级日志类。 如何自动记录调用Log类中函数的文件名/函数/行号,并保存行号、时间和内容,而不让用户在每次调用函数时都麻烦地输入
$\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()的日志记录解决方案。是的,我通常使用它进行调试,并在系统上线时将其关闭。谢谢,我还没有尝试过,但从示例中可以看出这一点。