Прошу прощения, если я неправильно понимаю ваши цели, но, возможно, вы могли бы использовать java.util.logging API вместо использования Logcat или механизма ведения журнала Android.
Как и API ведения журналов Android, java.util.logging API позволяет легко регистрировать сообщения на различных уровнях, таких как FINE, FINER, WARN, SEVERE и т. д.
Но у стандартного API ведения журналов есть и дополнительные преимущества. Например, вы можете легко создать файл журнала с помощью Обработчик файлов. Фактически, FileHandler имеет встроенный журнал механизм ротации, поэтому вам не нужно (так сильно) беспокоиться об очистке файлов журнала. Вы также можете создать иерархию регистраторов; так, например, если у вас есть два регистратора s, com.example.foo и com.example.foo.bar, изменение уровня ведения журнала первого также изменит уровень ведения журнала второго. Это будет работать даже в том случае, если два регистратора созданные в разных классах! Кроме того, вы можете изменить поведение ведения журнала во время выполнения, указав файл конфигурации ведения журнала. Наконец, вы можете настроить формат журнала, внедрив собственный . Formatter (или просто используйте SimpleFormatter чтобы избежать формата XML по умолчанию).
Чтобы использовать стандартный API ведения журнала, вы можете попробовать что-то вроде этого:
// 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, безусловно, прост и удобен. Тем не менее, он не очень настраиваемый, и фильтрация журналов должна выполняться с помощью тегов, что может легко стать громоздким. С помощью java.uitl.logging API, вы можете избежать работы с множеством тегов, но легко ограничить файл журнала определенными частями вашего приложения, получить больший контроль над расположением и внешним видом журнала и даже настроить поведение журнала во время выполнения.
person
swopecr
schedule
07.08.2011