private HourlyFileSink GetLatestSink()
        {
            EnsureDirectoryCreated(this.logDirectory);

            HourlyLogFileInfo logFileInfo = HourlyLogFileInfo.GetLatestOrNew(DateTime.UtcNow, this.logDirectory);

            return(new HourlyFileSink(
                       this.formatter,
                       this.logDirectory,
                       new HourlyLogFileDescription(logFileInfo, DateTime.UtcNow),
                       this.encoding));
        }
Beispiel #2
0
        internal static HourlyLogFileInfo GetLatestOrNew(DateTime date, string logDirectory)
        {
            string pattern = date.ToString(DateFormat) + @"-(\d{5}).log";

            var logFileInfo = new HourlyLogFileInfo(date, 1);

            foreach (var filePath in Directory.GetFiles(logDirectory))
            {
                Match match = Regex.Match(filePath, pattern);
                if (match.Success)
                {
                    var sequence = uint.Parse(match.Groups[1].Value);

                    if (sequence > logFileInfo.Sequence)
                    {
                        logFileInfo = new HourlyLogFileInfo(date, sequence);
                    }
                }
            }

            return(logFileInfo);
        }
 internal HourlyLogFileDescription(HourlyLogFileInfo logFileInfo, DateTime dateTime)
 {
     this.LogFileInfo = logFileInfo;
     this.DateTime    = dateTime;
 }