4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Last updated at Posted at 2021-04-20

UnrealEngineのshippingビルドでログを出す方法をメモしておきます。
UE4.26.2、UE5.3.2で確認しています。
基本的にはWindowsビルドでの内容です。

ログを出す方法

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

参照サイト

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

Androidでログ出しをする方法

Androidでは上記のTarget.csの変更に追加して、以下のようにEngineコードに(USE_LOGGING_IN_SHIPPING==1)を追加すれば良いみたいです。

Engine\Source\Runtime\Core\Private\Android\AndroidPlatformMisc.cpp
void FAndroidMisc::LocalPrint(const TCHAR *Message)
{
	// Builds for distribution should not have logging in them:
	// http://developer.android.com/tools/publishing/preparing.html#publishing-configure
#if !UE_BUILD_SHIPPING || ENABLE_PGO_PROFILE || (USE_LOGGING_IN_SHIPPING==1) 

UE5.3.2のMetaQuest3で動作確認しました。
アプリを起動するだけでログが出力されるようになっていました。

参照サイト:

ビルド時のコマンドライン引数でログ出しを制御する方法

[UE5] パッケージビルド時のコマンドライン引数で .Target.cs の処理を分岐する|株式会社ヒストリア

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

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

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

ログは以下のようなフォルダに出力され、ローテートされる。

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

参照サイト

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

ログのローテーション

BaseEngine.iniでは以下のような設定になっていてプロジェクトのDefaultEngine.iniで設定を上書き可能

Engine/Config/BaseEngine.ini
[LogFiles]
PurgeLogsDays=5 # => 5日より前のログは削除
MaxLogFilesOnDisk=10 => 過去ログは最大10個まで
LogTimes=True # => ログ出力と合わせて時間をプリント

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

UE4.26.2ではそのままでは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

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?