# ロギング 中級 プログラマー [Log](xref:Stride.Engine.ScriptComponent.Log) クラスを使うと、ゲームの実行中に、ゲームに関する情報を**ログ**に記録することができます。 自動的に情報を取得する[プロファイリング](profiling.md)とは異なり、独自のログメッセージを作成し、それをいつトリガーするかを決めるのはあなた自身です。例えば、キャラクターが特定のアクションを行ったときにトリガーされるログメッセージを作成することができます。これは、ゲームのパフォーマンスを調査するのに役立ちます。 >[!Note] >リリースモードでゲームをビルドすると、ログの記録が無効になります。 ロギングを使用し、デバッグモードでゲームを実行すると、Stride は、ロギング情報を表示する 2 つ目のウィンドウでコンソールを開きます。メッセージは、レベルごとに色分けされます。 モジュールの名前(ログメッセージを含むスクリプトなど)が、かっこ内に表示されます。続いてログレベル(**Warning**, **Error** など)、そしてログメッセージが表示されます。 ![Logging in console](media/logging-in-console.png) コンソールには、自分のスクリプトだけでなく、すべてのモジュールからのログメッセージが表示されます。例えば、@'Stride.Core.Serialization.Contents.ContentManager' からのメッセージも表示されます。 Visual Studio からゲームを実行した場合、ログメッセージは、代わりに Visual Studio の**出力**ウィンドウに表示されます。 ![Log output window](media/log-output-in-visual-studio.png) ## ログレベル ログメッセージには 6 つのレベルがあり、重大度に応じて使い分けられます。 | ログレベル | 色 | 説明 |-----------|-------|----- | Debug | 灰 | 高度なデバッグを目的としたステップバイステップの情報 | Verbose | 白 | 詳細情報 | Info | 緑 | 一般的な情報 | Warning | 黄 | 問題を引き起こすかもしれないマイナーなエラー | Error | 赤 | エラー | Fatal | 赤 | ゲームをクラッシュさせる深刻なエラー 既定では、ログは **Info** レベル以上のメッセージを表示します。つまり、既定では **Debug**, **Verbose** のメッセージは表示されません。これを変更するには、後述する **最小レベルの設定** を参照してください。 ## ログメッセージを出力する ログを出力したいコードが含まれるスクリプトで、次のように記述します。 ```cs Log.Debug("My log message"); ``` `Debug` の部分を、ログメッセージに使用するレベルで置き換えることができます(先述の **ログレベル** を参照)。 これを `if` 文と組み合わせることで、特定の条件を満たしたときにメッセージをログに残すことができます(後述する **サンプルスクリプト** を参照)。 ## ログレベルを設定する ログに出力する最小のレベルを設定することができます。例えば、**Warning** 以上の厳しいメッセージだけを表示したい場合は、次のようにします。 ```cs Log.ActivateLog(LogMessageType.Warning); ``` >[!Note] >これはグローバルな設定ではありません。設定したログレベルは、設定したスクリプトでのみ適用されます。 ### 実行時にログレベルを変更する ```cs ((Game)Game).ConsoleLogLevel = LogMessageType.myLogLevel; ``` ### 特定のログを無効にする ```cs GlobalLogger.GetLogger("RouterClient").ActivateLog(LogMessageType.Debug, LogMessageType.Fatal, false); // RouterClient モジュールのロギングを無効化 // Disables logging of the RouterClient module ``` ### コンソールでのロギングを無効化する ```cs ((Game)Game).ConsoleLogMode = ConsoleLogMode.None; ``` ### ログファイルを作成する ログ出力をテキストファイルに保存するには、`Start` メソッドに以下のコードを追加します。 ```cs var fileWriter = new TextWriterLogListener(new FileStream("myLogFile.txt", FileMode.Create)); GlobalLogger.GlobalMessageLogged += fileWriter; ``` これにより、プロジェクトの Debug フォルダにファイルが作成されます。(例:*MyGame\MyGame\Bin\Windows\Debug\myLogFile.txt*) ## サンプルスクリプト 次のスクリプトは、`MyTexture` テクスチャーが読み込まれたかどうかを確認する例です。 テクスチャーが読み込まれたとき、ログはデバッグメッセージ(`Log.Error`)を表示します。 読み込まれなかったときは、ログはエラーメッセージ(`Log.Debug`)を記録します。 ```cs using System.Linq; using System.Text; using System.Threading.Tasks; using Stride.Core.Diagnostics; using Stride.Core.Mathematics; using Stride.Input; using Stride.Engine; using Stride.Graphics; namespace MyGame { public class Script : SyncScript { public Texture myTexture; public override void Start() { // Initialization of the script. Log.ActivateLog(LogMessageType.Debug); Log.Debug("Start loading MyTexture"); myTexture = Content.Load("MyTexture"); if (myTexture == null) { Log.Error("MyTexture not loaded"); } else { Log.Debug("MyTexture loaded successfully"); } } } } ``` ## 関連項目 * [デバッグ テキスト](debug-text.md) * [プロファイリング](profiling.md) * [スクリプト](../scripts/index.md)