Günlük olay PHP olsun satır numarası

0 Cevap php

Tamam benim Günlüğü Sınıf için başka bir soru HERE var ama günlük dosyası giriş çağıran komut dosyası satır numarasını eklemek mümkün istedim.

I _Line _ gördük ama bu bana bu anda olan hattın satır sayısını verir.

Örnek:

a.php

$log = new Logger();
$log->debug('hello'); // Say this is line #20

Şimdi hata ayıklama benim Logger.php sınıfında () Ben mesela üzerinde _Line _ Magic, sürekli hat # 300 kullanın. Ben komut dosyasını çalıştırdığınızda, ben 'hat 20 üzerinde' okumak için günlük girişini istiyorum ama 'hattı 300' okudum. Işlevine satır sayısını geçen yanı sıra ben bu yapabileceğini başka bir yolu var mı?

Örnek ayıklama sınıf işlevi

public function debug($message) {
        if(DEBUG) {
            $this->calling_script = $this->getScriptBaseName();
            $this->log_file = LOG_FILE_DIRECTORY."/".$this->calling_script.".log";
            $this->fh = fopen($this->log_file, 'a') or die("Can't open log file: ".$this->log_file);

            if($this->first_run) {
                $this->log_entry = "\n[" . date("Y-m-d H:i:s", mktime()) . "][debug][line:".__LINE__."]:\t".$message."\n";
            } else {
                $this->log_entry = "[" . date("Y-m-d H:i:s", mktime()) . "][debug][line:".__LINE__."]:\t".$message."\n";
            }       
            fwrite($this->fh, $this->log_entry);
            fclose($this->fh);

            $this->first_run = false;
        }       
    }

EDIT: debug_backtrace () iyi çalışıyor! Aşağıdaki Çalışma

public function debug($message) {
        if(DEBUG) {
            $debug_arr = debug_backtrace();
            $this->calling_script = $this->getScriptBaseName();
            $this->log_file = LOG_FILE_DIRECTORY."/".$this->calling_script.".log";
            $this->fh = fopen($this->log_file, 'a') or die("Can't open log file: ".$this->log_file);

            if($this->first_run) {
                $this->log_entry = "\n[" . date("Y-m-d H:i:s", mktime()) . "][debug]:\t".$message." [line:".$debug_arr[0]['line']."]\n";
            } else {
                $this->log_entry = "[" . date("Y-m-d H:i:s", mktime()) . "][debug]:\t".$message." [line:".$debug_arr[0]['line']."]\n";
            }       
            fwrite($this->fh, $this->log_entry);
            fclose($this->fh);

            $this->first_run = false;
        }       
    }

0 Cevap