Logcat перенаправляется в файл более одного раза

Я перенаправил logcat в файл в моем коде при запуске моего приложения. Но когда мое приложение перезапускается, код перенаправления запускается снова, и в результате каждая строка в журнале записывается дважды.

Как я могу выполнить команду и убедиться, что дочерний процесс умирает, когда родитель умирает?

String.format("logcat -f %s -r %d", filename.getAbsolutePath(), LOG_FILE_SIZE_KB);    
Runtime.getRuntime().exec(cmd);

Как я могу убедиться, что логарифм моего приложения перенаправляется только один раз? (Что произойдет, если другое приложение вызовет logcat и перенаправит его в свой собственный файл, будет ли тогда проверка работать?)

Спасибо!


person Adibe7    schedule 19.06.2011    source источник
comment
Почему вам нужно перенаправить его в файл? И покажите код, пожалуйста.   -  person Lukas Knuth    schedule 19.06.2011
comment
Мне нужно отправить файл на сервер. и я добавил код, который выполняет перенаправление. что ты думаешь?   -  person Adibe7    schedule 19.06.2011
comment
LogCat предназначен для отладки в вашей среде разработки. Если приложение аварийно завершает работу на устройстве пользователя и оно находится в Market, пользователь может отправить вам трассировку стека. В любом случае, можете ли вы показать весь метод, в котором вы используете этот код? (я думаю, это onCreate).   -  person Lukas Knuth    schedule 19.06.2011
comment
Это весь метод, и я использую его только для целей отладки. проблема в том, что вторая строка (Runtime.getRuntime().exec(cmd);) вызывается дважды, и я хочу знать, как проверить, вызывалась ли она уже на этом устройстве   -  person Adibe7    schedule 19.06.2011
comment
Посмотрите это, это может помочь: stackoverflow.com/a/43364736/2046324   -  person Vishal Sharma    schedule 12.04.2017


Ответы (3)



Два варианта:
а) Создать статическую глобальную переменную, которая будет содержать информацию о погоде. Logcat уже был перенаправлен или нет.
б) Создать файл на SD-карте или в каталоге приложения (xml или файл свойств), содержащий информацию о погоде. LogCat уже был перенаправлен.

person bbaja42    schedule 19.06.2011

person    schedule
comment
-1 Это ужасный код и ужасный ответ: 1) Environment.getExternalStorageDirectory() + LOG_FILE_NAME; Используйте конструктор File, который принимает File и String. 2) В версии 1.5+ используйте ProcessBuilder, что, в свою очередь, упрощает задачу на один шаг. 3) Реализуйте все рекомендации Когда Runtime.exec() не работает. - person Andrew Thompson; 20.07.2011