Skip to content
This repository has been archived by the owner on Apr 12, 2023. It is now read-only.

デバッグ版において、ログファイルを CocoaLogViewer に送信する機能 #271

Open
Takym opened this issue Jul 3, 2021 · 9 comments
Labels
confirmed 開発内部管理用 wontfix 今のところ対応予定がないもの

Comments

@Takym
Copy link
Contributor

Takym commented Jul 3, 2021

その機能リクエストは何らかの問題に関連しますか

デバッグ時にログファイルの内容を確認する時は下記の手順を踏む必要があります。

  1. 「お問い合わせ」ページを開く。
  2. 「動作情報を送信」ボタンを押す。
  3. 「動作情報を確認する」リンクを押す。
  4. ファイル管理ソフトからログファイルを探す。
  5. ログファイルをメールで PC へ送信する。

携帯端末から 4 と 5 の操作を行うのは面倒です。

解決策についてお書きください

CocoaLogViewer へログファイルを送信する処理を実装し、デバッグページ(#160)または「動作情報を確認する」リンクの下に送信ボタンを配置します。既に CocoaLogViewer はログファイルの送信・受信処理を行えます。この機能はビルド構成が「Debug」または「Debug_Mock」の場合にのみ使用できる様にします。

あなたが考える代替案についてご説明ください

spreadCocoa_log を利用します。

Internal IDs:

  • NFR 2966

その他

#232 に関連します。

@Takym
Copy link
Contributor Author

Takym commented Jul 3, 2021

ログファイルを CocoaLogViewer に送信するには TCP/IP を用いて下記の情報を送信します。

名前 位置 長さ 内容
エスケープの許可 +0 1 B bool #208 実装前は false 実装後は true を指定します。
容量 +1 8 B long ファイルの容量(バイト単位)を64ビット整数型で指定します。
内容 +9 ? B byte[] ファイルの内容を指定します。

@keiji
Copy link
Collaborator

keiji commented Jul 3, 2021

これはCOCOAからCocoaLogVIewerをインストールしているPCにTCP接続してデータを送信すると言うことでしょうか。
そこまでするのはDebug機能にしても複雑すぎるように感じます。

大前提となるログファイルの内容を確認する手順ですが、

  1. 「お問い合わせ」ページを開く。
  2. 「動作情報を送信」ボタンを押す。
  3. 「動作情報を確認する」リンクを押す。
  4. ファイル管理ソフトからログファイルを探す。
  5. ログファイルをメールで PC へ送信する。

デバッグビルドができる開発者であれば、この手順は必要ありません。

ログはアプリ固有のファイル領域に保存されています。iOSではXcodeのDevices and Simulatorsでアプリのデータをダウンロードしたり、AndroidではAndroid Studioの「Device File Explorer」かadbコマンドでpullしたりすれば、そのままログファイルを取得できます。

iOS
https://stackoverflow.com/questions/29058229/download-xcode-simulator-directly

Android
https://developer.android.com/studio/debug/device-file-explorer?hl=ja
https://developer.android.com/studio/command-line/adb?hl=ja

@Takym
Copy link
Contributor Author

Takym commented Jul 3, 2021

これはCOCOAからCocoaLogVIewerをインストールしているPCにTCP接続してデータを送信すると言うことでしょうか。

はい。

そこまでするのはDebug機能にしても複雑すぎるように感じます。

送信処理に限れば14行以下で実装する事ができます。
https://github.com/YigtyORG/CocoaLogViewer/blob/16452f556db80c7449cd1002c2a97d0595c498f9/src/Covid19Radar.LogViewer.Launcher/FormSender.cs#L41-L54

ログはアプリ固有のファイル領域に保存されています。iOSではXcodeのDevices and Simulatorsでアプリのデータをダウンロードしたり、AndroidではAndroid Studioの「Device File Explorer」かadbコマンドでpullしたりすれば、そのままログファイルを取得できます。

下記のコマンドでログファイルを取得できる事が確認できました。

call "C:\Program Files (x86)\Android\android-sdk\platform-tools\adb.exe" pull /storage/emulated/0/Android/data/APP_PACKAGE_NAME.APP_PACKAGE_NAME/ <出力先>

@Takym
Copy link
Contributor Author

Takym commented Jul 5, 2021

多くの人の助けになるだろうと思いますので、TCPを使った方式とADBを使った方式の両者を実装する事にします。

@cocoa-dev cocoa-dev added the confirmed 開発内部管理用 label Jul 5, 2021
@Takym
Copy link
Contributor Author

Takym commented Jul 5, 2021

TCPを使った方式は実装しましたが、通信が上手く行きません。
これは恐らく CocoaLogViewer 側の問題です。(恐らくローカルホストからしか受信できません。)
https://github.com/Takym/cocoa/tree/logging_send

@Takym
Copy link
Contributor Author

Takym commented Jul 6, 2021

CocoaLogViewer 側を修正してログを送信できる様にしました。

下記の文字列で検索を掛けると、正しく送受信できているか検証できます。

LEVEL:DEBUG and PRIVACY:TRUE and GLOB:"**/DebugLogSenderPageViewModel.cs" and METHOD:SendCore and ("{ _addr:\"") and ("\", _port:\"") and ("\" }")

追記

下記の短い検索文字列でも充分検証できます。

LEVEL:DEBUG and METHOD:SendCore

追記2

今週末以降にリリースする予定です。

@keiji
Copy link
Collaborator

keiji commented Jul 7, 2021

Takymさんのプロジェクト「CocoaLogViewer」が発展することは喜ばしいことだと考えています。
その上で、外部に情報を送信する機能をCocoaに組み込むことは軽々にできるものではないと言うことを、どうかご理解ください。

繰り返しになりますが、デバッグビルドであれば、また開発者であれば、内部ストレージから直接デバッグログを取得できます。

また、端末とPC間の通信は、内部ネットワークやファイアーウォールなど、さまざまな設定の影響で通信できないことがあります。そのときにCocoaにIssueが立つのか、CocoaLogViewerにIssueが立つのか予測ができません。
開発者向けなのでノーサポートですということであれば、adbやXcodeに任せた方が良いと思います。検索すればたくさん情報が見つかります。

アプリに機能を追加すると言うことは、それに対してのメンテナンスやサポートが必要になるということです。
提案いただいている機能は、ログ閲覧を補助する目的に対して大がかりだとぼくは考えています。最初に「複雑すぎるように感じます」と言ったのは、そういう理由です。

@b-wind
Copy link

b-wind commented Jul 7, 2021

adb は Wi-Fi 経由で利用出来ます。
https://developer.android.com/studio/command-line/adb?hl=ja

Xcode 以外でも iTunes や Finder (macOS Catalina 以降) を利用してWi-Fi越しにファイル転送できたはずです。
(こちらは 「動作情報を確認する」 でファイルを書き出す必要あり )
https://support.apple.com/ja-jp/guide/itunes/itns32636/windows
https://support.apple.com/ja-jp/HT210598

ファイル単位で取得するならリリース版でも使えるこれらの方法でさほど問題無いように思いますが、如何でしょうか。

@keiji keiji added the wontfix 今のところ対応予定がないもの label Jul 13, 2021
@b-wind
Copy link

b-wind commented Sep 29, 2021

@Takym
#360 にて共有シートからログを受け取れる様になる?(勘違いで無ければ)ようなので、実装された際にはCocoaLogViwerに転送するアプリなどを作成すれば代用になるような気がします。

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
confirmed 開発内部管理用 wontfix 今のところ対応予定がないもの
Projects
None yet
Development

No branches or pull requests

4 participants