Пример #1
0
        /*
         * public MongoDBLoggerProvider(Func<string, LogLevel, bool> filter, bool includeScopes)
         * {
         *  if (filter == null)
         *  {
         *      throw new ArgumentNullException(nameof(filter));
         *  }
         *
         *  _filter = filter;
         *  _settings = new MongoDBLoggerSettings()
         *  {
         *      IncludeScopes = includeScopes,
         *  };
         * }
         */

        public MongoDBLoggerProvider(IMongoDBLoggerSettings settings)
        {
            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }

            _settings = settings;

            if (_settings.ChangeToken != null)
            {
                _settings.ChangeToken.RegisterChangeCallback(OnConfigurationReload, null);
            }
        }
Пример #2
0
        private void OnConfigurationReload(object state)
        {
            _settings = _settings.Reload();

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

            if (_settings?.ChangeToken != null)
            {
                _settings.ChangeToken.RegisterChangeCallback(OnConfigurationReload, null);
            }
        }
        public MongoDBLogger(string name, Func <string, LogLevel, bool> filter, IMongoDBLoggerSettings settings)
        {
            if (name == null)
            {
                throw new ArgumentNullException(nameof(name));
            }

            Name          = name;
            Filter        = filter ?? ((category, logLevel) => true);
            IncludeScopes = settings.IncludeScopes;

            var Client = new MongoClient(settings.ConnectionString);

            mdb            = Client.GetDatabase(settings.DbName);
            CollectionName = settings.CollectionName;
        }
Пример #4
0
        private Func <string, LogLevel, bool> GetFilter(string name, IMongoDBLoggerSettings 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);
        }
Пример #5
0
        /*
         * public static ILoggerFactory AddMongoDB(this ILoggerFactory factory)
         * {
         *  return factory.AddMongoDB(includeScopes: false);
         * }
         * public static ILoggerFactory AddMongoDB(this ILoggerFactory factory, bool includeScopes)
         * {
         *  factory.AddMongoDB((n, l) => l >= LogLevel.Information, includeScopes);
         *  return factory;
         * }
         * public static ILoggerFactory AddMongoDB(this ILoggerFactory factory, LogLevel minLevel)
         * {
         *  factory.AddMongoDB(minLevel, includeScopes: false);
         *  return factory;
         * }
         * public static ILoggerFactory AddMongoDB(this ILoggerFactory factory, LogLevel minLevel, bool includeScopes)
         * {
         *  factory.AddMongoDB((category, logLevel) => logLevel >= minLevel, includeScopes);
         *  return factory;
         * }
         * public static ILoggerFactory AddMongoDB(this ILoggerFactory factory, Func<string, LogLevel, bool> filter)
         * {
         *  factory.AddMongoDB(filter, includeScopes: false);
         *  return factory;
         * }
         * public static ILoggerFactory AddMongoDB(this ILoggerFactory factory, Func<string, LogLevel, bool> filter, bool includeScopes)
         * {
         *  factory.AddProvider(new MongoDBLoggerProvider(filter, includeScopes));
         *  return factory;
         * }
         */

        public static ILoggerFactory AddMongoDB(this ILoggerFactory factory, IMongoDBLoggerSettings settings)
        {
            factory.AddProvider(new MongoDBLoggerProvider(settings));
            return(factory);
        }