Protokollierung in JavaScript-Anwendungen (Cordova-Anwendungen, Webanwendungen)

improve this page | report issue

Übersicht

Dieses Lernprogramm enthält die Code-Snippets, die erforderlich sind, um Protokollierungsfähigkeiten zu JavaScript-Anwendungen (Cordova, Web) hinzuzufügen.

Voraussetzung: Sie müssen die Übersicht über die clientseitige Protokollerfassung gelesen haben.

Protokollerfassung aktivieren

Die Protokollerfassung ist standardmäßig aktiviert. Sie speichert Protokolle im Client und kann programmgesteuert aktiviert oder inaktiviert werden. Protokolle werden mit einem expliziten Sendeaufruf oder automatisch an den Server gesendet.

Hinweis: Die Aktivierung der Protokollerfassung auf einer Ebene mit großer Ausführlichkeit kann sich auf die CPU-Nutzung des Geräts, auf den Dateisystemspeicher und den Umfang der Nutzdaten, die der Client mit den Protokollen über das Netz sendet, auswirken.

Inaktivieren Sie die Protokollerfassung wie folgt:

Cordova

WL.Logger.config({capture: false});

Web

ibmmfpfanalytics.logger.enable(false);

Erfasste Protokolle senden

Sie können Protokolle gemäß Ihrer Anwendungslogik an MobileFirst senden. Sie können auch das automatische Senden von Protokollen aktivieren. Wenn Protokolle nicht vor dem Erreichen ihrer maximalen Größe gesendet werden, wird die Protokolldatei zugunsten aktuellerer Protokolle bereinigt.

Hinweis: Übernehmen Sie das folgende Muster für die Erfassung von Protokolldaten. Durch das Senden von Daten in einem Intervall stellen Sie sicher, dass Sie Ihre Protokolldaten in der MobileFirst Analytics Console annähernd in Echtzeit sehen.

Cordova-Apps

Mit folgenden Strategien können Sie sicherstellen, dass alle erfassten Protokolle gesendet werden:

  • Rufen Sie die Methode send in einem bestimmten Zeitintervall auf.
  • Rufen Sie die Methode send innerhalb von Callbacks zu Lebenszyklusereignissen auf.
  • Erhöhen Sie den Wert für die maximale Größe des persistenten Protokollpuffers (in Bytes).
    setInterval(function() {
    WL.Logger.send();
    }, 60000);
    
WL.Logger.config({ maxFileSize: 150000 });

Web-Apps

setInterval(function() {
ibmmfpfanalytics.logger.send();
}, 60000);

Die maximale Dateigröße für die Web-API ist 5 MB und kann nicht geändert werden.

Protokolle automatisch senden

Das automatische Senden von Protokollen ist standardmäßig inaktiviert. Immer, wenn eine Ressourcenanforderung erfolgreich an den Server gesendet wird, werden auch die erfassten Protokolle gesendet, wobei zwischen den Sendevorgängen ein zeitlicher Abstand von mindestens 60 Sekunden liegen muss. Das automatische Senden von Protokollen kann vom Client aktiviert oder inaktiviert werden. Standardmäßig ist das automatische Senden von Protokollen inaktiviert.

Cordova-Apps

Aktivierung:

WL.Logger.config({autoSendLogs: true});

Inaktivierung:

WL.Logger.config({autoSendLogs: false});

Web-Apps

Aktivierung:

ibmmfpfanalytics.enableAutoSend(true);

Inaktivierung:

ibmmfpfanalytics.enableAutoSend(false);

Intervall für autoSendLog ändern

Das Intervall für autoSendLog ist standardmäßig auf 60 Sekunden gesetzt. Sie können das Intervall für autoSendLog mit folgender Methode ändern.

Cordova-Apps

Das folgende Snippet zeigt, wie das Intervall für autoSendLog auf 120 Sekunden gesetzt wird.

WL.Logger.config({autoSendLogs: true,autoSendLogsInterval: 120});

