- Forum-Beiträge: 359
05.01.2015, 17:05:17 via Website
05.01.2015 17:05:17 via Website
In diesem kurzen Tutorial möchte ich einmal kurz das loggen unter Android beschreiben.
Da Logging von vielen Entwicklern vernachlässigt wird (ganuso wie das kommentieren), denke ich das bei einem Schritt hin zur Professionalität dieses Thema mal angesprochen werden sollte.
Android bietet von sich aus eine möglichkeit um in Andorid Logausgaben im Logcat zu erzeugen.
Diese basiert auf utillogging.
Jedoch ist mit dieser das Logging relativ "statisch".
Soll bedeuten, wenn ich damit Loggen will habe ich die Möglichkeit mitzuteilen unter welchem Level die Information angezeigt werden soll und welchen "Tag" dies zugewiesen werden soll.
ein kleines Bespiel:
Meine Anwendung heißt de.androidpit.loggingexample
Nun kann ich im Code wie folgt loggen:
Log.e("de.androidpit.loggingexample","error");
Log.i("de.androidpit.loggingexample","info");
usw...
Auch hier nachzulesen: http://developer.android.com/reference/android/util/Log.html
Ich persönlich komme aus der Java Welt, wo schon seit ewigen Zeiten Log4J(bzw. self4j) der geheime (da nicht offiziell in Java enthalten) Standard ist.
Der Vorteil von log4J ist:
- eine große Anzahl an Logging Möglichkeiten durch sogenannte Appender
- das freie definieren des aussehen einer Logmeldung ist hier ein mächtiges Werkzeug.
- Das definieren in welcher Klasse/Package welches Level ausgegeben wird.
Log4J gibt es auch in abgeschwächter form für Android.
Nennt sich android-logging-log4j und kann hier als jar-lib gedownloadet werden.
Leider bietet es im Moment noch relativ wenig Möglichkeiten des Logging aber diese sind schon größer als das was utillogging bietet.
Ein weiterer Vorteil:
Log die in einer Lib zum Beispiel commons-logging nutzen, erkennen diesen Logger und fügen ihre Logmeldungen unter euren Spezifikationen an.
Die Verwendung von log4J für Android ist im Grunde einfach.
Zuerst benötigt ihr 2 Jar Libs zum einen
- http://code.google.com/p/android-logging-log4 -> android-logging-log4j-1.0.3.jar
https://logging.apache.org/log4j/1.2/download.html --> log4j-1.2.17.jar
oder natürlich andere Versionen dieser Produkte.
Diese beiden Lib´s fügt ihr eurem Projekt hinzu.
Nun erstellt ihr am besten in eurem Projekt eine Klassen:
Ich nenne Sie mal Log4JConfigurator
Diese kann zum Beispiel wie folgt aussehen:public class Log4JConfigurator { private static final Logger log = Logger.getLogger(Log4JConfigurator.class); /** * Laedt die Log4JConfiguration */ public static void iniziereConfig(){ final LogConfigurator logConfigurator = new LogConfigurator();//erzeugt den eigentlichen Konfigurator logConfigurator.setRootLevel(Level.ALL);//setzt das hauplevel des Loggens logConfigurator.setUseFileAppender(false);//setzt ob das Log in ein File gespeichert werden soll (Ja das geht) logConfigurator.setUseLogCatAppender(true);//setzt ob das log im Logcat ausgegeben werden soll logConfigurator.configure();//aktiviert die konfiguration }
}
Hier hat man jetzt nun eine Vielzahl von Möglichkeiten.
Z.B.: kann man mit s
etLevel("[packagename]", Level.ERROR);für ein(e) Klasse/Package ein anderes Loglevel definieren
Auch kann man die PATTERN definieren.
Heißt: die Darstellung des Logs (eine Liste der möglichen PATTERN findet ihr hier)
Wenn ihr nun in eurem Programmcode Loggen wollt:
könnt ihr das wie folgt tun:
- Definiere eine Globale Variable -->
p
rivate static final Logger log = Logger.getLogger([Klasse in der sich diese Variable befindet].class);` - schreibe an der Stelle an der ihr loggen möchtet :
l
og.info("Info Nachricht"); log.debug("Debug Nachricht");etc.
Über das Level könnt ihr definieren welche tiefe eure Nachrichten ausgegeben wird.
Folgende Stufen gibt es:
FATAL, ERROR, WARN,INFO,DEBUG
Bedeutet:
Die Lognachrichten sind hieratisch.
Wenn zum Beispiel das Level auf INFO steht, werden Meldungen der Folgenden Stufe ausgegeben:
FATAL, ERROR, WARN,INFO
Steht das Level auf ERROR, nur noch folgende Stufen: FATAL, ERROR usw.
Das Schöne an dieser Lösung ist, das man strikt zwischen Meldungen und Ausgabemedien unterscheidet.
Somit kann man das WO und Wie ersteinmal zurückstellen.
Man kümmert sich erstmal nur um das WAS geloggt wird.
Dies Sollte für den Einstieg reichen. Bei Zeiten werde ich das noch etwas verfeinern.
Fertig
Gruß
Fabian
— geändert am 08.01.2015, 12:43:32