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.

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top