Przepraszam, jeśli nie rozumiem twoich celów, ale może powinieneś użyć java.util.logging API zamiast używać Logcata lub mechanizmu logowania Android.
Podobnie jak Android rejestrowania API The java.util.logging API pozwala łatwo rejestrować komunikaty na różnych poziomach, takich jak grzywny, lepszej ostrzegają, ciężkie, itp
Ale średnia rejestrowania API ma dodatkowe zalety, too. Na przykład można łatwo utworzyć plik dziennika plik za pomocą FileHandler. W rzeczywistości FileHandler ma wbudowany mechanizm rotacji logów, więc nie musisz się martwić (tak bardzo) o czyszczenie plików dziennika. Można również utworzyć hierarchię Logger s; więc, na przykład, jeśli masz dwa Logger s, com.example.foo i com.example.foo.bar, zmiana poziomu rejestrowania pierwszego zmieni również poziom rejestrowania tego ostatniego. To zadziała nawet, jeśli dwa Logger s zostaną utworzone w różnych klasach! Co więcej, zmieniasz zachowanie rejestrowania w środowisku wykonawczym, określając plik konfiguracyjny rejestrowania. Na koniec możesz dostosować format dziennika, wprowadzając własny kod Formatter (lub po prostu użyj SimpleFormatter, aby uniknąć domyślnego formatu XML).
Aby użyć standardowego logowania API, możesz spróbować czegoś takiego:
// Logger logger is an instance variable
// FileHandler logHandler is an instance variable
try {
String logDirectory =
Environment.getExternalStorageDirectory() + "/log_directory";
// the %g is the number of the current log in the rotation
String logFileName = logDirectory + "/logfile_base_name_%g.log";
// ...
// make sure that the log directory exists, or the next command will fail
//
// create a log file at the specified location that is capped 100kB. Keep up to 5 logs.
logHandler = new FileHandler(logFileName, 100 * 1024, 5);
// use a text-based format instead of the default XML-based format
logHandler.setFormatter(new SimpleFormatter());
// get the actual Logger
logger = Logger.getLogger("com.example.foo");
// Log to the file by associating the FileHandler with the log
logger.addHandler(logHandler);
}
catch (IOException ioe) {
// do something wise
}
// examples of using the logger
logger.finest("This message is only logged at the finest level (lowest/most-verbose level)");
logger.config("This is an config-level message (middle level)");
logger.severe("This is a severe-level message (highest/least-verbose level)");
Android Mechanizm logowania jest z pewnością łatwe i wygodne. Nie jest to jednak bardzo łatwe do dostosowania, a filtrowanie dziennika musi odbywać się za pomocą znaczników, które mogą łatwo stać się nieporęczne.Korzystając z interfejsu API java.uitl.logging, można uniknąć obsługi wielu znaczników, ale w łatwy sposób ograniczyć plik dziennika do określonych części aplikacji, uzyskać większą kontrolę nad położeniem i wyglądem dziennika, a nawet dostosować zachowanie rejestrowania w środowisku wykonawczym.
Czy kiedykolwiek znaleźć rozwiązanie? – JPM
Tak. Skończyło się na użyciu BufferedReader do odczytu wyników z Runtime.getRuntime(). Exec (cmd). – Michael
Czy możesz umieścić tutaj odpowiedź, która pokazuje dokładnie to, co zrobiłeś, a moje i wszystkie inne korzyści? – JPM