Ejemplo n.º 1
0
        internal void ProcessLogLevel <TSinkSettings>(TSinkSettings settings) where TSinkSettings : class, ILoggingSinkOptions, new()
        {
            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }

            foreach (var item in LogLevel)
            {
                var nav = _namespaceNavigatorCache.Parse(item.Key, item.Value, out _);
                if (nav is EmptyNamespaceNavigationNode)
                {
                    continue;
                }
                if (!_namespaceFilterNavRoots.Contains(nav))
                {
                    lock (_parsedLgLevelLock) {
                        if (!_namespaceFilterNavRoots.Contains(nav))
                        {
                            _namespaceFilterNavRoots.Add(nav);
                        }
                    }
                }
            }

            NavigationFilterProcessor.SetSinkFilterNavMatcher(Name, _namespaceNavigatorCache,
                                                              LogLevel.TryGetValue("Default", out var x) ? x : LogEventLevelConstants.Verbose);

            foreach (var item in Aliases)
            {
                LogEventLevelAliasManager.AddAlias(item.Key, LogEventLevelConverter.Convert(item.Value));
            }
        }
Ejemplo n.º 2
0
        protected override void BeforeProcessing(ILoggingSinkOptions settings)
        {
            if (settings is FileSinkOptions options)
            {
                Aliases.MergeAndOverWrite(options.InternalAliases, k => k, v => v.GetName());
                LogLevel.MergeAndOverWrite(options.InternalNavigatorLogEventLevels, k => k, v => v.GetName());

                foreach (var rule in OutputRules)
                {
                    if (rule.Value != null && string.IsNullOrWhiteSpace(rule.Value.Template))
                    {
                        rule.Value.Template = options.RealDefaultOutputTemplate;
                    }
                }

                foreach (var rule in options.OutputOptionsInternal)
                {
                    NavigationFilterProcessor.SetOutputOption(rule.Key, rule.Value, BasePath);
                }
            }

            foreach (var rule in OutputRules)
            {
                NavigationFilterProcessor.SetOutputOption(rule.Key, rule.Value, BasePath);
            }
        }
Ejemplo n.º 3
0
        public Task WriteAsync(ILogPayload payload, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (payload != null)
            {
                var legalityEvents = LogEventSinkFilter.Filter(payload, _sinkConfiguration).ToList();
                var ix             = 0;
                var count          = legalityEvents.Count;

                foreach (var logEvent in legalityEvents)
                {
                    var strategyWrappers = NavigationFilterProcessor.GetValues(logEvent.StateNamespace);

                    if (strategyWrappers == null || !strategyWrappers.Any())
                    {
                        continue;
                    }

                    var targetMessageBuilder = new StringBuilder();
                    using (var output = new StringWriter(targetMessageBuilder, _formatProvider)) {
                        logEvent.RenderMessage(output, _sinkConfiguration.Rendering, _formatProvider);
                    }

                    foreach (var strategy in strategyWrappers.Select(x => x.SavingStrategy))
                    {
                        var targetFilePath = strategy.CheckAndGetFilePath(logEvent);
                        if (string.IsNullOrWhiteSpace(targetFilePath))
                        {
                            continue;
                        }

                        //判断是否需要渲染 extra properties
                        //检查token

                        //渲染OutputTemplate
                        var stringBuilder = new StringBuilder();
                        using (var output = new StringWriter(stringBuilder, _formatProvider)) {
                            OutputTemplateRenderer.Render(strategy.FormattingStrategy.OutputTemplate, output, logEvent, targetMessageBuilder);
                        }

                        //写文件
                        if (_fileAstronautCache.TryGetFileAstronaut(strategy, targetFilePath, out var astronaut))
                        {
                            using (FileAstronautRemover.UsingRegister(targetFilePath, astronaut)) {
                                astronaut.Save(stringBuilder);
                                //astronaut. ...
                                Console.WriteLine("渲染模板为:" + strategy.FormattingStrategy.OutputTemplate.Text);
                                Console.WriteLine("原始结果为:" + targetMessageBuilder);
                                Console.WriteLine("渲染结果为:" + stringBuilder);
                            }
                        }
                    }
                }
            }
#if NET451
            return(Task.FromResult(true));
#else
            return(Task.CompletedTask);
#endif
        }
        private void SetSelf(LoggingConfiguration configuration)
        {
            var settings = _loggingSettings as LoggingOptions ?? LoggingOptions.Defaults;

            if (configuration == null)
            {
                IncludeScopes = false;
                LogLevel      = new Dictionary <string, string> {
                    { "Default", "Information" }
                };
                Rendering = new RenderingConfiguration(settings.Rendering);
            }
            else
            {
                IncludeScopes = configuration.IncludeScopes;
                LogLevel      = configuration.LogLevel;
                Rendering     = new RenderingConfiguration(configuration.Rendering, settings.Rendering);
            }

            Aliases.MergeAndOverWrite(settings.InternalAliases, k => k, v => v.GetName());
            LogLevel.MergeAndOverWrite(settings.InternalNavigatorLogEventLevels, k => k, v => v.GetName());

            foreach (var item in LogLevel)
            {
                var nav = _namespaceNavigatorCache.Parse(item.Key, item.Value, out _);
                if (nav is EmptyNamespaceNavigationNode)
                {
                    continue;
                }
                if (!_namespaceFilterNavRoots.Contains(nav))
                {
                    _namespaceFilterNavRoots.Add(nav);
                }
            }

            NavigationFilterProcessor.SetGlobalFilterNavMatcher(_namespaceNavigatorCache,
                                                                settings.MinimumLevel.HasValue
                    ? settings.MinimumLevel.Value.GetName()
                    : LogLevel.TryGetValue("Default", out var x)
                        ? x
                        : LogEventLevelConstants.Verbose);

            foreach (var item in Aliases)
            {
                LogEventLevelAliasManager.AddAlias(item.Key, LogEventLevelConverter.Convert(item.Value));
            }
        }
Ejemplo n.º 5
0
 public LogEventLevel GetDefaultMinimumLevel() => NavigationFilterProcessor.GetDefault(Name);
Ejemplo n.º 6
0
 public LogEventLevel GetSinkDefaultMinimumLevel(string sinkName) => NavigationFilterProcessor.GetDefault(sinkName);