コード例 #1
0
        private void ReloadLoggerOptions(FileLoggerOptions options, bool startup)
        {
            if (string.IsNullOrEmpty(options.Path))
            {
                throw new ArgumentException($"Invalid value", nameof(options.Path));
            }
            if (options.Behaviour == FileLoggerBehaviour.Backup)
            {
                if ((options.BackupMode & FileLoggerBackupMode.Size) == FileLoggerBackupMode.Size && !TryParseSize(options.MaxSize, out _maxSize))
                {
                    throw new ArgumentException($"Invalid value", nameof(options.MaxSize));
                }
                if ((options.BackupMode & FileLoggerBackupMode.Age) == FileLoggerBackupMode.Age && options.MaxAge <= TimeSpan.Zero)
                {
                    throw new ArgumentException($"Invalid value", nameof(options.MaxAge));
                }
            }

            _includeScopes = options.IncludeScopes;
            _path          = ResolvePath(options.Path);
            _prefix        = options.Pattern;
            _behaviour     = options.Behaviour;
            _backupMode    = options.BackupMode;
            _maxAge        = options.MaxAge;

            var scopeProvider = GetScopeProvider();
            var fileLogger    = GetFileProcessor(reset: true, startup: startup);

            foreach (var logger in _loggers.Values)
            {
                logger.ScopeProvider = scopeProvider;
                logger.FileProcessor = fileLogger;
                logger.Pattern       = _prefix;
            }
        }
コード例 #2
0
        public FileLoggerBackupProcessor(string path, FileLoggerBackupMode mode, long maxSize, TimeSpan maxAge, bool startup)
            : base(path, false)
        {
            var testSize = (mode & FileLoggerBackupMode.Size) == FileLoggerBackupMode.Size;
            var testAge  = (mode & FileLoggerBackupMode.Age) == FileLoggerBackupMode.Age;

            _backupFile = BackupFileFactory(testSize ? maxSize : long.MaxValue, testAge ? maxAge : Timeout.InfiniteTimeSpan);

            if (startup && (mode & FileLoggerBackupMode.Startup) == FileLoggerBackupMode.Startup)
            {
                GenerateBackupFile();
            }
        }