Wie Log Objekt?

11

Ich kann sehen, dass die Log-Fassade sehr nützlich ist. In den Dokumenten von Laravel:

  

Der Logger bietet die acht Protokollierungsstufen, die in RFC 5424 definiert sind:   Notfall, Alarm, kritisch, Fehler, Warnung, Hinweis, Info und Debug.

Aber wie würde ich eine Instanz eines Modells protokollieren? wie zum Beispiel:

%Vor%

Wäre es dann möglich, das Objekt $user zu protokollieren?

    
simo 01.02.2017, 11:10
quelle

3 Antworten

16

Dies funktioniert, obwohl die Protokollierung des gesamten Modells Ihr Protokoll ziemlich schnell erweitert.

%Vor%

Der true im zweiten Parameter der Methode print_r () gibt die Information zurück, anstatt sie zu drucken. Dadurch kann die Log-Fassade sie wie eine Zeichenfolge ausgeben.

    
Rob Fonseca 01.02.2017 12:01
quelle
1

Nein.

Der erste Parameter muss eine Zeichenfolge (oder eine Zeichenfolgenobjektdarstellung) sein. Wenn Sie irgendeinen anderen Typ von (rohen) Daten oder Objekten übergeben wollen, können Sie diese JSON immer verschlüsseln und in den Kontexteinstellungen wie folgt verschieben:

%Vor%

Oder:

%Vor%

Weitere Informationen zu den Methodensignaturen finden Sie hier .

    
GiamPy 01.02.2017 11:23
quelle
1
___ antwort43780319 ___

Ich habe kürzlich angefangen, Laravel zu verwenden, also funktioniert das sicher in 5.3 und 5.4, nicht sicher für frühere Versionen.

Der schnellste Weg, den ich mir vorstellen kann (für kleinere Objekte), wäre, ein Objekt in ein Array zu werfen:

%Vor%

Yo mag fragen, wie ist das möglich, erste Parameter der Debug-Methode (sowie Fehler, Hinweis und andere Protokollierungsmethoden in der Klasse Log) akzeptiert Zeichenfolge als erste Parameter, und wir übergeben das Array.

Also, die Antwort liegt tief in der Log Writer Klasse. Es gibt eine Methode, die jedes Mal aufgerufen wird, um die Formatierung der Nachrichten zu unterstützen, und sieht so aus:

%Vor%

Auch um etwas mehr zu klären, können Sie sich Folgendes ansehen: Ссылка und Sie werden sehen, dass die formateMessage-Methode das Formatieren des Nachricht jedes Mal.

    
___ tag123laravel ___ Laravel ist ein Open-Source-PHP-Web-Framework, das dem MVC-Muster folgt. ___ qstntxt ___

Ich kann sehen, dass die Log-Fassade sehr nützlich ist. In den Dokumenten von Laravel:

  

Der Logger bietet die acht Protokollierungsstufen, die in RFC 5424 definiert sind:   Notfall, Alarm, kritisch, Fehler, Warnung, Hinweis, Info und Debug.

Aber wie würde ich eine Instanz eines Modells protokollieren? wie zum Beispiel:

%Vor%

Wäre es dann möglich, das Objekt %code% zu protokollieren?

    
___ qstnhdr ___ Wie Log Objekt? ___ answer41978563 ___

Nein.

Der erste Parameter muss eine Zeichenfolge (oder eine Zeichenfolgenobjektdarstellung) sein. Wenn Sie irgendeinen anderen Typ von (rohen) Daten oder Objekten übergeben wollen, können Sie diese JSON immer verschlüsseln und in den Kontexteinstellungen wie folgt verschieben:

%Vor%

Oder:

%Vor%

Weitere Informationen zu den Methodensignaturen finden Sie hier .

    
___ tag123laravel52 ___ Laravel 5.2 ist eine frühere Version des von Taylor Otwell entwickelten Open-Source-PHP-Web-Frameworks. Es wurde am 21. Dezember 2015 veröffentlicht. Verwenden Sie es zusätzlich zum Laravel-5-Tag, wenn Ihre Frage für Laravel 5.2 spezifisch ist. Verwenden Sie das Laravel-Tag für allgemeine Laravel-Fragen. ___ answer41979299 ___

Dies funktioniert, obwohl die Protokollierung des gesamten Modells Ihr Protokoll ziemlich schnell erweitert.

%Vor%

Der true im zweiten Parameter der Methode print_r () gibt die Information zurück, anstatt sie zu drucken. Dadurch kann die Log-Fassade sie wie eine Zeichenfolge ausgeben.

    
___
Vlada Kovic 04.05.2017 10:27
quelle

Tags und Links