Web-Apps

Das folgende Snippet zeigt, wie das Intervall für autoSendLog auf 120 Sekunden gesetzt wird.

ibmmfpfanalytics.enableAutoSend(true, 120);

Optimierung mit der Logger-API

Das MobileFirst-Client-SDK nutzt intern die Logger-API. Vom SDK erstellte Protokolleinträge werden standardmäßig erfasst. Zur Optimierung der Protokollerfassung können Sie Logger-Instanzen mit Paketnamen verwenden. Mit serverseitigen Filtern können Sie außerdem die Protokollierungsstufe steuern.

Wenn Sie beispielsweise für das Paket myApp nur Protokolle der Stufe ERROR erfassen möchten, gehen Sie wie folgt vor:

Cordova-Apps optimieren

  1. Verwenden Sie eine WL.Logger-Instanz mit dem Paketnamen myApp.

    var logger = WL.Logger.create({ pkg: 'MyApp' });
    
  2. Bei Bedarf können Sie einen Filter angeben, um die Protokollerfassung und -ausgabe programmgesteuert auf die angegebene Stufe und das angegebene Paket zu beschränken.

    WL.Logger.config({
         filters: {
             'MyApp': 'ERROR'
         }
    });
    
  3. Optional: Steuern Sie die Filter über Fernzugriff. Rufen Sie dazu ein Serverkonfigurationsprofil ab.

Web-Apps

Bei Verwendung des Web-SDK kann die Stufe nicht vom Client festgelegt werden. Die gesamte Protokollierung wird an den Server gesendet, bis die Konfiguration durch Abrufen des Serverkonfigurationsprofils geändert wird.

Serverkonfigurationsprofile abrufen

Die Protokollierungsstufen können vom Client festgelegt werden oder über das Abrufen von Konfigurationsdateien vom Server. In der MobileFirst Analytics Console kann eine Protokollierungsstufe global (für alle Logger-Instanzen) oder für bestimmte Pakete festgelegt werden. Informationen zum KOnfigurieren der Filter in der MobileFirst Analytics Console finden Sie unter Protokollfilter konfigurieren.

Damit der Client die auf dem Server festgelegten prioritären Konfigurationswerte abruft, muss die Methode updateConfigFromServer von einem Abschnitt des Codes aufgerufen werden, der regulär ausgeführt wird, z. B. von den App-Lebenszyklus-Callbacks.

Serverkonfigurationsprofile für Cordova-Apps abrufen

WL.Logger.updateConfigFromServer();

Serverkonfigurationsprofile für Web-Apps abrufen

ibmmfpfanalytics.logger.updateConfigFromServer();

Protokollierungsbeispiel

Die Ausgabe erfolgt in einem Browser in einer JavaScript-Konsole, in LogCat oder in der Xcode-Konsole.

Protokollierungsbeispiel für Cordova

var MathUtils = function(){
   var logger = WL.Logger.create({pkg: 'MathUtils'});
   var sum = function(a, b){
      var sum = a + b;
      logger.debug('sum called with args ' + a + ' and ' + b + '. Returning ' + sum);
      return sum;
   };
}();

Protokollierungsbeispiel für Web

Verwenden Sie für die Protokollierung in Webanwendungen das vorangegangene Beispiel und ersetzen Sie Folgendes:

var logger = WL.Logger.create({pkg: 'MathUtils'});

durch diese Zeilen:

var logger = ibmmfpfanalytics.logger.create({pkg: 'MathUtils'});
Inclusive terminology note: The Mobile First Platform team is making changes to support the IBM® initiative to replace racially biased and other discriminatory language in our code and content with more inclusive language. While IBM values the use of inclusive language, terms that are outside of IBM's direct influence are sometimes required for the sake of maintaining user understanding. As other industry leaders join IBM in embracing the use of inclusive language, IBM will continue to update the documentation to reflect those changes.
Last modified on May 13, 2020