using System.Diagnostics;
using System.IO;
using System.Linq;
+using System.Text;
namespace FDK
{
throw new FDKException( 出力, inner );
}
+ public static void Header( string ヘッダ出力 )
+ {
+ lock( Log._スレッド間同期 )
+ {
+ Log._一定時間が経過していたら区切り線を表示する();
+ Log.Info( "" );
+ Log.Info( $"======== {ヘッダ出力} ========" );
+ }
+ }
+
public static LogBlock Block( string ブロック名 )
{
return new LogBlock( ブロック名 );
Log._一定時間が経過していたら区切り線を表示する();
Trace.WriteLine( $"{tagINFO} {Log._日時とスレッドID}{Log._インデックスを返す( Log._深さ )}{開始ブロック名} --> 開始" );
- Log._深さ += 4;
+ Log._深さ++;
}
}
{
lock( Log._スレッド間同期 )
{
- Log._深さ = Math.Max( ( Log._深さ - 4 ), 0 );
+ Log._深さ = Math.Max( ( Log._深さ - 1 ), 0 );
Log._一定時間が経過していたら区切り線を表示する();
Trace.WriteLine( $"{tagINFO} {Log._日時とスレッドID}{Log._インデックスを返す( Log._深さ )}{終了ブロック名} <-- 終了" );
private static string _インデックスを返す( int 長さ )
{
- string index = " ";
- int len = 長さ * 2;
- while( 0 < len )
- {
- index += " ".Substring( 0, Math.Min( len, 10 ) );
- len -= 10;
- }
- return index;
+ var sb = new StringBuilder();
+
+ for( int i = 0; i < 長さ; i++ )
+ sb.Append( ( 0 < i ) ? "| " : " " );
+
+ return sb.ToString();
}
{
using( Log.Block( FDKUtilities.現在のメソッド名 ) )
{
- Log.現在のスレッドに名前をつける( "描画" );
-
// 高解像度タイマを使えないならエラー。
if( !( Stopwatch.IsHighResolution ) )
throw new Exception( "このシステムは、高解像度タイマをサポートしていません。" );
App.乱数 = new Random( DateTime.Now.Millisecond );
+ Log.Header( "システム設定を復元します。" );
App.システム設定 = システム設定.復元する();
if( App.ビュアーモードである )
App.システム設定.全画面モードである = false; // ビュアーモードでは常にウィンドウモード。
App.ビュアーメッセージキュー = new ViewerMessageQueue();
-
App.最後に取得したビュアーメッセージ = null;
-
App.ビュアー用ノード = null;
#region " メインフォームを初期化する。"
// グローバルリソースを初期化する (2)フォーム初期化後
+ Log.Header( "入力を初期化します。" );
App.入力管理 = new 入力管理( this.Handle, 32 );
+ Log.Header( "サウンドを初期化します。" );
App.サウンドデバイス = new FDK.メディア.サウンド.WASAPI.Device( CSCore.CoreAudioAPI.AudioClientShareMode.Shared );
App.サウンドタイマ = new FDK.メディア.サウンド.WASAPI.SoundTimer( App.サウンドデバイス );
+ Log.Header( "ユーザを初期化します。" );
App.ユーザ管理 = ユーザ管理.復元する( App.グラフィックデバイス ); // この中で活性化も行われる。
App.ユーザ管理.最初のユーザを選択する();
+ Log.Header( "ステージを初期化します。" );
App.ステージ管理 = new ステージ管理();
App.演奏スコア = null;
private void _高速進行タスクエントリ()
{
Log.現在のスレッドに名前をつける( "高速進行" );
- Log.Info( "高速進行タスクを開始します。" );
+ Log.Header( "高速進行タスクを開始します。" );
this._高速進行ステータス.現在の状態 = TriStateEvent.状態種別.ON;
this._高速進行ステータス.現在の状態 = TriStateEvent.状態種別.無効;
- Log.Info( "高速進行タスクを終了しました。" );
+ Log.Header( "高速進行タスクを終了しました。" );
}
/// <summary>
((DefaultTraceListener) Trace.Listeners["Default"]).LogFileName =
Log.ログファイル名を生成する( Path.Combine( SST.IO.Folder.AppData, "Logs" ), "StrokeStyleTLog", ログの最大保存期間 );
- Log.Info( "アプリケーションを起動します。" );
+ Log.現在のスレッドに名前をつける( "描画" );
+ Log.Header( "アプリケーションを起動します。" );
using( var app = new App( args ) )
{
{
#region " (A) ビュアーモードでの起動(WCFサービスあり)"
//----------------
- Log.Info( "アプリケーションは ビュアーモード です。" );
+ Log.Header( "ビュアーモード で起動します。" );
string serviceUri = "net.pipe://localhost/StrokeStyleT";
string endPointName = "Viewer";
{
#region " (B) 通常の起動(WCFサービスなし)"
//----------------
- Log.Info( "アプリケーションは 通常モード です。" );
+ Log.Header( "通常モード で起動します。" );
app.Run();
//----------------
#endregion
}
- Log.Info( "アプリケーションを終了します。" );
+ Log.Header( "アプリケーションを終了します。" );
}
- Log.Info( "アプリケーションを終了しました。" );
+ Log.Header( "アプリケーションを終了しました。" );
}
}
}
/// <param name="遷移先ステージ名">Nullまたは空文字列なら、非活性化のみ行う。</param>
public void ステージを遷移する( グラフィックデバイス gd, string 遷移先ステージ名 )
{
+ Log.Header( $"{遷移先ステージ名} へ遷移します。" );
+
using( Log.Block( FDKUtilities.現在のメソッド名 ) )
{
if( null != this._現在のステージ &&
if( 遷移先ステージ名.Nullでも空でもない() )
{
- Log.Info( "==============================" );
- Log.Info( $"{遷移先ステージ名} へ遷移します。" );
- Log.Info( "==============================" );
this._現在のステージ = this.ステージリスト[ 遷移先ステージ名 ];
this._現在のステージ.活性化する( gd );
}
else
{
- Log.Info( "ステージの遷移を終了します。" );
+ Log.Header( "ステージの遷移を終了します。" );
this._現在のステージ = null;
}
}