Androidルートにinit.rcを追加しています:
service logcat /system/bin/logcat -v long -f /mnt/sdcard/logcat.log
このソリューションでは、ログは生成されません。logcat.log ファイルが存在しません。
init.rc を介して logcat 出力の収集を開始するにはどうすればよいですか?
Androidルートにinit.rcを追加しています:
service logcat /system/bin/logcat -v long -f /mnt/sdcard/logcat.log
このソリューションでは、ログは生成されません。logcat.log ファイルが存在しません。
init.rc を介して logcat 出力の収集を開始するにはどうすればよいですか?
上記の問題を引き起こしている可能性のあるいくつかの事柄: 1. サービスを logcat と呼ぶように定義した。これは、予約済みまたは既存の名前に非常に近いように見えます。私なら、より際立ったサービス名を選びます。2. サービスの明示的な開始トリガーがないため、サービスが定義されているコンテキスト (つまり、どの init フェーズ) に完全に依存しています。間違ったフェーズを選択すると (つまり、早すぎる)、/mnt が存在しないことさえあります。3. サービスはデフォルトで root として実行されるため、logcat.log ファイルは root によってのみ rw されます。ルートとしてプロセスを実行するのは良くありません。また、ログ ファイルを読み取るためにリーダーを強制的に root にするのは良くありません。
ここでは、あなたが探していることを達成するために私が使用したアプローチを示します。
問題: 通常、Android のログ メッセージはカーネルの (揮発性) メモリにのみ残るため、再起動後は保持されません。
解決策: これらのログ メッセージを再起動後も保持するには、それらを永続的なストレージ (つまり、ファイル システム) に書き込む必要があります。次のコードは、初期化中に Android によって開始されるサービスを定義します。
ステップ 1、このアクティビティを実行するために Android init プロセスが生成するサービスを定義します。これは init.rc に入ります。
service persistentLogging /system/bin/logcat -r 1024 -n 9 -v threadTime -f /cache/logs/log
user system
group system log
disabled
上記に関する注意事項:
ステップ 2、サービスを開始するためのトリガーを定義します。これは init.rc ファイルにも含まれます。
on post-fs
mkdir /cache/logs 0775 system log
start persistentLogging
上記に関する注意事項: