2011-01-03 5 views
2

Cake PHP speichert alles unter dem Ordner/app/tmp/logs und wenn Sie mehrere Server haben, um zu sehen, was bei jedem passiert, müssen Sie auf jedem Server Protokolle überprüfen Mappe.Gibt es eine bekannte gute Möglichkeit, mehrere Server für CakePHP protokollieren

Gibt es eine Lösung, die ich mit CakePHP verwenden kann, um an einem Ort die Protokollierung für CakePHP zu zentralisieren, wobei die Protokolldateien täglich gespeichert und zurückgesetzt werden.

Antwort

1

Mit Cake können Sie einen Parameter in der Funktion Controller :: log() festlegen.

http://book.cakephp.org/view/159/Using-the-log-function

Grundsätzlich, wenn Sie haben einen Fehler auf:

$this->log('some message describing the error', 'allserverslog'); 
// second param can also be LOG_ERROR or LOG_DEBUG, 2 predefined constants that identify the default logging files 
+0

Das Problem besteht darin, dass es immer noch im Ordner/tmp/logs für jeden Server, auf dem sich die Anwendung befindet, speichert (stellen Sie sich vor, Sie beschäftigen sich mit einem Lastenausgleich mit 10 Servern). Das würde helfen, zu identifizieren, aber wie kann man an einem einzigen Ort speichern, der allen gemeinsam ist? – Mcloide

+0

Ich würde vermuten, dass Sie es einen vollständigen Dateipfad, anstatt einen relativen geben können, und es wird es überall in dem Dateisystem, das Sie möchten, speichern. In einer Situation mit Lastenausgleich benötigen Sie entweder eine gemeinsame NFS-Freigabe, einen anderen Protokollierungsmechanismus (syslogd unterstützt die Netzwerkprotokollierung und kann mit PHP verbunden sein) oder die Protokollierung mit einem Datenbanksystem. Etwas, mit dem Sie über das Netzwerk schreiben können, ist für eine Multiserver-Protokollierung erforderlich. –

+0

Eigentlich einen Ausweg gefunden. Definieren Sie einen neuen Logger und senden Sie die zu speichernden Logs an die Datenbank. Erzeugt einen enormen Overhead, funktioniert aber. Eine Lösung ähnlich Log4PHP – Mcloide

0

Einige schnelle Forschung zeigt, dass ein sauber Methode, um die TMP Konstante neu zu definieren wäre (standardmäßig define('TMP', APP.'tmp'.DS)) in /app/webroot/index.php-zu-Punkt das gesamte Temp-Verzeichnis irgendwo anders. Dies ist keine gute Lösung, wenn der Ordner jedoch geteilt werden soll, da verschiedene Apps mit ihren temporären Dateien auf die Füße treten können.

Die einzige offensichtliche Möglichkeit, nur das Protokollverzeichnis an einer anderen Stelle zu zeigen, scheint /cake/config/paths.php zu bearbeiten.

Wenn Sie nur das schnelle Überfliegen von Protokolldateien verschiedener Anwendungen erreichen möchten, können Sie einfach mehrere Symlinks zu diesen Protokollen in ein Verzeichnis einfügen.
Oder andersherum können Sie jeden Ordner /app/tmp/logs einen Symlink zu einem freigegebenen Ordner machen. Ich bin mir nicht sicher, ob ich das empfehlen würde. Wenn Sie unterschiedliche Apps in dasselbe Protokoll schreiben, kann das verwirrend werden, da Sie nicht immer sicher sein können, von welcher App eine Nachricht stammt.