示例#1
0
        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());
            }
        }
示例#2
0
        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();
        }