Hai solo bisogno di utilizzare
java.util.logging.Logger.getLogger(yourFullClassName).setLevel(java.util.logging.Level.All);
e
adb shell setprop log.tag.correspondingTag VERBOSE
uso Android questa funzione per ottenere correspondingTag dalla classe nome completo:
public static String loggerNameToTag(String loggerName)
{
if (loggerName == null) {
return "null";
}
int length = loggerName.length();
if (length <= 23) {
return loggerName;
}
int lastPeriod = loggerName.lastIndexOf(".");
return length - (lastPeriod + 1) <= 23 ? loggerName.substring(lastPeriod + 1) : loggerName.substring(loggerName.length() - 23);
}
così per esempio, voglio abilitare la registrazione per la classe "org.apache.http.impl.client.DefaultRequestDirector", eseguire le seguenti operazioni:
String clzName = "org.apache.http.impl.client.DefaultRequestDirector";
String newClzName = loggerNameToTag(clzName);
System.out.println("className:" + clzName + " tagName is " + newClzName); //get tagName from class full name,and then it will be used in setprop
Logger jdkLogger = Logger.getLogger(clzName);
jdkLogger.setLevel(Level.ALL);
if (jdkLogger.isLoggable(Level.FINE))
{
jdkLogger.log(Level.FINE, "jdk log msg");
jdkLogger.log(Level.Fine,"tagName is")
}
E poi in adb shell
setprop log.tag.DefaultRequestDirector VERBOSE
Ho provato questo nella mia app, e non vedo alcun messaggio di log forniti dal HttpClient. Funziona utilizzando HttpClient nell'attuale SDK? Ovvero, org.apache.http, vs org.apache.commons.http. Vedo il messaggio del registro di test ("hola" nell'esempio), ma nulla dalle chiamate HttpClient. – Joe
con gli SDK recenti è necessario utilizzare il prefisso utilizzato nella prima risposta, "org.apache.http" anziché "httpclient", almeno questo ha funzionato per me su un dispositivo 2.1. – HefferWolf
@ alex2k8 - Perché è necessario impostare le proprietà della shell adb? –