コンテンツにスキップ

ログ出力機能仕様書

開発に興味がありますか?

Project EAUploaderでは開発メンバーを常に募集しています!! 話を聞くだけでもOK! 是非当プロジェクトのDiscordサーバーへお越しください。 参加はこちら



概要


本ログ出力機能は、EAUploaderの一連の内部動作をログファイルに出力し、開発者が容易に閲覧できる機能を提供する。本機能は、開発者がより迅速に不具合解析を行う目的で提供する。

本機能はEAUploader.UI.Windows.Logger(Editor/Resources/UI/Windows/Logger.cs)で実装されている。本ドキュメントは、EAUploader v1.4.6 の内容に準拠している。

用語


  1. ログファイルGUID:ログファイルごとにEAUploaderによって割り当てられるGUIDを指す。開発者が送信されたログファイルを特定するために使用する。
  2. EAUログ:ログ種別EAUであるようなログを指す。
  3. EAUログ出力メソッド:EAUログを出力する際に用いるメソッドを指す。

本機能は、次の機能を提供する。

ログ出力機能


ログ出力機能の開始契機と終了契機

EAUploader起動中、常時ログを出力する。

ログの出力範囲

Unity上のConsoleに出力されているログをすべてログファイルに出力する。また、EAUログ出力メソッドがコールされた場合にも、ログを出力する。

ログファイル形式及びログファイルの保存場所

本機能で出力されるログファイルは、Unityプロジェクトフォルダ直下のEAUploaderLogフォルダにすべて保存する。

EAUploaderLogフォルダに保持するログファイルの容量は、100MBまでとする。ログファイルの容量が100MBを超えた状態で、ログファイルを追記しようとした場合、最も古いログファイルから削除する。

※実装では、ログを追記するたびにフォルダ内の*.logファイルの合計容量を確認し、100MBを超えていた場合は作成日時が最も古いログファイルを1つ削除する。追記のたびに判定を行うため、結果として容量が100MBを下回るまで古いログファイルから削除される。

ログファイルの出力単位は、EAUploader起動時から、EAUploader終了時である。ログファイルの命名形式はYYYY-MM-DD-1.logとする。YYYY-MM-DDは、ログファイルが生成された年月日(UTC)、-[number]は、同日中にEAUploaderが起動された回数を表す。2024-04-22-3.logというログファイルは、2024年4月22日のEAUploader3回目起動時に出力されたログファイルであることを示す。

※実装では、同日のログファイルのうち、存在しない最小の番号を使用する。また、EAUploaderの起動とは、Unityの起動時及びスクリプトの再コンパイル(ドメインリロード)時を指す。

EAUploader起動時に出力するログ

EAUploader起動時には、環境情報と日付(UTC)、ログファイルGUIDを出力する。出力する内容は次の通りである。

EAUploader is starting...
*** Environment Details ***
Date: 2024-04-22
Log GUID: 0123456789abcdef0123456789abcdef
Application-Version: 1.4.6
Unity-Version: 2022.3.22f1
Editor-Platform: WindowsEditor
Vpm-Dependency:
...
*** Environment Details ***

Vpm-Dependencyには、Packages/vpm-manifest.jsonのlockedに記載されているパッケージとバージョンを出力する。

ログの出力形式

ログは次の形式で出力する。

02:42:42.345 [LOG_TYPE] [LOG_MESSAGE] [LOG_TRACELOG]

各項目は半角スペースで区切り、[ ]は出力しない。

  1. タイムスタンプ
    1. hh:mm:ss .fff形式でログが出力された時刻(UTC)を出力する。
  2. LOG_TYPE
    1. ログ種別を表す。種別は次の通り。
      1. LOG:通常ログ。一般的なログレベル。
      2. WNG:警告ログ。
      3. ERR:エラーログ。
      4. EXP:Exception ログ。
      5. AST:Assert ログ。
      6. EAU:EAU ログ。
      7. OTHER:上記以外のログ。
  3. LOG_MESSAGE
    1. ログメッセージ本文。
  4. LOG_TRACELOG
    1. ログ出力場所。ERR,EXPの場合、トレースログを表示する。
    2. ERR,EXPの場合は、トレースログ全体を出力する。2行目以降は、読みやすさのためにタイムスタンプ等の長さ分のインデントを付ける。
    3. EAUの場合は、トレースログの3行目(EAUログ出力メソッドの呼び出し元)を出力する。
    4. 上記以外の場合は、トレースログの2行目(ログの呼び出し元)を出力する。

EAUログ出力メソッド

EAUログ出力メソッドをコールした場合、EAUログを出力する。EAUログは、EAUploaderの操作をログファイルに記録したい場合に使用する。

EAUログ出力メソッドはEAUploader.UI.Windows.Logger.writeEAULogである。

using EAULogger = EAUploader.UI.Windows.Logger;
EAULogger.writeEAULog("Selected setup tab.");

本メソッドは、メッセージの先頭にEAUログであることを示す識別子を付与してDebug.Logを呼び出す。ログ出力処理は識別子をもとにEAUログを判別し、ログファイルには識別子を取り除いたメッセージを出力する。 現在、タブの切り替え操作がEAUログとして出力されている。

エラーレポート画面


ログ種別がERR又はEXPのログを受け取った場合、エラーレポート画面を表示する。エラーレポート画面はEAUploaderのウィンドウの中央に表示する。

エラーレポート画面には、次の内容を表示する。

  1. EAUploader起動後に発生したエラーログ(日時、メッセージ、トレースログ)
  2. 環境情報(EAUploaderのバージョン、Unityのバージョン、プラットフォーム、VPMパッケージの一覧)

エラーレポート画面には次のボタンを配置する。

  1. 再起動:Packages/tech.uslog.eauploaderを再インポートし、EAUploaderを再起動する。
  2. コピー:エラーレポートの内容をクリップボードにコピーする。
  3. OK:エラーレポート画面を閉じる。

なお、エラーレポート画面はEAUploader以外が出力したエラーログでも表示する。動作確認には、メニューの「Window」→「Error Report」(テスト用のエラーログを出力する)を使用できる。

ログレポート表示機能


ユーザーはインポート/設定タブの「設定」に表示した「ログレポートを表示」ボタンから、ログファイルの保存フォルダ(EAUploaderLog)を開くことができる。

「ログレポートを表示」ボタン押下時、ログファイルが保存されているフォルダを開いた旨のダイアログを表示し、ログファイルの保存フォルダをOSのファイルブラウザで開く。

ログレポート送信機能(停止中)


現在送信はできません。 以下は、送信機能の仕様である。

送信機能起動契機

ユーザーはトップ画面に表示した「ログレポートを表示する」ボタンから、開発者に対し、ログファイルを送信することができる。

送信機能画面遷移

「ログレポートを表示する」ボタン押下後、ユーザーに対しログファイルを本当に送信するかどうか確認するダイアログを表示する。

ユーザーが前述のダイアログにおいて、送信する旨のボタンを押下した場合、ログファイル送信処理を実行する。×ボタンを押して、ダイアログを閉じた場合は、ログファイル送信処理を実行せず、トップ画面へ遷移する。

ログファイル送信処理が成功した場合、ユーザーに送信完了メッセージと、ログファイルGUIDを表示する。 ログファイル送信処理が失敗した場合、ユーザーに送信が失敗した旨のメッセージを送信する。