Stessa situazione mi aveva in precedenza, Volevo sapere i dettagli del registro dell'applicazione per quanto riguarda Broadcast Receiver, servizi in esecuzione o arresto anomalo dell'app, quando era utilizzato dall'utente nel dispositivo Android.
[in modo da utilizzare questo codice è possibile ottenere informazioni come quando il ricevitore broadcast start, stop, in crash etc]
ho scritto il mio LogCat e che sta funzionando bene, e qui è il codice può aiutare
Prima di tutto bisogna mettere alcune costanti nel file di costante dell'applicazione
public static final String LOG_DIR="/SeedSpeak/LOG";
public static final String LOG_MODE_EXCEPTION="exception";
public static final String LOG_MODE_INFO="info";
Poi è necessario creare tre metodo nella Utill app presentare
0.123.
public static void MyLog(String logMode, String msgKey, Object msgValue) {
File sdCard = Environment.getExternalStorageDirectory();
File dir = new File(sdCard.getAbsolutePath()+
SeedSpeakConstants.LOG_DIR);
if (!dir.exists()) {
dir.mkdirs();
}
String logFileAbsPath = dir + File.separator + "SeedSpeakLog.txt";
BufferedWriter bufferedWritter = null;
try {
bufferedWritter = new BufferedWriter(
new FileWriter(logFileAbsPath,
true));
String logValue = null;
if (logMode.equalsIgnoreCase(
SeedSpeakConstants.LOG_MODE_EXCEPTION)) {
logValue = logStackTrace((Throwable) msgValue);
} else {
logValue = msgValue.toString();
}
logValue = currentDateTimeValue() + ": " + logMode +
" :" + msgKey + ": "
+ logValue + "\n";
bufferedWritter.write(logValue);
bufferedWritter.newLine();
bufferedWritter.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static String logStackTrace(Throwable t) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw, true);
t.printStackTrace(pw);
pw.flush();
sw.flush();
return sw.toString();
}
public static String currentDateTimeValue() {
SimpleDateFormat formatter =
new SimpleDateFormat("yyyy-mm-dd-HH:mm:ss");
formatter.setLenient(false);
Date curDate = new Date();
String curTime = formatter.format(curDate);
return curTime;
}
Ora, come utilizzare questo nel vostro progetto, in modo semplice :)
Nota: qui TAG è solo un file corrente (attività/servizi/BR) nome come questo
private final static String TAG = "PlantSeedActivity";
(1). per informazioni solo su stampa (BR, Servizio avviato o no .. bla bla) log usa questo
SeedSpeakUtill.MyLog(SeedSpeakConstants.LOG_MODE_INFO,
TAG + ".onCreate", "Service is started now");
(2). per eccezione di stampa/dettagli di crash utilizzano questo modo
try{
// todo here
}
catch (Exception ex)
{
SeedSpeakUtill.MyLog(SeedSpeakConstants.LOG_MODE_EXCEPTION,
TAG + ".onStartCommand", ex);
}
Ora basta mettere applicazione in dispositivi Android e quando si desidera ottenere dettagli log vanno a SeedSpeakLog.txt il file ed eseguire il debug dell'applicazione.
o un altro modo in cui ho sentito che Google provice ACRA (Application Crash Report for Android) biblioteca
come si può avere sguardo sul this e this collegamento
PL Consentitemi di commentare se si ottiene alcuna difficoltà reinquadramento questo! !
Perché non si esegue il debug semplicemente utilizzando un evento diverso (a scopo di test)? IE: attivalo dal tuo servizio o attività o ascoltalo per qualche altro evento. –