public void Execute(RollingFileContext ctx)
        {
            var needUseToday = (!_tryUseTodayLastFile.IsValueCreated && _tryUseTodayLastFile.Value);

            var newFile = needUseToday
                          ? GetTodayLastFileOrCreateNew(ctx.FileProvider)
                          : ctx.FileProvider.ProduceNewFile();

            ctx.LogFile.Change(newFile.FullName, _append);
        }
        public void Execute(RollingFileContext ctx)
        {
            var expireTime = Clock.Now - ExpirationTimeSpan;

            var expiredFiles = ctx.FileProvider.GetFiles()
                               .Where(x => x.Exists && x.CreationTime <= expireTime)
                               .ToArray();

            foreach (var file in expiredFiles)
            {
                if (file.FullName == ctx.LogFile.Path)
                {
                    var newFile = ctx.FileProvider.ProduceNewFile();

                    ctx.LogFile.Change(newFile.FullName);
                }

                file.Delete();
            }
        }