Comment enregistrer le nom du fichier / ligne qui appelle la fonction en cours en PHP?

StackOverflow https://stackoverflow.com/questions/1880581

  •  18-09-2019
  •  | 
  •  

Question

Je suis en train d'écrire une classe d'exploitation forestière légère en php. Comment puis-je enregistrer automatiquement le nom de fichier / fonction / numéro de ligne où la fonction dans la classe Log est appelé à partir et d'enregistrer le numéro de la ligne et du temps et des choses sans faire mes utilisateurs s'embêter avec entrer $__LINE__ et $__FILE__ chaque fois qu'ils appellent la fonction. Y at-il quelque chose que je peux appeler implicitement.

Exemple:

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

}
}

Maintenant, je veux être en mesure de quelque chose comme dans le fichier par exemple api.php ligne numéro 15

logInstance.criticalLog("This log is important");

Dans mon fichier journal, je voudrais voir

12/10/09-11:15 api.php 15 This log is important

Toutes les idées? J'ai eu un coup d'oeil à des solutions de PEAR et log4php, mais ils semblent assez lourd pour ce que je veux.

Était-ce utile?

La solution

Jetez un oeil à la fonction debug_backtrace , il semblerait il fournit toutes les informations dont vous avez besoin:

function, line, file, class, object, type, args
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top