デバッグ時、ログはコードがどのようなロジックを実行しているかに関する詳細情報を提供することから、非常に貴重なツールとなります。関数間で渡されるデータ値を検査したり、潜在的な問題を報告したりできます。
-
Unreal のロギングでは、実行時の特定の瞬間におけるイベント、関数呼び出し、変数の値の順序付けられた記録を保持する方法に関して、いくつかの手段が用意されています。
-
Unreal Editor で [Window (ウィンドウ)] > [Output Log (アウトプットログ)] に移動すると、ログを確認できます。

[Output Log] ウィンドウは Unreal Editor にあります。
- ログはプロジェクトの「
Saved/Logs
」ディレクトリ内の「.txt
」ファイルに保存されます
UE_LOG
UE_LOG は、フォーマットされたメッセージをログファイルに記録するマクロです。
次に例を示します。
UE_LOG(LogTemp, Warning, TEXT("Hello World"));
-
最初の入力パラメータ
LogTemp
は、DEFINE_LOG_CATEGORY
マクロに指定されたカテゴリ名です。これらのカテゴリは、「CoreGlobals.h
」にあるエンジンで見つけることができます。独自のカスタム ログ カテゴリを作成するには、「独自のログ カテゴリを定義する」セクションを参照してください。 -
2 番目の入力パラメータ
Warning
は冗長性レベルで、コンソールとログファイルへの警告の出力に使用します。さまざまな詳細レベルを設定して、特定のログ内で改行を許可したり、ログのテキストの色を設定したりできます。詳細については、「ログの詳細度」セクションを参照してください。 -
3 番目の入力パラメータ
Text
は、C 言語ライブラリ関数 printf の形式の文字列リテラルの形式です。
ログの詳細度
ELogVerbosity は、ログ システムの詳細レベルを定義する列挙型です。これは、特定のログ行での改行やログ テキストの色の設定を可能にする、追加の非詳細レベルを定義します。
列挙型 | 説明 |
---|---|
Fatal | 常に致命的なエラーをコンソールとログファイルに出力し、ログが無効になっている場合でもクラッシュします。 |
Error | コンソールとログファイルにエラーを出力します。コマンドレットとエディタはエラーを収集して報告します。エラー メッセージによりコマンドレットが失敗します。 |
Warning | コンソールとログファイルに警告を出力します。コマンドレットとエディタは警告を収集して報告します。 |
Display | メッセージをコンソールとログファイルに出力します。 |
Log | メッセージをログファイルに出力しますが、コンソールには出力しません。 |
Verbose | 指定されたカテゴリに対して詳細ログが有効になっている場合、詳細メッセージをログファイルに出力します。これは通常、詳細なログ記録に使用されます。 |
VeryVerbose | 詳細なメッセージをログファイルに出力します。VeryVerbose ログは、詳細なログを出力を行いたい場合のみ有効にしてください。それ以外の場合、スパムのようなログが出力されます。 以下に、ログ マスクと特殊な列挙値のサンプルをいくつか示します。
|
コンソール コマンド
-LogCmds=
を使用すると、コマンド ラインからさまざまなログ カテゴリの詳細度を変更できます。
次に例を示します。
-LogCmds="LogDerivedDataCache Verbose"
このコマンドを使用すると、すべてのログ カテゴリを特定の冗長レベルに切り替える「すべて」カテゴリを含む、複数のカテゴリを指定できます。
基本的なデータ型のロギング
以下、特定のデータ型をログに記録する方法に関する構文書式設定の例を表でいくつか示します。
データ型 | 例 |
---|---|
FString |
|
Bool |
|
Integer |
|
Float |
|
FVector |
|
複数の指定子 |
|
独自のログ カテゴリを定義する
独自のログ カテゴリを定義し、自分の C++ コードで使用できます。サンプルに明確な分類が必要な複数のファイルまたはフレームワークが含まれている場合、独自のログ カテゴリの定義が役に立つことがあります。 関連するヘッダ ファイルで、include ディレクティブのすぐ下に次の行を追加します。
DECLARE_LOG_CATEGORY_EXTERN(<LOG_CATEGORY>, <VERBOSITY_LEVEL>, All);
ここでは、<LOG_CATEGORY>
はカスタム ログ カテゴリ文字列、
ログの詳細レベル
詳細レベル | コンソールへの出力 | エディタ ログへの出力 | テキストの色 | 追加情報 |
---|---|---|---|---|
Fatal | あり | na | na | セッションがクラッシュします。 |
Error | あり | あり | 赤色 | na |
Warning | あり | あり | 黄色 | na |
Display | あり | あり | グレー色 | na |
Log | なし | あり | グレー色 | na |
Verbose | なし | なし | na | na |
VeryVerbose | なし | なし | na | ログ マスクと特別な列挙値を使用してテキストの色を設定できます。 |
関連する C++ ファイルで、include ディレクティブのすぐ下に次の行を追加します。
DEFINE_LOG_CATEGORY(<LOG_CATEGORY>);
これで、このカテゴリを C++ ファイル コードで次のように使用できるようになります。
UE_LOG(<LOG_CATEGORY>, <VERBOSITY_LEVEL>, TEXT("My log string."));
FOutputDevice
から派生して独自の出力を実装できます。
UE_LOGFMT
UE_LOGFMT は、Positional (位置) パラメータまたは Named (名前付き) パラメータをサポートする構造化ログ イベントを記録しますが、両方のスタイルを混ぜることはできません。このマクロを使用するには、Logging/StructeredLog.h
ライブラリの宣言を含める必要があります。
UE_LOGFMT
マクロは Unreal Engine 5.2 で導入されました。現在のエンジンのバージョンが最新であることを確認してください。
パラメータ名 | 説明 |
---|---|
位置 | 位置パラメータを使用する場合、フィールド値は形式で参照されるフィールドと正確に一致している必要があります。 次に例を示します。
|
名前付き | 名前付きパラメータを使用する場合、フィールド値には形式によるすべてのフィールド参照が含まれている必要があります。順序は関係なく、追加のフィールドが許可されます。 次に例を示します。
フィールド名は「[A-Za-z0-9_]+」形式と一致し、このログ イベント内で一意である必要があります。フィールド値は、SerializeForLog または演算子
|
画面上のデバッグ メッセージ
情報を伝達するもう 1 つの便利な方法は、画面上でのデバッグ メッセージの表示です。次のコードを使用すると、画面上にデバッグ メッセージを追加できます。
if (GEngine)
{
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::White, TEXT("This is an Example on-screen debug message."));
}
-
最初の入力パラメータ key は、同じメッセージが複数回追加されることを防ぐために一意の整数キーを受け取ります。
-
2 番目の入力パラメータ TimeToDisplay は、浮動小数点数を受け取ります。これは、メッセージがフェードアウトするまでにメッセージを表示する秒数を表します。
-
3 番目の入力パラメータ DisplayColor は、テキストを表示する色を受け取ります。
-
4 番目の入力パラメータ DebugMessage が、表示するメッセージです。ログと同様に、画面上のデバッグ メッセージで形式指定子と変数を使用できます。