ロギングに SLF を使用するプログラムがあります。このプログラムは 24 時間年中無休で実行されており、ログ ファイルを毎晩リモート サーバーにアップロードして後で確認したいと考えています。
私の質問は、プログラムを閉じずにログのファイル ロックを解除するにはどうすればよいですか?
ログを一時停止し、ログをアップロードし、ログ ファイルを削除するか内容を消去してから、ログを再開することを望んでいました。
ILogger logger = LoggerService.GetLogger(typeof(TaskScheduler).FullName);
// Other initialization here
foreach (var task in managedTasks.OrderBy(t => t.Priority))
{
if (task.NextRunTime <= DateTime.Now)
{
dataManager.CurrentStatus = AppStatus.Running;
if (task.Name == "Log Sender")
{
logger = null;
}
// Run the task
if (task.Name == "Log Sender")
{
logger = LoggerService.GetLogger(typeof(TaskScheduler).FullName);
}
dataManager.CurrentStatus = AppStatus.Idle;
}
}
現在、これを行うと、ファイルがまだタスク スケジューラによってロックされているため、まだ IOException が発生します。
編集:それが役立つ場合は、log4net で SLF を使用しています。