web-dev-qa-db-ja.com

WorkManagerワーカーのロギング

アプリで実行しているWorkManager Workersのログ情報を取得しようとしています。私はAndroidフレームワークチームによって追加された新しい診断を使用するバージョン2.4.0-alpha01を使用しています

https://developer.Android.com/jetpack/androidx/releases/work#2.4.0-alpha01

彼らは私に次のコマンドを実行するように指示しました

adb Shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"

このコマンドを実行すると、エコーされただけです

Broadcast completed: result=0 

ターミナルへ

次に、実行するとlogcatで診断が表示されることを通知されました

adb logcat

そのコマンドを実行したところ、ログの出力は難読化されているように見え、ワーカーに固有のログは表示されません。

これらのログを解析してWorkManagerワーカーに関する情報を取得するにはどうすればよいですか?

更新

Logcatに検索キーワードとしてWM-を追加したため、WorkManagerログが表示されます。

私は私の労働者の何人かが走ることを止めたのに気づきました、そして、私は理由を理解していません。

これらは最後に成功したワーカーから始まるログです

2020-04-27 10:52:32.439 com.sampleapp.Android.staging.debug D/WM-StopWorkRunnable: StopWorkRunnable for 58c8d95c-4cbc-4a85-aa18-a93e9926019a; Processor.stopWork = false
2020-04-27 10:52:35.304 com.sampleapp.Android.staging.debug D/WM-WorkerWrapper: com.sampleapp.Android.common.workers.DownloadMediaWorker returned a Success {mOutputData=Data {MEDIA_ITEM_ID : 16503, }} result.
2020-04-27 10:52:35.308 com.sampleapp.Android.staging.debug I/WM-WorkerWrapper: Worker result SUCCESS for Work [ id=b892f6fc-79e4-4475-8da6-d151f217bf59, tags={ com.sampleapp.Android.common.workers.DownloadMediaWorker, DOWNLOAD_MEDIA_ITEM_16_1_1 } ]
2020-04-27 10:52:35.314 com.sampleapp.Android.staging.debug D/WM-Processor: Processor b892f6fc-79e4-4475-8da6-d151f217bf59 executed; reschedule = false
2020-04-27 10:52:35.315 com.sampleapp.Android.staging.debug D/WM-GreedyScheduler: Stopping tracking for b892f6fc-79e4-4475-8da6-d151f217bf59
2020-04-27 10:52:35.316 com.sampleapp.Android.staging.debug D/WM-WorkConstraintsTrack: Constraints met for 591f9f8f-a938-44ce-962d-5ef952dc01c9
2020-04-27 10:52:35.317 com.sampleapp.Android.staging.debug D/WM-WorkConstraintsTrack: Constraints met for 25fc121b-3036-454e-ae89-da6a715ae570
2020-04-27 10:52:35.317 com.sampleapp.Android.staging.debug D/WM-WorkConstraintsTrack: Constraints met for 47c4e47a-a66e-49aa-83b8-8670aae4b797
2020-04-27 10:52:35.317 com.sampleapp.Android.staging.debug D/WM-WorkConstraintsTrack: Constraints met for 954adf4b-246a-4cff-bcd0-c6a6d6b27e2e
2020-04-27 10:52:35.317 com.sampleapp.Android.staging.debug D/WM-WorkConstraintsTrack: Constraints met for e30b4db8-648a-4f55-8cb8-b6a6d098c46a
2020-04-27 10:52:35.317 com.sampleapp.Android.staging.debug D/WM-WorkConstraintsTrack: Constraints met for cb1320f6-2510-430f-a400-2b12c85d4a1c
2020-04-27 10:52:35.317 com.sampleapp.Android.staging.debug D/WM-WorkConstraintsTrack: Constraints met for b892f6fc-79e4-4475-8da6-d151f217bf59
2020-04-27 10:52:35.317 com.sampleapp.Android.staging.debug D/WM-WorkConstraintsTrack: Constraints met for cbbe8de7-be76-4f03-8d26-79bf03af1314
2020-04-27 10:52:35.318 com.sampleapp.Android.staging.debug D/WM-GreedyScheduler: Constraints met: Scheduling work ID 591f9f8f-a938-44ce-962d-5ef952dc01c9
2020-04-27 10:52:35.318 com.sampleapp.Android.staging.debug D/WM-GreedyScheduler: Constraints met: Scheduling work ID 25fc121b-3036-454e-ae89-da6a715ae570
2020-04-27 10:52:35.318 com.sampleapp.Android.staging.debug D/WM-GreedyScheduler: Cancelling work ID b892f6fc-79e4-4475-8da6-d151f217bf59
2020-04-27 10:52:35.318 com.sampleapp.Android.staging.debug D/WM-GreedyScheduler: Constraints met: Scheduling work ID 47c4e47a-a66e-49aa-83b8-8670aae4b797
2020-04-27 10:52:35.318 com.sampleapp.Android.staging.debug D/WM-GreedyScheduler: Constraints met: Scheduling work ID 954adf4b-246a-4cff-bcd0-c6a6d6b27e2e
2020-04-27 10:52:35.318 com.sampleapp.Android.staging.debug D/WM-GreedyScheduler: Constraints met: Scheduling work ID e30b4db8-648a-4f55-8cb8-b6a6d098c46a
2020-04-27 10:52:35.318 com.sampleapp.Android.staging.debug D/WM-GreedyScheduler: Constraints met: Scheduling work ID cb1320f6-2510-430f-a400-2b12c85d4a1c
2020-04-27 10:52:35.319 com.sampleapp.Android.staging.debug D/WM-GreedyScheduler: Constraints met: Scheduling work ID b892f6fc-79e4-4475-8da6-d151f217bf59
2020-04-27 10:52:35.319 com.sampleapp.Android.staging.debug D/WM-GreedyScheduler: Constraints met: Scheduling work ID cbbe8de7-be76-4f03-8d26-79bf03af1314
2020-04-27 10:52:35.319 com.sampleapp.Android.staging.debug D/WM-SystemJobService: b892f6fc-79e4-4475-8da6-d151f217bf59 executed on JobScheduler
2020-04-27 10:52:35.320 com.sampleapp.Android.staging.debug D/WM-SystemJobService: onStopJob for b892f6fc-79e4-4475-8da6-d151f217bf59
2020-04-27 10:52:35.324 com.sampleapp.Android.staging.debug D/WM-Processor: Work 591f9f8f-a938-44ce-962d-5ef952dc01c9 is already enqueued for processing
2020-04-27 10:52:35.324 com.sampleapp.Android.staging.debug D/WM-Processor: Work 25fc121b-3036-454e-ae89-da6a715ae570 is already enqueued for processing
2020-04-27 10:52:35.326 com.sampleapp.Android.staging.debug D/WM-Processor: Processor stopping background work b892f6fc-79e4-4475-8da6-d151f217bf59
2020-04-27 10:52:35.326 com.sampleapp.Android.staging.debug D/WM-Processor: WorkerWrapper could not be found for b892f6fc-79e4-4475-8da6-d151f217bf59
2020-04-27 10:52:35.326 com.sampleapp.Android.staging.debug D/WM-StopWorkRunnable: StopWorkRunnable for b892f6fc-79e4-4475-8da6-d151f217bf59; Processor.stopWork = false
2020-04-27 10:52:35.326 com.sampleapp.Android.staging.debug D/WM-Processor: Work 47c4e47a-a66e-49aa-83b8-8670aae4b797 is already enqueued for processing
2020-04-27 10:52:35.326 com.sampleapp.Android.staging.debug D/WM-Processor: Work 954adf4b-246a-4cff-bcd0-c6a6d6b27e2e is already enqueued for processing
2020-04-27 10:52:35.326 com.sampleapp.Android.staging.debug D/WM-Processor: Work e30b4db8-648a-4f55-8cb8-b6a6d098c46a is already enqueued for processing
2020-04-27 10:52:35.327 com.sampleapp.Android.staging.debug D/WM-Processor: Work cb1320f6-2510-430f-a400-2b12c85d4a1c is already enqueued for processing
2020-04-27 10:52:35.327 com.sampleapp.Android.staging.debug D/WM-Processor: Processor: processing b892f6fc-79e4-4475-8da6-d151f217bf59
2020-04-27 10:52:35.327 com.sampleapp.Android.staging.debug D/WM-Processor: Work cbbe8de7-be76-4f03-8d26-79bf03af1314 is already enqueued for processing
2020-04-27 10:52:35.328 com.sampleapp.Android.staging.debug D/WM-Processor: Processor stopping background work b892f6fc-79e4-4475-8da6-d151f217bf59
2020-04-27 10:52:35.329 com.sampleapp.Android.staging.debug D/WM-WorkerWrapper: Work interrupted for null
2020-04-27 10:52:35.330 com.sampleapp.Android.staging.debug D/WM-WorkerWrapper: WorkSpec null is already done. Not interrupting.
2020-04-27 10:52:35.331 com.sampleapp.Android.staging.debug D/WM-Processor: WorkerWrapper interrupted for b892f6fc-79e4-4475-8da6-d151f217bf59
2020-04-27 10:52:35.331 com.sampleapp.Android.staging.debug D/WM-StopWorkRunnable: StopWorkRunnable for b892f6fc-79e4-4475-8da6-d151f217bf59; Processor.stopWork = true
2020-04-27 10:52:35.331 com.sampleapp.Android.staging.debug D/WM-Processor: Processor b892f6fc-79e4-4475-8da6-d151f217bf59 executed; reschedule = false
2020-04-27 10:52:35.331 com.sampleapp.Android.staging.debug D/WM-GreedyScheduler: Stopping tracking for b892f6fc-79e4-4475-8da6-d151f217bf59
2020-04-27 10:52:35.332 com.sampleapp.Android.staging.debug D/WM-WorkConstraintsTrack: Constraints met for 591f9f8f-a938-44ce-962d-5ef952dc01c9
2020-04-27 10:52:35.332 com.sampleapp.Android.staging.debug D/WM-WorkConstraintsTrack: Constraints met for 25fc121b-3036-454e-ae89-da6a715ae570
2020-04-27 10:52:35.332 com.sampleapp.Android.staging.debug D/WM-WorkConstraintsTrack: Constraints met for 47c4e47a-a66e-49aa-83b8-8670aae4b797
2020-04-27 10:52:35.332 com.sampleapp.Android.staging.debug D/WM-WorkConstraintsTrack: Constraints met for 954adf4b-246a-4cff-bcd0-c6a6d6b27e2e
2020-04-27 10:52:35.332 com.sampleapp.Android.staging.debug D/WM-WorkConstraintsTrack: Constraints met for e30b4db8-648a-4f55-8cb8-b6a6d098c46a
2020-04-27 10:52:35.332 com.sampleapp.Android.staging.debug D/WM-WorkConstraintsTrack: Constraints met for cb1320f6-2510-430f-a400-2b12c85d4a1c
2020-04-27 10:52:35.332 com.sampleapp.Android.staging.debug D/WM-WorkConstraintsTrack: Constraints met for cbbe8de7-be76-4f03-8d26-79bf03af1314
2020-04-27 10:52:35.332 com.sampleapp.Android.staging.debug D/WM-GreedyScheduler: Constraints met: Scheduling work ID 591f9f8f-a938-44ce-962d-5ef952dc01c9
2020-04-27 10:52:35.333 com.sampleapp.Android.staging.debug D/WM-GreedyScheduler: Constraints met: Scheduling work ID 25fc121b-3036-454e-ae89-da6a715ae570
2020-04-27 10:52:35.333 com.sampleapp.Android.staging.debug D/WM-GreedyScheduler: Constraints met: Scheduling work ID 47c4e47a-a66e-49aa-83b8-8670aae4b797
2020-04-27 10:52:35.333 com.sampleapp.Android.staging.debug D/WM-GreedyScheduler: Constraints met: Scheduling work ID 954adf4b-246a-4cff-bcd0-c6a6d6b27e2e
2020-04-27 10:52:35.333 com.sampleapp.Android.staging.debug D/WM-GreedyScheduler: Constraints met: Scheduling work ID e30b4db8-648a-4f55-8cb8-b6a6d098c46a
2020-04-27 10:52:35.333 com.sampleapp.Android.staging.debug D/WM-GreedyScheduler: Constraints met: Scheduling work ID cb1320f6-2510-430f-a400-2b12c85d4a1c
2020-04-27 10:52:35.333 com.sampleapp.Android.staging.debug D/WM-GreedyScheduler: Constraints met: Scheduling work ID cbbe8de7-be76-4f03-8d26-79bf03af1314
2020-04-27 10:52:35.340 com.sampleapp.Android.staging.debug D/WM-WorkerWrapper: Work interrupted for Work [ id=b892f6fc-79e4-4475-8da6-d151f217bf59, tags={ com.sampleapp.Android.common.workers.DownloadMediaWorker, DOWNLOAD_MEDIA_ITEM_16_1_1 } ]
2020-04-27 10:52:35.342 com.sampleapp.Android.staging.debug D/WM-Processor: Work 591f9f8f-a938-44ce-962d-5ef952dc01c9 is already enqueued for processing
2020-04-27 10:52:35.342 com.sampleapp.Android.staging.debug D/WM-Processor: Work 25fc121b-3036-454e-ae89-da6a715ae570 is already enqueued for processing
2020-04-27 10:52:35.343 com.sampleapp.Android.staging.debug D/WM-Processor: Work 47c4e47a-a66e-49aa-83b8-8670aae4b797 is already enqueued for processing
2020-04-27 10:52:35.343 com.sampleapp.Android.staging.debug D/WM-Processor: Work 954adf4b-246a-4cff-bcd0-c6a6d6b27e2e is already enqueued for processing
2020-04-27 10:52:35.343 com.sampleapp.Android.staging.debug D/WM-Processor: Work e30b4db8-648a-4f55-8cb8-b6a6d098c46a is already enqueued for processing
2020-04-27 10:52:35.343 com.sampleapp.Android.staging.debug D/WM-Processor: Work cb1320f6-2510-430f-a400-2b12c85d4a1c is already enqueued for processing
2020-04-27 10:52:35.343 com.sampleapp.Android.staging.debug D/WM-Processor: Work cbbe8de7-be76-4f03-8d26-79bf03af1314 is already enqueued for processing
2020-04-27 10:52:35.559 com.sampleapp.Android.staging.debug D/WM-NetworkStateTracker: Network capabilities changed: [ Transports: WIFI Capabilities: NOT_METERED&INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VPN&VALIDATED&NOT_ROAMING&FOREGROUND&NOT_CONGESTED&NOT_SUSPENDED LinkUpBandwidth>=1048576Kbps LinkDnBandwidth>=1048576Kbps SignalStrength: -68]
2020-04-27 10:52:56.786 com.sampleapp.Android.staging.debug D/WM-NetworkStateTracker: Network capabilities changed: [ Transports: WIFI Capabilities: NOT_METERED&INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VPN&VALIDATED&NOT_ROAMING&FOREGROUND&NOT_CONGESTED&NOT_SUSPENDED LinkUpBandwidth>=1048576Kbps LinkDnBandwidth>=1048576Kbps SignalStrength: -65]
2020-04-27 10:53:09.183 com.sampleapp.Android.staging.debug D/WM-NetworkStateTracker: Network capabilities changed: [ Transports: WIFI Capabilities: NOT_METERED&INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VPN&VALIDATED&NOT_ROAMING&FOREGROUND&NOT_CONGESTED&NOT_SUSPENDED LinkUpBandwidth>=1048576Kbps LinkDnBandwidth>=1048576Kbps SignalStrength: -67]
2020-04-27 10:53:18.379 com.sampleapp.Android.staging.debug D/WM-NetworkStateTracker: Network capabilities changed: [ Transports: WIFI Capabilities: NOT_METERED&INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VPN&VALIDATED&NOT_ROAMING&FOREGROUND&NOT_CONGESTED&NOT_SUSPENDED LinkUpBandwidth>=1048576Kbps LinkDnBandwidth>=1048576Kbps SignalStrength: -65]
2020-04-27 10:53:27.594 com.sampleapp.Android.staging.debug D/WM-NetworkStateTracker: Network capabilities changed: [ Transports: WIFI Capabilities: NOT_METERED&INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VPN&VALIDATED&NOT_ROAMING&FOREGROUND&NOT_CONGESTED&NOT_SUSPENDED LinkUpBandwidth>=1048576Kbps LinkDnBandwidth>=1048576Kbps SignalStrength: -67]
2020-04-27 10:53:30.602 com.sampleapp.Android.staging.debug D/WM-NetworkStateTracker: Network capabilities changed: [ Transports: WIFI Capabilities: NOT_METERED&INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VPN&VALIDATED&NOT_ROAMING&FOREGROUND&NOT_CONGESTED&NOT_SUSPENDED LinkUpBandwidth>=1048576Kbps LinkDnBandwidth>=1048576Kbps SignalStrength: -66]
2020-04-27 10:53:58.250 com.sampleapp.Android.staging.debug D/WM-NetworkStateTracker: Network capabilities changed: [ Transports: WIFI Capabilities: NOT_METERED&INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VPN&VALIDATED&NOT_ROAMING&FOREGROUND&NOT_CONGESTED&NOT_SUSPENDED LinkUpBandwidth>=1048576Kbps LinkDnBandwidth>=1048576Kbps SignalStrength: -67]
2020-04-27 10:54:01.367 com.sampleapp.Android.staging.debug D/WM-NetworkStateTracker: Network capabilities changed: [ Transports: WIFI Capabilities: NOT_METERED&INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VPN&VALIDATED&NOT_ROAMING&FOREGROUND&NOT_CONGESTED&NOT_SUSPENDED LinkUpBandwidth>=1048576Kbps LinkDnBandwidth>=1048576Kbps SignalStrength: -66]
2020-04-27 10:56:10.497 com.sampleapp.Android.staging.debug D/WM-NetworkStateTracker: Network capabilities changed: [ Transports: WIFI Capabilities: NOT_METERED&INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VPN&VALIDATED&NOT_ROAMING&FOREGROUND&NOT_CONGESTED&NOT_SUSPENDED LinkUpBandwidth>=1048576Kbps LinkDnBandwidth>=1048576Kbps SignalStrength: -67]
2020-04-27 10:56:13.536 com.sampleapp.Android.staging.debug D/WM-NetworkStateTracker: Network capabilities changed: [ Transports: WIFI Capabilities: NOT_METERED&INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VPN&VALIDATED&NOT_ROAMING&FOREGROUND&NOT_CONGESTED&NOT_SUSPENDED LinkUpBandwidth>=1048576Kbps LinkDnBandwidth>=1048576Kbps SignalStrength: -65]

