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
-
Verwenden Sie eine
WL.Logger
-Instanz mit dem PaketnamenmyApp
.var logger = WL.Logger.create({ pkg: 'MyApp' });
-
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' } });
-
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.