From ff3017305a7ba8cca4439f98427eb481b348f23f Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E3=81=8F=E3=81=BE=E3=81=8B=E3=81=BF=E5=B7=A5=E6=88=BF?= Date: Mon, 12 Jun 2017 16:46:23 +0900 Subject: [PATCH] =?utf8?q?=E3=83=AD=E3=82=B0=E3=83=AD=E3=83=BC=E3=83=86?= =?utf8?q?=E3=83=BC=E3=82=B7=E3=83=A7=E3=83=B3=E6=A9=9F=E8=83=BD=E3=82=92?= =?utf8?q?=E8=BF=BD=E5=8A=A0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Log.ログファイル名を生成する() で実現。 --- FDK/Log.cs | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/FDK/Log.cs b/FDK/Log.cs index d2e5837..6e2612d 100644 --- a/FDK/Log.cs +++ b/FDK/Log.cs @@ -1,6 +1,8 @@ using System; using System.Collections.Generic; using System.Diagnostics; +using System.IO; +using System.Linq; namespace FDK { @@ -92,6 +94,40 @@ namespace FDK } } + /// + /// 指定されたフォルダ内に配置可能な、新しいログファイル名を生成して返す。 + /// + /// ログファイルを配置するフォルダのパス。 + /// ログファイル名に付与する接頭辞。 + /// フォルダ内に保存しておく最大の期間。 + /// 生成されたログファイル名。パス付き。 + /// + /// ログファイル名は、現在時刻をベースに名付けられる。 + /// 同時に、フォルダ内に存在するすべてのファイルの生成時刻をチェックし、最大保存期間を超える古いファイルは、自動的に削除する。 + /// + 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 開始ブロック名 ) { -- 2.11.0