これらのログは正確に何を言っていますか?なぜ私の労働者は実行を停止するのですか?

6
toobsco42

WorkManagerの作業に影響を与える可能性のある多くのものがあります。ログによると、ワーカーでスローされた可能性のある例外が原因で発生していません。同じコードでも、OEMによって動作が異なる可能性があることに注意してください。

ただし、次の点を確認してください。

最初、WorkManagerは他のスケジューリングメカニズムを内部的に使用します。

  • JobScheduler
  • FirebaseJobDispatcher
  • AlarmManager

それらすべてに独自の制約があります。たとえば、ジョブスケジューラには、タスクを実行するための10分の制限があります。

2番目はワークマネージャ自体のAPIです。同じ名前とREPLACEポリシーを持つジョブがスケジュールされている場合、現在のワーカーは停止します。

サード-制約。ネットワーク接続の問題など、制約が満たされない場合、ジョブはキャンセルされます。

Forth-特定のケースではほとんどありませんが、至る所にバグがあります: https://issuetracker.google.com/issues/140055777

フィフス。ただし、Dozeモードまたはその他のバックグラウンドでの作業の最適化が原因で、ワーカーが停止している可能性が最も高い: https://developer.Android.com/training/monitoring-device-state/doze-standby

そうであるかどうかを確認するために、次のトリックを作成できます。

1)_BuildConfig.DEBUG_がtrueの場合、ワーカーのonStop()呼び出しでトーストメッセージを送信します。このようにして、ワーカーが停止したときに気付くでしょう。

2)アプリと電話がスリープ状態にならないようにするWakeLockを取得してみてください(デバッグ時のみ): https://developer.Android.com/training/scheduling/wakelock =この方法で、電話がスリープ状態にならない場合に備えて、労働者が死んでいるかどうかを確認できます。

次に、バッテリーの最適化が原因でワーカーが死んでいることが実験でわかった場合は、非常に重要な何かのwakelockを取得するか、作業をべき等にして、ワーカーが停止しても問題ないようにワーカーを書き込むことができます。将来どこかで再開しました。結局のところ、それがすべての制限が課された理由です-ユーザーのバッテリーを節約したいのです。

3
Gaket

2.4.0-alpha02で行ったテストから、出力は難読化されていません。

これはデバッグビルドでのみ機能することに注意してください。

別の方法は、 this codelab で説明されているようにWorkManagerのログレベルをカスタマイズすることです。

0
pfmaggi