using System;
using System.Collections.Generic;
using System.Diagnostics;
+using System.IO;
+using System.Linq;
namespace FDK
{
}
}
+ /// <summary>
+ /// 指定されたフォルダ内に配置可能な、新しいログファイル名を生成して返す。
+ /// </summary>
+ /// <param name="ログフォルダパス">ログファイルを配置するフォルダのパス。</param>
+ /// <param name="ログファイルの接頭辞">ログファイル名に付与する接頭辞。</param>
+ /// <param name="最大保存期間">フォルダ内に保存しておく最大の期間。</param>
+ /// <returns>生成されたログファイル名。パス付き。</returns>
+ /// <remarks>
+ /// ログファイル名は、現在時刻をベースに名付けられる。
+ /// 同時に、フォルダ内に存在するすべてのファイルの生成時刻をチェックし、最大保存期間を超える古いファイルは、自動的に削除する。
+ /// </remarks>
+ public static string ログファイル名を生成する( string ログフォルダパス, string ログファイルの接頭辞, TimeSpan 最大保存期間 )
+ {
+ var 現在の時刻 = DateTime.Now;
+
+ if( Directory.Exists( ログフォルダパス ) )
+ {
+ // (A) フォルダがある場合 → 最大保存期間を超える古いファイルを削除する。
+ var 削除対象ファイルs = Directory.GetFiles( ログフォルダパス ).Where(
+ ( file ) => ( File.GetCreationTime( file ) < ( 現在の時刻 - 最大保存期間 ) ) );
+
+ foreach( var path in 削除対象ファイルs )
+ File.Delete( path );
+ }
+ else
+ {
+ // (B) フォルダがない場合 → 作成する。
+ Directory.CreateDirectory( ログフォルダパス );
+ }
+
+ // 現在の時刻をもとに、新しいログファイル名を生成して返す。
+ return Path.Combine( ログフォルダパス, $"{ログファイルの接頭辞}{現在の時刻.ToString("yyyyMMdd-HHmmssffff")}.txt" );
+ }
+
internal static void BeginInfo( string 開始ブロック名 )
{