UE4のshippingビルドでログを出す


UE4のshippingビルドでログを出す方法をメモしておきます。
UE4.26.2で確認しています。

ログを出す方法

  • Engineをソースコードビルドしてプロジェクトに適用する
  • [プロジェクト名].Target.csに以下を追加する
if (Configuration == UnrealTargetConfiguration.Shipping)
{
    BuildEnvironment = TargetBuildEnvironment.Unique;
    bUseLoggingInShipping = true;
}
  • ビルドしたexeを実行するときに-logオプションをつける
    • => コマンドプロンプトが新たに起動してログが出力される

参照サイト

ue4 shipping (exe version) output log log - Programmer Soughtなど

ログをファイルに出力する方法

以下のようなオプションをつけてビルドしたexeを実行する

LOG=[出力したいログファイル名]

ログは以下のようなフォルダに出力される

C:\Users\[ユーザ名]\AppData\Local\[プロジェクト名]\Saved\Logs

参照サイト

コマンドライン引数 | Unreal Engine ドキュメント

BlueprintのPrintStringの内容をログに出す方法

そのままではBlueprintのPrintStringの内容がログには出てこない
出力するためには以下のようにEngine側のコードを変更してビルドする必要がある
※ #if、#endifをコメントアウトするとビルドでエラーになったのでこの修正方法にした

Engine/Source/Runtime/Engine/Private/KismetSystemLibrary.cpp
void UKismetSystemLibrary::PrintString(const UObject* WorldContextObject, const FString& InString, bool bPrintToScreen, bool bPrintToLog, FLinearColor TextColor, float Duration)
{
#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST) // Do not Print in Shipping or Test
...
#else // <= ====== 追加 ====== 
    UE_LOG(LogBlueprintUserMessages, Log, TEXT("%s"), *InString); // <= ====== 追加 ====== 
#endif

参照サイト

[UE4] Shippingのデバッグ - Qiita