【Unity】Debug.Logをカスタマイズする小技TIPS|ログ保存もできる

Unity

ゲーム開発中、親よりもお世話になる Debug.Log() 先生。
Consoleウィンドウに任意の文字列を出力できる便利なものですが、数が増えてくるとどのログがどの処理のものか分かりづらくなることも…。

この記事では、Unityのログ出力(Debug.Log)の地味に便利なカスタマイズ技をまとめて紹介します。
「ゲーム開発がちょっと快適になる」「ログが見やすくなる」そんな工夫を取り入れていきましょう!

ログを色付きで出力する方法

システム側が出力するログはエラーメッセージは赤色、ワーニングは黄色のように色が付いていることがります。
実は Debug.Log() での出力時にもHTMLタグ風に文字に色をつけることができます。

Debug.Log("<color=green>[成功]</color> 処理が完了しました");
Debug.Log("<color=red>[エラー]</color> 不正なデータが渡されました");

<color=red></color>という書式で囲われた部分に色がつきます。
下記の色指定の他、16進数のカラーコード(#FF0000FF)も使えます。

よく使う色指定の例:

  • <color=red>:エラーや警告
  • <color=yellow>:注意や進捗
  • <color=green>:成功、完了通知
  • <color=cyan>:通信ログなど目立たせたい系

見た目で直感的に把握できるため、テストプレイ中のデバッグ効率がぐっと上がります。
ログの先頭に [TagName] のような色付きマークをつけることで、ログを種類別に管理しやすくなりますのでおすすめです。UnityのConsoleには「検索」機能があるので、[通信][UI] などで絞り込むと、該当ログだけを見られてとても便利です。

ログの書式を指定する

さらに、下記のリッチテキストタグを使って書式指定することも出来ます。

太字

Debug.Log("<b>ロイヤルホスト</b>");

太字にできます。bはボールドのbです。

斜体

Debug.Log("<i>サイゼリヤ</i>");

斜体にできます。使いどころは……わかりません。iはイタリックのiです。

文字の大きさ

Debug.Log("<size=24>すかいらーくグループ</size>");

文字を大きくできますが、ログ1行あたりの縦幅が広がるわけではないの注意しましょう。
文字は下揃えですので、大きすぎる文字を表示するとクソデカ文字の頭しか見えなくなりますよ。

独自のロガークラスを作って出力を統一する

複数のスクリプトで Debug.Log を使っていると、バラバラな書式になりがちです。
そこで、独自のLoggerクラスを作って、全ログの書式や出力レベルを統一してみるのはいかがでしょうか。

例:簡単なLogger.cs

public static class Logger
{
    public static void Log(string tag, string message, string color = "white")
    {
        Debug.Log($"<color={color}>[{tag}]</color> {message}");
    }

    public static void Error(string message)
    {
        Debug.LogError($"<color=red>[ERROR]</color> {message}");
    }
}

使用例:

Logger.Log("通信", "サーバーに接続しました", "cyan");
Logger.Error("セーブデータの読み込みに失敗しました");

このようにカスタムロガーを使うことで、ログの出力形式を完全に統一しつつ、見やすさも向上します。

条件付きログでビルド時に無効化(DEBUGビルド限定)

Unityでは #if UNITY_EDITOR#if DEBUG などの条件付きコンパイルを使って、開発中だけログを出すという方法も使えます。

#if UNITY_EDITOR
Debug.Log("これはEditorでしか表示されません");
#endif

毎フレーム1万個のログを表示させたいが、モバイル端末実機だと重くなりすぎる……というときなどに使う小技です。(その是非は一旦おいておくとする)

あるいは以下のようなマクロを使っても便利です:

#if DEBUG
Logger.Log("デバッグ", "このログは開発用です", "yellow");
#endif

自前で DEBUG 定義をつける場合は、Player Settings > Scripting Define Symbols で設定可能です。

プレイヤー環境でログをファイルに保存する方法

ユーザーの端末でクラッシュや不具合が起きたとき、ログファイルを残しておくと原因特定に非常に役立ちます。

以下は簡単なログ保存処理の一例です。

void Start()
{
    Application.logMessageReceived += HandleLog;
}

void HandleLog(string logString, string stackTrace, LogType type)
{
    string path = Application.persistentDataPath + "/log.txt";
    File.AppendAllText(path, $"{logString}\n");
}

このコードを常駐Managerなどに入れておけば、ログを端末のストレージにテキストで記録できます。
バグ報告時にファイルを送ってもらうことで、リリース後のサポート精度もアップすることでしょう。


まとめ:ログを制す者はデバッグを制す!

  • 書式指定ログで 視認性アップ
  • タグ付きログで 検索しやすく
  • カスタムロガーで 統一感ある出力
  • 条件付き出力で ビルドサイズ削減&本番非表示
  • ファイル保存で ユーザー環境のバグも追跡可能に!

開発後期になるほど、「どこで何が起きたかわからない」バグに悩まされることが多くなります。
そんなときに頼れるのがちゃんと整備されたログです。

最初はちょっとした見た目の工夫からでOKです。
ぜひ、あなたのプロジェクトにも「見やすく、役立つログ出力」を取り入れてみてください!

Unity/C# をもっと体系的に学ぶには?
【現役メンターに質問しながら短期集中】
👉️ Unityコースで学んでみる
タイトルとURLをコピーしました