Pido disculpas si no entiendo bien sus objetivos, pero tal vez podría usar el java.util.logging API en lugar de utilizar Logcat o el mecanismo de registro de Android.
Al igual que el API de registro de Android, el java.util.logging API le permite acceder fácilmente mensajes a varios niveles, tales como FINO, más fino, WARN, GRAVES, etc.
Pero la API estándar de registro tiene ventajas adicionales, también. Por ejemplo, puede crear fácilmente un archivo de registro utilizando un FileHandler. De hecho, FileHandler tiene un mecanismo incorporado de rotación de registros, por lo que no tiene que preocuparse (demasiado) por limpiar los archivos de registro. También puede crear una jerarquía de Logger s; así, por ejemplo, si tiene dos Logger s, com.example.foo y com.example.foo.bar, cambiar el nivel de registro de la primera también cambiará el nivel de registro de la última. ¡Esto incluso funcionará si los dos Logger s se crean en diferentes clases! Además, cambia el comportamiento de registro en tiempo de ejecución especificando un archivo de configuración de registro. Finalmente, puede personalizar el formato del registro implementando su propio Formatter (o simplemente use el SimpleFormatter para evitar el formato XML predeterminado).
para utilizar la API de registro estándar, puede intentar algo como esto:
// 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)");
El mecanismo de registro de Android es ciertamente fácil y conveniente. Sin embargo, no es muy personalizable y el filtrado de registros debe hacerse con etiquetas, que pueden volverse difíciles de manejar.Al utilizar la API java.uitl.logging, puede evitar lidiar con una multitud de etiquetas, limitar fácilmente el archivo de registro a partes específicas de su aplicación, obtener un mayor control sobre la ubicación y apariencia del registro, e incluso personalizar el comportamiento de registro en tiempo de ejecución.
¿Alguna vez encontrar una solución? – JPM
Sí. Terminé usando el BufferedReader para leer el resultado de Runtime.getRuntime(). Exec (cmd). – Michael
¿Puedes publicar aquí una respuesta que muestre exactamente lo que hiciste, para que la mía y todos los demás se beneficien? – JPM