Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Unity プログラミングバイブルR6 号宣伝 & Unity Logging 小話 2024/2/29 Unity Fukuoka #17 1
Slide 2
Slide 2 text
自己紹介 いも(imo) https://adarapata.com 福岡-> 東京-> 福岡(U ターン) Unity エンジニア 株式会社ミラティブで ライブゲームを作っていま す 2024/2/29 Unity Fukuoka #17 2
Slide 3
Slide 3 text
今日話すこと Unity プログラミングバイブル R6 の宣伝 書籍で書ききれなかった話 UnityLogging とLog.Debug の共存について 2024/2/29 Unity Fukuoka #17 3
Slide 4
Slide 4 text
2024/2/29 Unity Fukuoka #17 4
Slide 5
Slide 5 text
2024/2/29 Unity Fukuoka #17 5
Slide 6
Slide 6 text
書いたこと Unity Logging の話 Crash And Exception Reporting の話 ターゲット 普段Debug.Log でログを出力している人 ログを外部ファイルや外部サービスに出力していない人 2024/2/29 Unity Fukuoka #17 6
Slide 7
Slide 7 text
Unity Logging とは Unity 公式が提供しているLogging パッケージ。 https://docs.unity3d.com/Packages/
[email protected]
/manual/in dex.html ざっくりいうと高機能な Debug.Log Debug.Log("Debug Log"); // Debug Log Log.Info("Log Info"); // Unity Logging 2024/2/29 Unity Fukuoka #17 7
Slide 8
Slide 8 text
Debug.Log との違い フォーマットテンプレートの設定 [2023/09/27 00:49:06.374] INFO | Log Info ↑ こういう出力の並びや情報を変更できる ログレベルに応じた出力のフィルタリング Error は出力するがWarning は非表示にするとか 2024/2/29 Unity Fukuoka #17 8
Slide 9
Slide 9 text
Debug.Log との違い 非同期の出力 ログ出力そのものが負荷になる懸念を解消する Burst での実装による最適化も行われている 外部への出力(Sink) ログファイル、json etc... 2024/2/29 Unity Fukuoka #17 9
Slide 10
Slide 10 text
Crash And Exceptions Reporting とは Unity Cloud Diagnostics が提供する機能 アプリのエラーや例外ログを収集してWEB から確認できる 無料から利用できる Unity Logging は開発時のローカルでのログ収集に活用できるが、こち らはリリースしたアプリケーションのログ収集に活用できる。 2024/2/29 Unity Fukuoka #17 10
Slide 11
Slide 11 text
どういうときに使いたいのか こういうときはCrash And Exceptions Reporting を使うと楽。 ユーザーの環境でのエラーを収集したい 自前でサーバーを用意したくない こちらのスライドが非常にわかりやすくてオススメ https://www.docswell.com/s/torisoup/542YJZ- crash_and_exception_reporting 2024/2/29 Unity Fukuoka #17 11
Slide 12
Slide 12 text
なぜ書いたのか Debug.Log の代替手段として有効そう ログについてちょっと考えるきっかけとして 2024/2/29 Unity Fukuoka #17 12
Slide 13
Slide 13 text
Debug.Log の代替手段として有効そう Debug.Log はあくまで画面に出すだけの素朴な機能 ファイルに書き込みたい 環境に合わせてログを抑制したい develop ではログを出すがrelease では出したくないとか 上記をやりたいとなった時に毎回自作Logger クラスを定義しがち。 Unity Logging は一般的Logger の機能が一通り揃っており、移行も難し くないので今後のスタンダードとして採用できそう。 2024/2/29 Unity Fukuoka #17 13
Slide 14
Slide 14 text
ログについてちょっと考えるきっかけとして Unity に絞って情報を集める時に、ログについての話はあまりフォーカ スされない。 何を送るべき? Info とWarning とか使い分けは? ログは誰が見るのか?相手に向けた内容になっている? エンジニア、非エンジニア、機械 でも運用をしていくにあたり重要なこと。 2024/2/29 Unity Fukuoka #17 14
Slide 15
Slide 15 text
Unity の書籍として書くことに意義がありそう Unity に絞らず調べればロギングの考え方は出てくるが、それではあま り出会えない。 最新の便利パッケージ解説としてのLogging Unity ゲーム開発の話題として落とし込む あーUnityEditor に出てくるやつね!から始める 単発の確認作業としてのLog から一歩進んでもらう きっかけから「ログも考え方があるんだな」という引き出しを増やし てもらいたかった。 2024/2/29 Unity Fukuoka #17 15
Slide 16
Slide 16 text
おまけ:書籍で書ききれなかった話 UnityLogging とDebug.Log の共存について 2024/2/29 Unity Fukuoka #17 16
Slide 17
Slide 17 text
UnityLogging とDebug.Log の共存 どっちかに統一できると嬉しいけど、共存しがち。 開発途中に導入したり 外部ミドルウェアが使用していたり 共存している時にどういう対応を取るか そのままにしておく Debug.Log をUnityLogging に集約させる UnityLogging をDebug.Log に集約させる 2024/2/29 Unity Fukuoka #17 17
Slide 18
Slide 18 text
そのままにしておく 気にせずそのままどちらも出力するパターン コンソール上のフォーマットが若干変わる Debug.Log 側のログをファイルに書き込めない 歯抜けのログが出来上がる 2024/2/29 Unity Fukuoka #17 18
Slide 19
Slide 19 text
Debug.Log をUnityLogging に集約させる UnityLogging に集約させるパターン コンソール上のフォーマットが統一される ログファイルに情報が集約される Application.logMessageReceived が呼ばれなくなる リダイレクトされるためそもそもログを受信できなくなるっぽい Crash And Exception Reporting にException ログが送られなくなる SRDebugger や InGameDebugConsole といった実機でログを確認できる系 のライブラリで確認できなくなるので注意 2024/2/29 Unity Fukuoka #17 19
Slide 20
Slide 20 text
UnityLogging をDebug.Log に集約させる UnityLogging のSink 機能を使ってDebug.Log に集約させるパターン UnityLogging 側の Log.Error や Log.Fatal を Crash And Exception Reporting に送信できる Application.logMessageReceived が呼ばれるのでログを扱う他ライ ブラリでも同様に扱える Debug.Log 側のログをファイルに書き込めない 歯抜けのログが出来上がる 2024/2/29 Unity Fukuoka #17 20
Slide 21
Slide 21 text
どれがいいのか ケースバイケースだが、何を重視するかで判断するのが良さそう。 環境で欲しいものは異なる。 開発中はログファイルの情報を重視したいとか リリースしたものはログ収集サービスの情報を重視したいとか 2024/2/29 Unity Fukuoka #17 21
Slide 22
Slide 22 text
例1 UnityEditor では手元のログファイルを見たいのでUnityLogging に集 約させる loggerConfig .RedirectUnityLogs() .WriteTo.File(logPath, minLevel: LogLevel.Verbose) .WriteTo.UnityEditorConsole(); 2024/2/29 Unity Fukuoka #17 22
Slide 23
Slide 23 text
例2 開発ビルド時は Crash And Exceptions Reporting を見たいので Debug.Log に集約させる loggerConfig .WriteTo.UnityDebugLog() .WriteTo.File(logPath, minLevel: LogLevel.Verbose) 2024/2/29 Unity Fukuoka #17 23
Slide 24
Slide 24 text
例3 本番ビルド時は Crash And Exceptions Reporting を見たいので Debug.Log に集約させる しかしエラー以上しか吐かないようにする loggerConfig .WriteTo.UnityDebugLog() .WriteTo.File(logPath, minLevel: LogLevel.Error) 2024/2/29 Unity Fukuoka #17 24
Slide 25
Slide 25 text
まとめ Debug.Log とUnity Logging の共存は起こりうる 環境に合わせてどちらかに寄せる方向がオススメ プログラミングバイブルR6 号買ってね! 2024/2/29 Unity Fukuoka #17 25