Como gravar o nome do arquivo / linha que chamou a função atual em PHP?
-
18-09-2019 - |
Pergunta
Eu estou escrevendo uma classe de log leve em php.
Como faço para gravar automaticamente o número filename / função / linha onde a função na classe Log está sendo chamado de e salvar o número da linha e o tempo e outras coisas sem fazer meus usuários se preocupar com a entrada $__LINE__
e $__FILE__
cada vez que chamar a função. Existe algo que eu possa chamar implicitamente.
Exemplo:
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
}
}
Agora eu quero ser capaz de algo assim em dizer arquivo linha api.php número 15
logInstance.criticalLog("This log is important");
No meu arquivo de log, eu gostaria de ver
12/10/09-11:15 api.php 15 This log is important
Todas as idéias? Eu tinha um olhar para soluções pêra e log4php, mas eles parecem muito pesado para o que eu quero.
Solução
Dê uma olhada na debug_backtrace função, parece que fornece todas as informações que você precisa:
function, line, file, class, object, type, args
Outras dicas
constantes mágicas: http://www.php.net/ manual / en / language.constants.predefined.php