Example #1
0
 /// <summary>
 /// Adds a memory logger with settings object.
 /// </summary>
 public static ILoggerFactory AddMemory(
     this ILoggerFactory factory,
     IMemoryLoggerSettings settings)
 {
     factory.AddProvider(new MemoryLoggerProvider(settings));
     return(factory);
 }
 public MemoryLoggerProvider(Func <string, LogLevel, bool> filter, int maxLogCount = 200)
 {
     _filter   = filter;
     _settings = new MemoryLoggerSettings()
     {
         MaxLogCount = maxLogCount
     };
 }
 public MemoryLoggerProvider(Func<string, LogLevel, bool> filter, int maxLogCount = 200)
 {
     _filter = filter;
     _settings = new MemoryLoggerSettings()
     {
         MaxLogCount = maxLogCount
     };
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="filter"></param>
 /// <param name="maxLogCount"></param>
 /// <param name="logLineFormatter"></param>
 public MemoryLoggerProvider(Func <string, LogLevel, bool> filter,
                             int maxLogCount = 200,
                             Func <LogLevel, string, string, Exception, string> logLineFormatter = null)
 {
     this.logLineFormatter = logLineFormatter;
     _filter   = filter;
     _settings = new MemoryLoggerSettings()
     {
         MaxLogCount = maxLogCount
     };
 }
        /// <summary>
        /// Coustructor with settings object
        /// </summary>
        /// <param name="settings">settings object</param>
        public MemoryLoggerProvider(IMemoryLoggerSettings settings)
        {
            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }

            _settings = settings;

            if (_settings.ChangeToken != null)
            {
                _settings.ChangeToken.RegisterChangeCallback(OnConfigurationReload, null);
            }
        }
        public MemoryLoggerProvider(IMemoryLoggerSettings settings)
        {
            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }

            _settings = settings;

            if (_settings.ChangeToken != null)
            {
                _settings.ChangeToken.RegisterChangeCallback(OnConfigurationReload, null);
            }
        }
        private void OnConfigurationReload(object state)
        {
            // The settings object needs to change here, because the old one is probably holding on
            // to an old change token.
            _settings = _settings.Reload();

            foreach (var logger in _loggers.Values)
            {
                logger.Filter = GetFilter(logger.Name, _settings);
            }

            // The token will change each time it reloads, so we need to register again.
            if (_settings?.ChangeToken != null)
            {
                _settings.ChangeToken.RegisterChangeCallback(OnConfigurationReload, null);
            }
        }
        private void OnConfigurationReload(object state)
         { 
             // The settings object needs to change here, because the old one is probably holding on 
             // to an old change token. 
             _settings = _settings.Reload(); 
 
             foreach (var logger in _loggers.Values) 
             { 
                 logger.Filter = GetFilter(logger.Name, _settings); 
             } 

              // The token will change each time it reloads, so we need to register again. 
             if (_settings?.ChangeToken != null) 
             { 
                 _settings.ChangeToken.RegisterChangeCallback(OnConfigurationReload, null); 
             } 
         } 
        private Func <string, LogLevel, bool> GetFilter(string name, IMemoryLoggerSettings settings)
        {
            if (_filter != null)
            {
                return(_filter);
            }

            if (settings != null)
            {
                foreach (var prefix in GetKeyPrefixes(name))
                {
                    LogLevel level;
                    if (settings.TryGetSwitch(prefix, out level))
                    {
                        return((n, l) => l >= level);
                    }
                }
            }

            return((n, l) => false);
        }
        private Func<string, LogLevel, bool> GetFilter(string name, IMemoryLoggerSettings settings)
         { 
             if (_filter != null) 
             { 
                 return _filter; 
             } 
 
             if (settings != null) 
             { 
                 foreach (var prefix in GetKeyPrefixes(name)) 
                 { 
                     LogLevel level; 
                     if (settings.TryGetSwitch(prefix, out level)) 
                    { 
                         return (n, l) => l >= level; 
                     } 
                 } 
             } 
  
             return (n, l) => false; 
        }
 /// <summary>
 /// Adds a memory logger with settings object.
 /// </summary>
 public static ILoggerFactory AddMemory( 
      this ILoggerFactory factory,
      IMemoryLoggerSettings settings)
  { 
      factory.AddProvider(new MemoryLoggerProvider(settings)); 
      return factory; 
  }