webOS Entwickler-Tipps: Logging
By zefanja
Seit etwas mehr als einem Jahr entwickle ich nun mehr oder weniger regelmäßig für webOS. Im Folgenden möchte ich ein paar Tipps weiter geben, welche mir im Laufe der Zeit immer wieder geholfen haben. Heute also: Logging!
Logging von Javascript-Objekten oder JSON-Objekten:
Immer wieder kommt es vor, dass man sich den Inhalt eines Objektes ansehen will oder einfach nur schauen möchte, ob eine Variable den Wert null oder undefined hat. Dazu nutzt man am besten die Logging-Funktion von Mojo:
Mojo.Log.info("My Object: %j", myObject); ``` **Logging auf Info-Level auf einem webOS Gerät:** Während der Emulator Logging Informationen auf dem Info-Level ausgibt, gibt ein webOS Gerät standardmäßig nur Meldungen auf dem Error-Level aus, d.h. alle Mojo.Log.info bzw. Mojo.Log.warning erscheinen nicht, wenn man die Logs auf dem Gerät verfolgt. Mit dem Befehl **palm-log** lässt sich jedoch das Logging auf Info-Ebene auf einem Gerät aktivieren: ``` palm-log --system-log-level info ``` **Logs von einem Benutzer bekommen** Oft hat man als Entwickler das Problem, dass ein Benutzer einen Bug in der App feststellt und man gern ein paar Logging-Informationen hätte. Dies lässt sich relativ einfach in einer webOS-App implementieren. Dazu legt man einfach in der _stage-assistent.js_ oder _app-assistent.js_ eine globale Variable an:logging ="----" + Mojo.appInfo.title + " " + Mojo.appInfo.version + " Log-----"; ``` Nun kann in jedem Scene-Assistent auf diese Variable zugreifen und Logging-Informationen ergänzen, z.B.:logging += "ERROR: Meine Fehlermeldung" + " \n"; ``` Damit der Benutzer diese Infos auch schicken kann, fügt man am besten im AppMenu einen Menüpunkt ein („Send Logs“), welcher daraufhin eine neue eMail öffnet mit den Logging-Infos als Nachrichtentext:this.controller.serviceRequest('palm://com.palm.applicationManager', { method: 'open', parameters: { id: 'com.palm.app.email', params: { summary: "My App Logs", text: logging, recipients: [{ type:"email", role:1, value:"foo@example.com", contactDisplay:"Foo" }] } } }); ``` Wer noch weitere Tipps hat, die das Logging erleichtern, einfach einen Kommentar hinterlassen.