public void ArchiveLogFiles(string applicationName, FileLoggerOptions options, string logFileNamePattern) { try { foreach (string LogFilePath in _FileSystem.EnumerateFiles( options.LogFileDirectory !, FileNameGenerator.GenerateWildcardFileName(applicationName, logFileNamePattern), SearchOption.TopDirectoryOnly)) { if (_LogFiles.Any(i => i.Value.FinalFullPath == LogFilePath)) { continue; } if (_FileSystem.GetFileCreationTimeUtc(LogFilePath) < DateTime.UtcNow.Date) { TryArchiveLogFile(options, LogFilePath); } } } #pragma warning disable CA1031 // Do not catch general exception types catch (Exception FatalException) #pragma warning restore CA1031 // Do not catch general exception types { Console.Error.WriteLine(FatalException.ToString()); } }
private void ApplyOptions(FileLoggerOptions options) { _ApplicationName = !string.IsNullOrWhiteSpace(options.ApplicationName) ? options.ApplicationName.Trim() : _HostEnvironment.ApplicationName; string LogFileDirectory = PrepareLogFileDirectory("Log file directory", options.LogFileDirectory, FileLoggerOptions.DefaultLogFileDirectory); string LogFileArchiveDirectory = PrepareLogFileDirectory("Log file archive directory", options.LogFileArchiveDirectory, FileLoggerOptions.DefaultLogFileArchiveDirectory); string LogFileNamePattern = !string.IsNullOrWhiteSpace(options.LogFileNamePattern) ? options.LogFileNamePattern.Trim() : !options.IncludeGroupNameInFileName ? FileLoggerOptions.DefaultLogFileNamePattern : FileLoggerOptions.DefaultGroupLogFileNamePattern; string TestFileName = FileNameGenerator.GenerateFileName( _ApplicationName, s_DefaultSystemTime, "__OptionsTest__", LogFileNamePattern); if (TestFileName.IndexOfAny(Path.GetInvalidFileNameChars()) >= 0) { throw new InvalidOperationException("Log file naming pattern cannot contain invalid characters."); } if (options.TestDiskOnStartup) { TestDiskPermissions(LogFileDirectory, LogFileArchiveDirectory, TestFileName + ".permtest"); } options.LogFileDirectory = LogFileDirectory; options.LogFileArchiveDirectory = LogFileArchiveDirectory; _LogFileNamePattern = LogFileNamePattern; _LogFileMaxSizeInKilobytes = options.LogFileMaxSizeInKilobytes > 0 ? options.LogFileMaxSizeInKilobytes : (int?)null; _State = new State(options.JsonOptions ?? FileLoggerOptions.DefaultJsonOptions); _LoggerGroupCache = new LoggerGroupCache(options.GroupOptions ?? FileLoggerOptions.DefaultGroupOptions); _LogFileManager.ClearCache(); }