Logfile in Funktionen fortschreiben

Troff

Grünschnabel
Hallo,

weil ich bei Google nichts gefunden habe, und es mich eine Menge Zeit gekostet hat, selbst drauf zu kommen (dabei war's so einfach :) ) und ich garantiert mal wieder irgendwann danach suche, dachte ich mir, ich stells hier ein.

Ich habe ein Script geschrieben, in welchem ich aus verschiedenen Gründen ein Logfile führen möchte, um zu sehen, was das Script macht und wo es vielleicht hängt (manchmal kann man das je nach Einsatzzweck nicht sehen, wie in meinem Fall).

In dem Script sind Funktionen drin, auch dort möchte ich das Logfile fortgeschrieben wissen. Ich habe es folgendermaßen realisiert:

PHP:
<?php
$filename_log = "./log/write_history_test.log";
$f_handle = fopen($filename_log, "a");

fwrite($f_handle,"\n".date('d.m.Y h:m:s')." - starting logfile\n");

$name = "Denise van Hoorn";
$value = "124";

fwrite($f_handle,"Starting function test()\n");

$done = test($name,$value,$f_handle);

fwrite($f_handle,"And here we are back from the function...\n");
fclose($f_handle);

function test($_name,$_value, $f_handle){
    $neustring = $_name . "/" . $_value;
    fwrite($f_handle,"Returnwert = $neustring\n");
    return $neustring;
}
?>

Ich übergebe in den Parametern für die Funktion den Wert des zu schreibenden Logfiles mit und kann es so fortschreiben.

Gibt bestimmt elegantere Methoden.

Denise
 
Ja.Schreib eine Log-Klasse (Singleton). Dann kannst du von überall her schreiben und musst nicht mit fwrite in den verschiedenen Funktionen hantieren
 
Also so:

PHP:
<?php
log("\n".date('d.m.Y h:m:s')." - starting logfile\n");

$name = "Denise van Hoorn";
$value = "124";

log("Starting function test()\n");

$done = test($name,$value,$f_handle);

log("And here we are back from the function...\n");
fclose($f_handle);

function test($_name,$_value){
    $neustring = $_name . "/" . $_value;
    log("Returnwert = $neustring\n");
    return $neustring;
}

function log($message){
   $filename_log = "./log/write_history_test.log";
   $f_handle = fopen($filename_log, "a");
   fwrite($f_handle,$message);
   fclose($f_handle);
}
?>
 
Ist zwar kein Singleton, aber schon besser.

(Falls du dich mit Klassen, static usw. noch nicht auskennst, wirds mit dem Singleton vorerst auch nichts)
 

Neue Beiträge

Zurück