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)); } }
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); } }
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)); } }
public LogEventLevel GetDefaultMinimumLevel() => NavigationFilterProcessor.GetDefault(Name);
public LogEventLevel GetSinkDefaultMinimumLevel(string sinkName) => NavigationFilterProcessor.GetDefault(sinkName);