Wie kann ich das Protokollierungsformat in Google AppEngine ändern?

9

AppEngine verwendet JUL für seine Protokollierung und ich habe die Datei logging.properties konfiguriert und verweise darauf in appengine-web.xml

Das Problem besteht darin, dass das Format, in dem AppEngine die Daten im Konsolenprotokoll darstellt, nach etwa 180 Zeichen in jeder Protokollzeile gekürzt wird. Und da ein großer Teil davon mit der Methode und dem Klassennamen (einschließlich Paket) und dem Datum belegt ist, gibt es nicht viel von der tatsächlichen Protokollnachricht, die herauskommt.

Ich habe versucht, meinen eigenen Formatierer sowohl programmatisch als auch über logging.properties ohne Glück zu konfigurieren.

Mir ist klar, dass ich mein gesamtes Protokoll durch slf4j, logback oder log4j pushen könnte, aber ich glaube, dass dies dazu führt, dass alle Logs als stdout in der AppEngine log console erscheinen, die ihren eigenen Stil von Ausführlichkeit hat.

Gibt es eine Möglichkeit, ein bestimmtes Format für das AppEngine-Protokoll zu definieren, und wenn ja, wie? t wäre genug, wenn jede Protokollzeile nicht auf 180 Zeichen gekürzt würde.

    
William 01.10.2012, 06:11
quelle

3 Antworten

2

Haben Sie versucht, die Log-Download-Funktion zu verwenden: Sie schneidet die Protokolle nicht ab, Sie bekommen alles angezeigt und können die Anzahl der Tage und den Schweregrad der zu ladenden Protokolleinträge angeben.

%Vor%

Nur so kann ich meine Protokolldetails sehen. Die Standardprotokollierungsstufe ist INFO. Daher müssen Sie wirklich die Argumente für den Schweregrad und das Argument num_days verwenden, um nützlich zu sein.

Wenn Sie die Protokolle für ein Back-End herunterladen möchten, müssen Sie außerdem die Backend-Version mit der folgenden Option in der Befehlszeile angeben. Wo ist der Name des Backend.

%Vor%     
Greg Pastik 16.10.2012 08:29
quelle
0

Nachdem ich ein wenig weiter geforscht habe, konnte ich keinen benutzerdefinierten JUL-Handler oder Formatierer bekommen, der von der Laufzeit des Apfins erkannt wird. Stattdessen habe ich einen ServletContextListener erstellt, um den Root-Logger mit meinem eigenen benutzerdefinierten Formatierer zu initialisieren:

%Vor%

Hier ist ein Beispiel ServletContextListener:

%Vor%

Aktualisierung: Der obige Code funktioniert in der Dev-Umgebung, scheint aber bei Appengine ignoriert zu werden. Zurück zum Zeichenbrett auf diesem.

    
sappenin 14.10.2012 16:38
quelle
0

Beim Durchsehen des Quellcodes für das App Engine-Konfigurationstool selbst habe ich gesehen, dass es nur den gleichen LogService aufruft, auf den Sie über die LogService-API Zugriff hätten.

Daher ist die Antwort auf Ihre Frage wirklich so einfach, wie den Code aus dem folgenden Link in Ihre Codebasis zu kopieren und ihn nur für den Admin-Benutzer zu sichern. Das Problem wurde gelöst.

Ссылка

    
Greg Pastik 22.10.2012 13:05
quelle