From 870f23c903f693375079eadf5335f804ceb86af5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zolt=C3=A1n=20Gyebrovszki?= Date: Wed, 3 Jan 2024 17:27:09 +0100 Subject: [PATCH 1/8] Use ILogger instead of SnLog in strtup sequence (part 1). --- src/ContentRepository/RepositoryInstance.cs | 17 ++++++++---- .../Schema/ContentTypeManager.cs | 9 ++++++- src/Storage/Configuration/Providers.cs | 8 ++++-- src/Storage/Security/SecurityHandler.cs | 26 ++++++++++++++----- src/Storage/StorageSchema.cs | 9 ++++++- 5 files changed, 54 insertions(+), 15 deletions(-) diff --git a/src/ContentRepository/RepositoryInstance.cs b/src/ContentRepository/RepositoryInstance.cs index 09379f3da..acbc828d7 100644 --- a/src/ContentRepository/RepositoryInstance.cs +++ b/src/ContentRepository/RepositoryInstance.cs @@ -8,6 +8,7 @@ using System.IO; using System.Threading; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; using SenseNet.Communication.Messaging; using SenseNet.Configuration; using SenseNet.ContentRepository.Schema; @@ -15,6 +16,7 @@ using SenseNet.Search.Querying; using SenseNet.TaskManagement.Core; using SenseNet.Tools; +using EventId = SenseNet.Diagnostics.EventId; namespace SenseNet.ContentRepository { @@ -70,7 +72,7 @@ public class StartupInfo /// Gets the started up instance or null. /// public static RepositoryInstance Instance { get { return _instance; } } - + public TextWriter Console => _settings?.Console; private RepositoryInstance() @@ -78,6 +80,7 @@ private RepositoryInstance() _startupInfo = new StartupInfo { Starting = DateTime.UtcNow }; } + private ILogger _logger; private static bool _started; internal static RepositoryInstance Start(RepositoryStartSettings settings) { @@ -90,6 +93,7 @@ internal static RepositoryInstance Start(RepositoryStartSettings settings) var instance = new RepositoryInstance(); instance._settings = new RepositoryStartSettings.ImmutableRepositoryStartSettings(settings); _instance = instance; + _instance._logger = instance._settings.Services.GetService>(); try { instance.DoStart(); @@ -138,8 +142,8 @@ internal void DoStart() // We have to log the access provider here because it cannot be logged // during creation as it would lead to a circular reference. - SnLog.WriteInformation($"AccessProvider created: {AccessProvider.Current?.GetType().FullName}"); - +//SnLog.WriteInformation($"AccessProvider created: {AccessProvider.Current?.GetType().FullName}"); + _logger.LogInformation($"AccessProvider created: {AccessProvider.Current?.GetType().FullName}"); using (new SystemAccount()) StartManagers(); @@ -239,7 +243,8 @@ private void StartManagers() // Log this, because logging is switched off when creating the cache provider // to avoid circular reference. - SnLog.WriteInformation($"CacheProvider created: {Cache.Instance?.GetType().FullName}"); +//SnLog.WriteInformation($"CacheProvider created: {Cache.Instance?.GetType().FullName}"); + _logger.LogInformation($"CacheProvider created: {Cache.Instance?.GetType().FullName}"); ConsoleWriteLine("ok."); ConsoleWrite("Starting message channel ... "); @@ -247,7 +252,9 @@ private void StartManagers() channel.StartAsync(CancellationToken.None).GetAwaiter().GetResult(); ConsoleWriteLine("ok."); - SnLog.WriteInformation($"Message channel {channel.GetType().FullName} started." + +//SnLog.WriteInformation($"Message channel {channel.GetType().FullName} started." + +// $"Instance id: {channel.ClusterMemberInfo.InstanceID}"); + _logger.LogInformation($"Message channel started: {channel.GetType().FullName}. " + $"Instance id: {channel.ClusterMemberInfo.InstanceID}"); ConsoleWrite("Sending greeting message ... "); diff --git a/src/ContentRepository/Schema/ContentTypeManager.cs b/src/ContentRepository/Schema/ContentTypeManager.cs index 02ffbf96c..580ac5970 100644 --- a/src/ContentRepository/Schema/ContentTypeManager.cs +++ b/src/ContentRepository/Schema/ContentTypeManager.cs @@ -20,6 +20,9 @@ using SenseNet.Search.Indexing; using SenseNet.Tools; using STT=System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using EventId = SenseNet.Diagnostics.EventId; namespace SenseNet.ContentRepository.Schema { @@ -49,6 +52,7 @@ public override STT.Task DoActionAsync(bool onRemote, bool isFromMe, Cancellatio private static bool _initializing = false; private const string ContentTypeManagerProviderKey = "ContentTypeManager"; + private ILogger _logger; [Obsolete("Use Instace instead.")] public static ContentTypeManager Current => Instance; @@ -71,7 +75,8 @@ public static ContentTypeManager Instance contentTypeManager = ctm; _initializing = false; Providers.Instance.SetProvider(ContentTypeManagerProviderKey, ctm); - SnLog.WriteInformation("ContentTypeManager created. Content types: " + ctm._contentTypes.Count); +//SnLog.WriteInformation("ContentTypeManager created. Content types: " + ctm._contentTypes.Count); + Instance._logger.LogInformation("ContentTypeManager created. Content types: " + ctm._contentTypes.Count); } } } @@ -149,6 +154,8 @@ private static void Node_AnyContentListDeleted(object sender, EventArgs e) private void Initialize() { + _logger = Providers.Instance.Services.GetRequiredService>(); + using (new SenseNet.ContentRepository.Storage.Security.SystemAccount()) { _contentPaths = new Dictionary(); diff --git a/src/Storage/Configuration/Providers.cs b/src/Storage/Configuration/Providers.cs index bb9d1eb22..704fb98d5 100644 --- a/src/Storage/Configuration/Providers.cs +++ b/src/Storage/Configuration/Providers.cs @@ -21,6 +21,7 @@ using SenseNet.Search.Querying; using SenseNet.Tools.Diagnostics; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; using SenseNet.ContentRepository.Search; using SenseNet.Storage; using SenseNet.Storage.Security; @@ -48,10 +49,12 @@ private static string GetProvider(string key, string defaultValue = null) //===================================================================================== Instance public IServiceProvider Services { get; } + private ILogger _logger; public Providers(IServiceProvider services) { Services = services ?? throw new ArgumentNullException(nameof(services)); + _logger = services.GetService>(); DataProvider = services.GetService(); DataStore = services.GetService(); @@ -259,8 +262,9 @@ public virtual MembershipExtenderBase MembershipExtender } var activeObserverNames = activeObservers.Select(x => x.GetType().FullName).ToArray(); - SnLog.WriteInformation("NodeObservers are instantiated. ", EventId.RepositoryLifecycle, - properties: new Dictionary { { "Types", string.Join(", ", activeObserverNames) } }); +//SnLog.WriteInformation("NodeObservers are instantiated. ", EventId.RepositoryLifecycle, +// properties: new Dictionary { { "Types", string.Join(", ", activeObserverNames) } }); + Instance?._logger.LogInformation($"NodeObservers are instantiated. Types: {string.Join(", ", activeObserverNames)}"); return activeObservers; }); diff --git a/src/Storage/Security/SecurityHandler.cs b/src/Storage/Security/SecurityHandler.cs index ef244adbc..b2b51216d 100644 --- a/src/Storage/Security/SecurityHandler.cs +++ b/src/Storage/Security/SecurityHandler.cs @@ -5,12 +5,14 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using SenseNet.Configuration; using SenseNet.Diagnostics; using SenseNet.Security; using SenseNet.Security.Configuration; using SenseNet.Security.Messaging; +using EventId = SenseNet.Diagnostics.EventId; // ReSharper disable once CheckNamespace namespace SenseNet.ContentRepository.Storage.Security @@ -22,7 +24,14 @@ public enum CopyPermissionMode { NoBreak, BreakWithoutClear, BreakAndClear } /// Contains both instance API (accessible through the Node.Security or Content.Security properties) and static API. /// public sealed class SecurityHandler - { + { + private ILogger _logger; + + public SecurityHandler(ILogger logger) + { + _logger = logger; + } + #region /*========================================================== Evaluation related methods */ /// @@ -1457,11 +1466,16 @@ public void StartSecurity(bool isWebContext, IServiceProvider services) _securitySystem = securitySystem; - SnLog.WriteInformation("Security subsystem started", EventId.RepositoryLifecycle, - properties: new Dictionary { - { "DataProvider", securityDataProvider.GetType().FullName }, - { "MessageProvider", messageProvider.GetType().FullName } - }); +//SnLog.WriteInformation("Security subsystem started", EventId.RepositoryLifecycle, +// properties: new Dictionary { +// { "DataProvider", securityDataProvider.GetType().FullName }, +// { "MessageProvider", messageProvider.GetType().FullName } +// }); + _logger.LogInformation("Security subsystem started. " + + $"DataProvider: {securityDataProvider.GetType().FullName}, " + + $"MessageProvider: {messageProvider.GetType().FullName}"); + + } /// diff --git a/src/Storage/StorageSchema.cs b/src/Storage/StorageSchema.cs index 5605db0ca..5b831533d 100644 --- a/src/Storage/StorageSchema.cs +++ b/src/Storage/StorageSchema.cs @@ -3,10 +3,13 @@ using SenseNet.ContentRepository.Storage.Schema; using System.Threading; using System.Threading.Tasks; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.DependencyInjection; using SenseNet.Configuration; using SenseNet.ContentRepository.Storage.Data; using SenseNet.ContentRepository.Storage.Events; using SenseNet.Diagnostics; +using EventId = SenseNet.Diagnostics.EventId; namespace SenseNet.ContentRepository.Storage { @@ -19,6 +22,7 @@ public sealed class StorageSchema "CreationDate", "CreatedBy", "ModificationDate", "ModifiedBy", "IsSystem", "OwnerId", "SavingState" }); private IDataStore DataStore => Providers.Instance.DataStore; + private ILogger _logger; /// /// Gets the DataProvider dependent earliest DateTime value @@ -169,7 +173,10 @@ private void LoadPrivate() _nodeTypeManager = current; NodeObserver.FireOnStart(); - SnLog.WriteInformation("NodeTypeManager created: " + _nodeTypeManager); + +//SnLog.WriteInformation("NodeTypeManager created: " + _nodeTypeManager); + _logger = Providers.Instance.Services.GetRequiredService>(); + _logger.LogInformation("NodeTypeManager created: " + _nodeTypeManager); } } From 4af033e376a3e6b2ca4fc4b4b396858a45f3b07a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zolt=C3=A1n=20Gyebrovszki?= Date: Wed, 3 Jan 2024 18:20:09 +0100 Subject: [PATCH 2/8] Use ILogger: DistributedIndexingActivityQueue, startup. --- .../DistributedIndexingActivityQueue.cs | 32 +++++++++++++------ .../Search/Indexing/IndexManager.cs | 2 ++ .../ODataOperationMethodTests.cs | 3 +- 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/ContentRepository/Search/Indexing/DistributedIndexingActivityQueue.cs b/src/ContentRepository/Search/Indexing/DistributedIndexingActivityQueue.cs index 5364b6a96..8d8345bf2 100644 --- a/src/ContentRepository/Search/Indexing/DistributedIndexingActivityQueue.cs +++ b/src/ContentRepository/Search/Indexing/DistributedIndexingActivityQueue.cs @@ -3,6 +3,8 @@ using System.Diagnostics; using System.Linq; using System.Threading; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; using Newtonsoft.Json; using SenseNet.Configuration; using SenseNet.ContentRepository.Search.Indexing.Activities; @@ -10,6 +12,7 @@ using SenseNet.ContentRepository.Storage.Data; using SenseNet.Diagnostics; using SenseNet.Search.Indexing; +using EventId = SenseNet.Diagnostics.EventId; namespace SenseNet.ContentRepository.Search.Indexing { @@ -213,6 +216,11 @@ internal Serializer(DistributedIndexingActivityQueue activityQueue, _indexingActivityFactory = indexingActivityFactory; } + // ReSharper disable once InconsistentNaming + private ILogger __logger; + private ILogger Logger => __logger ??= Providers.Instance.Services + .GetRequiredService>(); + internal void Reset(int lastQueued = 0) { lock (ArrivalQueueLock) @@ -236,14 +244,19 @@ internal void Start(int lastDatabaseId, int lastExecutedId, int[] gaps, System.I { consoleOut?.WriteLine("Executing unprocessed activities. {0}-{1} {2}", lastExecutedId, lastDatabaseId, IndexingActivityStatus.GapsToString(gaps, 5, 3)); - SnLog.WriteInformation("Executing unprocessed activities.", - EventId.RepositoryRuntime, - properties: new Dictionary{ - {"LastDatabaseId", lastDatabaseId}, - {"LastExecutedId", lastExecutedId}, - {"CountOfGaps", gaps.Length}, - {"Gaps", IndexingActivityStatus.GapsToString(gaps, 100, 3)} - }); +//SnLog.WriteInformation("Executing unprocessed activities.", +// EventId.RepositoryRuntime, +// properties: new Dictionary{ +// {"LastDatabaseId", lastDatabaseId}, +// {"LastExecutedId", lastExecutedId}, +// {"CountOfGaps", gaps.Length}, +// {"Gaps", IndexingActivityStatus.GapsToString(gaps, 100, 3)} +// }); + this.Logger.LogInformation("Executing unprocessed activities. " + + $"LastDatabaseId: {lastDatabaseId}, " + + $"LastExecutedId: {lastExecutedId}, " + + $"CountOfGaps {gaps.Length}, " + + $"Gaps {IndexingActivityStatus.GapsToString(gaps, 100, 3)}"); IndexingActivityBase.NotIndexableContentCollection.Clear(); _dependencyManager.Start(); @@ -327,7 +340,8 @@ internal void Start(int lastDatabaseId, int lastExecutedId, int[] gaps, System.I _indexManager.CommitAsync(CancellationToken.None).GetAwaiter().GetResult(); // explicit commit } - SnLog.WriteInformation($"Executing unprocessed activities ({count}) finished.", EventId.RepositoryLifecycle); + //SnLog.WriteInformation($"Executing unprocessed activities ({count}) finished.", EventId.RepositoryLifecycle); + this.Logger.LogInformation($"Executing unprocessed activities finished. Count: {count}."); } // ReSharper disable once MemberHidesStaticFromOuterClass diff --git a/src/ContentRepository/Search/Indexing/IndexManager.cs b/src/ContentRepository/Search/Indexing/IndexManager.cs index 08d84242f..287d16965 100644 --- a/src/ContentRepository/Search/Indexing/IndexManager.cs +++ b/src/ContentRepository/Search/Indexing/IndexManager.cs @@ -3,6 +3,8 @@ using System.IO; using System.Linq; using System.Threading; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; using SenseNet.Configuration; using SenseNet.ContentRepository.Schema; using SenseNet.ContentRepository.Search.Indexing.Activities; diff --git a/src/Tests/SenseNet.ODataTests/ODataOperationMethodTests.cs b/src/Tests/SenseNet.ODataTests/ODataOperationMethodTests.cs index 298bdd009..1893c71ca 100644 --- a/src/Tests/SenseNet.ODataTests/ODataOperationMethodTests.cs +++ b/src/Tests/SenseNet.ODataTests/ODataOperationMethodTests.cs @@ -9,6 +9,7 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Primitives; using Microsoft.VisualStudio.TestTools.UnitTesting; using Newtonsoft.Json; @@ -2679,7 +2680,7 @@ public void OD_MBO_Actions_Authorization_Membership_Admin() user1.SaveAsync(CancellationToken.None).GetAwaiter().GetResult(); var publicAdmins = Node.Load("/Root/IMS/Public/Administrators"); publicAdmins.AddMember(user1); - new SecurityHandler().CreateAclEditor() + new SecurityHandler(Providers.Instance.Services.GetService>()).CreateAclEditor() .Allow(Repository.ImsFolder.Id, publicAdmins.Id, false, PermissionType.BuiltInPermissionTypes) .ApplyAsync(CancellationToken.None).GetAwaiter().GetResult(); From 2735cc5747fa8e54af158de9d5a2d12e81cc47fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zolt=C3=A1n=20Gyebrovszki?= Date: Thu, 4 Jan 2024 01:43:28 +0100 Subject: [PATCH 3/8] Use ILogger instead of SnLog in startup sequence (part 3). --- src/ContentRepository/LoggingSettings.cs | 33 +++++++++++++++---- .../i18n/SenseNetResourceManager.cs | 13 ++++++-- 2 files changed, 37 insertions(+), 9 deletions(-) diff --git a/src/ContentRepository/LoggingSettings.cs b/src/ContentRepository/LoggingSettings.cs index 8894731c1..c67d6b8ac 100644 --- a/src/ContentRepository/LoggingSettings.cs +++ b/src/ContentRepository/LoggingSettings.cs @@ -2,7 +2,9 @@ using System.Collections.Generic; using System.Linq; using System.Threading; -using STT=System.Threading.Tasks; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.DependencyInjection; +using STT =System.Threading.Tasks; using SenseNet.Communication.Messaging; using SenseNet.Configuration; using SenseNet.ContentRepository.Schema; @@ -91,8 +93,9 @@ public static void UpdateCategoriesBySettings() category.Enabled = value ?? _basicCategories[category.Name]; } - SnLog.WriteInformation("Trace settings were updated (from settings).", EventId.RepositoryRuntime, - properties: SnTrace.Categories.ToDictionary(c => c.Name, c => (object)c.Enabled.ToString())); +//SnLog.WriteInformation("Trace settings were updated (from settings).", EventId.RepositoryRuntime, +// properties: SnTrace.Categories.ToDictionary(c => c.Name, c => (object)c.Enabled.ToString())); + WriteInformation("settings"); } public static void ConfigureCategories() @@ -100,8 +103,9 @@ public static void ConfigureCategories() foreach (var category in SnTrace.Categories) category.Enabled = Tracing.StartupTraceCategories.Contains(category.Name); - SnLog.WriteInformation("Trace settings were updated (from configuration).", EventId.RepositoryRuntime, - properties: SnTrace.Categories.ToDictionary(c => c.Name, c => (object)c.Enabled.ToString())); +//SnLog.WriteInformation("Trace settings were updated (from configuration).", EventId.RepositoryRuntime, +// properties: SnTrace.Categories.ToDictionary(c => c.Name, c => (object)c.Enabled.ToString())); + WriteInformation("configuration"); UpdateBasicCategories(); } @@ -127,14 +131,29 @@ internal static void UpdateCategories(string[] categoryNames) UpdateBasicCategories(); - SnLog.WriteInformation("Trace settings were updated (from assembly).", EventId.RepositoryRuntime, - properties: SnTrace.Categories.ToDictionary(c => c.Name, c => (object)c.Enabled.ToString())); +//SnLog.WriteInformation("Trace settings were updated (from assembly).", EventId.RepositoryRuntime, +// properties: SnTrace.Categories.ToDictionary(c => c.Name, c => (object)c.Enabled.ToString())); + WriteInformation("assembly"); } private static void UpdateBasicCategories() { _basicCategories = SnTrace.Categories.ToDictionary(c => c.Name, c => c.Enabled); } + + private static void WriteInformation(string source) + { + var logger = Providers.Instance?.Services.GetService>(); + logger?.LogInformation($"Trace settings were updated (from {source}). " + + $"Enabled: {CategoriesToString(true)}, " + + $"disabled: {CategoriesToString(false)}"); + } + private static string CategoriesToString(bool isEnabled) + { + return string.Join(", ", SnTrace.Categories + .Where(x => x.Enabled == isEnabled) + .Select(x => x.ToString())); + } } } } diff --git a/src/ContentRepository/i18n/SenseNetResourceManager.cs b/src/ContentRepository/i18n/SenseNetResourceManager.cs index cdbd4539f..6e2e30824 100644 --- a/src/ContentRepository/i18n/SenseNetResourceManager.cs +++ b/src/ContentRepository/i18n/SenseNetResourceManager.cs @@ -13,6 +13,10 @@ using System.Xml; using SenseNet.Communication.Messaging; using SenseNet.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using SenseNet.ContentRepository.Search.Indexing; +using EventId = SenseNet.Diagnostics.EventId; namespace SenseNet.ContentRepository.i18n { @@ -107,7 +111,8 @@ public static SenseNetResourceManager Current var current = new SenseNetResourceManager(); current.Load(); _current = current; - SnLog.WriteInformation("ResourceManager created: " + _current.GetType().FullName); +//SnLog.WriteInformation("ResourceManager created: " + _current.GetType().FullName); + _current._logger.LogInformation("ResourceManager created: " + _current.GetType().FullName); } } } @@ -129,7 +134,11 @@ public static bool Running get { return _current != null; } } - private SenseNetResourceManager() { } + private ILogger _logger; + private SenseNetResourceManager() + { + _logger = Providers.Instance.Services.GetService>(); + } // ================================================================ Instance part From 65e885fb21332b310fcb9ad99ee5e6979337e7c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zolt=C3=A1n=20Gyebrovszki?= Date: Thu, 4 Jan 2024 02:39:15 +0100 Subject: [PATCH 4/8] Use ILogger instead of SnLog in startup sequence (part 4). --- src/ContentRepository/LoggingSettings.cs | 6 +++--- src/ContentRepository/RepositoryInstance.cs | 13 ++++++++----- .../Indexing/DistributedIndexingActivityQueue.cs | 8 ++++---- src/ContentRepository/TemplateManager.cs | 10 ++++++++-- .../StartActiveDirectorySynchronizationTask.cs | 10 ++++++++-- 5 files changed, 31 insertions(+), 16 deletions(-) diff --git a/src/ContentRepository/LoggingSettings.cs b/src/ContentRepository/LoggingSettings.cs index c67d6b8ac..70000a2c7 100644 --- a/src/ContentRepository/LoggingSettings.cs +++ b/src/ContentRepository/LoggingSettings.cs @@ -145,14 +145,14 @@ private static void WriteInformation(string source) { var logger = Providers.Instance?.Services.GetService>(); logger?.LogInformation($"Trace settings were updated (from {source}). " + - $"Enabled: {CategoriesToString(true)}, " + - $"disabled: {CategoriesToString(false)}"); + $"Enabled: {CategoriesToString(true)}. " + + $"Disabled: {CategoriesToString(false)}"); } private static string CategoriesToString(bool isEnabled) { return string.Join(", ", SnTrace.Categories .Where(x => x.Enabled == isEnabled) - .Select(x => x.ToString())); + .Select(x => x.Name)); } } } diff --git a/src/ContentRepository/RepositoryInstance.cs b/src/ContentRepository/RepositoryInstance.cs index acbc828d7..683036d2e 100644 --- a/src/ContentRepository/RepositoryInstance.cs +++ b/src/ContentRepository/RepositoryInstance.cs @@ -329,11 +329,14 @@ private static void InitializeLogger() SnTrace.SnTracers.AddRange(tracers); } - SnLog.WriteInformation("Loggers and tracers initialized.", properties: new Dictionary - { - { "Loggers", SnLog.Instance?.GetType().Name }, - { "Tracers", string.Join(", ", SnTrace.SnTracers.Select(snt => snt?.GetType().Name)) } - }); +//SnLog.WriteInformation("Loggers and tracers initialized.", properties: new Dictionary +//{ +// { "Loggers", SnLog.Instance?.GetType().Name }, +// { "Tracers", string.Join(", ", SnTrace.SnTracers.Select(snt => snt?.GetType().Name)) } +//}); + SnTrace.System.Write("Loggers and tracers initialized. " + + $"Loggers: {SnLog.Instance?.GetType().Name}. " + + $"Tracers: {string.Join(", ", SnTrace.SnTracers.Select(snt => snt?.GetType().Name))}"); } private void RegisterAppdomainEventHandlers() diff --git a/src/ContentRepository/Search/Indexing/DistributedIndexingActivityQueue.cs b/src/ContentRepository/Search/Indexing/DistributedIndexingActivityQueue.cs index 8d8345bf2..c3230441f 100644 --- a/src/ContentRepository/Search/Indexing/DistributedIndexingActivityQueue.cs +++ b/src/ContentRepository/Search/Indexing/DistributedIndexingActivityQueue.cs @@ -242,7 +242,7 @@ internal void Reset(int lastQueued = 0) /// internal void Start(int lastDatabaseId, int lastExecutedId, int[] gaps, System.IO.TextWriter consoleOut) { - consoleOut?.WriteLine("Executing unprocessed activities. {0}-{1} {2}", lastExecutedId, lastDatabaseId, IndexingActivityStatus.GapsToString(gaps, 5, 3)); + consoleOut?.WriteLine("Executing unprocessed indexing activities. {0}-{1} {2}", lastExecutedId, lastDatabaseId, IndexingActivityStatus.GapsToString(gaps, 5, 3)); //SnLog.WriteInformation("Executing unprocessed activities.", // EventId.RepositoryRuntime, @@ -252,7 +252,7 @@ internal void Start(int lastDatabaseId, int lastExecutedId, int[] gaps, System.I // {"CountOfGaps", gaps.Length}, // {"Gaps", IndexingActivityStatus.GapsToString(gaps, 100, 3)} // }); - this.Logger.LogInformation("Executing unprocessed activities. " + + this.Logger.LogInformation("Executing unprocessed indexing activities. " + $"LastDatabaseId: {lastDatabaseId}, " + $"LastExecutedId: {lastExecutedId}, " + $"CountOfGaps {gaps.Length}, " + @@ -340,8 +340,8 @@ internal void Start(int lastDatabaseId, int lastExecutedId, int[] gaps, System.I _indexManager.CommitAsync(CancellationToken.None).GetAwaiter().GetResult(); // explicit commit } - //SnLog.WriteInformation($"Executing unprocessed activities ({count}) finished.", EventId.RepositoryLifecycle); - this.Logger.LogInformation($"Executing unprocessed activities finished. Count: {count}."); +//SnLog.WriteInformation($"Executing unprocessed activities ({count}) finished.", EventId.RepositoryLifecycle); + this.Logger.LogInformation($"Executing unprocessed indexing activities finished. Count: {count}."); } // ReSharper disable once MemberHidesStaticFromOuterClass diff --git a/src/ContentRepository/TemplateManager.cs b/src/ContentRepository/TemplateManager.cs index 4f07536db..9b9686bef 100644 --- a/src/ContentRepository/TemplateManager.cs +++ b/src/ContentRepository/TemplateManager.cs @@ -2,6 +2,9 @@ using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.DependencyInjection; +using SenseNet.Configuration; using SenseNet.ContentRepository.Storage; using SenseNet.Diagnostics; using SenseNet.Tools; @@ -41,8 +44,11 @@ private static Dictionary> Temp _templateReplacers = DiscoverTemplateReplacers(); } - SnLog.WriteInformation("TemplateReplacers created, see supported templates below.", - properties: _templateReplacers.Keys.ToDictionary(name => name, name => (object)string.Join(", ", _templateReplacers[name].Keys))); +//SnLog.WriteInformation("TemplateReplacers created, see supported templates below.", +// properties: _templateReplacers.Keys.ToDictionary(name => name, name => (object)string.Join(", ", _templateReplacers[name].Keys))); + var logger = Providers.Instance.Services.GetService>(); + logger?.LogInformation($"TemplateReplacers created. " + + $"{string.Join(". ", _templateReplacers.Keys.Select(name => name + ":" + string.Join(", ", _templateReplacers[name].Keys)))}"); } return _templateReplacers; diff --git a/src/Storage/BackgroundOperations/StartActiveDirectorySynchronizationTask.cs b/src/Storage/BackgroundOperations/StartActiveDirectorySynchronizationTask.cs index 5f6b11074..12dd8a7e0 100644 --- a/src/Storage/BackgroundOperations/StartActiveDirectorySynchronizationTask.cs +++ b/src/Storage/BackgroundOperations/StartActiveDirectorySynchronizationTask.cs @@ -1,6 +1,7 @@ using System; using System.Threading; using System.Threading.Tasks; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Newtonsoft.Json; using SenseNet.ContentRepository.Storage; @@ -23,11 +24,14 @@ public class StartActiveDirectorySynchronizationTask : IMaintenanceTask private bool? _ADSynchIsAvailable; private readonly TaskManagementOptions _taskManagementOptions; private readonly ITaskManager _taskManager; + private readonly ILogger _logger; - public StartActiveDirectorySynchronizationTask(IOptions taskManagementOptions, ITaskManager taskManager) + public StartActiveDirectorySynchronizationTask(IOptions taskManagementOptions, ITaskManager taskManager, + ILogger logger) { _taskManagementOptions = taskManagementOptions?.Value ?? new TaskManagementOptions(); _taskManager = taskManager; + _logger = logger; } public Task ExecuteAsync(CancellationToken cancellationToken) @@ -35,7 +39,9 @@ public Task ExecuteAsync(CancellationToken cancellationToken) if (!_ADSynchIsAvailable.HasValue) { _ADSynchIsAvailable = Settings.IsSettingsAvailable(ADSyncSettingsName); - SnLog.WriteInformation("Active Directory synch feature is " + (_ADSynchIsAvailable.Value ? string.Empty : "not ") + "available."); +//SnLog.WriteInformation("Active Directory synch feature is " + (_ADSynchIsAvailable.Value ? string.Empty : "not ") + "available."); + _logger.LogInformation("Active Directory synch feature is " + + $"{(_ADSynchIsAvailable.Value ? string.Empty : "not ")}available."); } if (!_ADSynchIsAvailable.Value) return Task.CompletedTask; From 6eb2a7474d4824bb98b683671f1fa49e54bb718e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zolt=C3=A1n=20Gyebrovszki?= Date: Thu, 4 Jan 2024 02:43:29 +0100 Subject: [PATCH 5/8] Refactor: comments removed. --- src/ContentRepository/LoggingSettings.cs | 6 ------ src/ContentRepository/RepositoryInstance.cs | 9 --------- src/ContentRepository/Schema/ContentTypeManager.cs | 1 - .../Search/Indexing/DistributedIndexingActivityQueue.cs | 9 --------- src/ContentRepository/TemplateManager.cs | 2 -- src/ContentRepository/i18n/SenseNetResourceManager.cs | 1 - .../StartActiveDirectorySynchronizationTask.cs | 1 - src/Storage/Configuration/Providers.cs | 2 -- src/Storage/Security/SecurityHandler.cs | 5 ----- src/Storage/StorageSchema.cs | 1 - 10 files changed, 37 deletions(-) diff --git a/src/ContentRepository/LoggingSettings.cs b/src/ContentRepository/LoggingSettings.cs index 70000a2c7..036b3da0b 100644 --- a/src/ContentRepository/LoggingSettings.cs +++ b/src/ContentRepository/LoggingSettings.cs @@ -93,8 +93,6 @@ public static void UpdateCategoriesBySettings() category.Enabled = value ?? _basicCategories[category.Name]; } -//SnLog.WriteInformation("Trace settings were updated (from settings).", EventId.RepositoryRuntime, -// properties: SnTrace.Categories.ToDictionary(c => c.Name, c => (object)c.Enabled.ToString())); WriteInformation("settings"); } @@ -103,8 +101,6 @@ public static void ConfigureCategories() foreach (var category in SnTrace.Categories) category.Enabled = Tracing.StartupTraceCategories.Contains(category.Name); -//SnLog.WriteInformation("Trace settings were updated (from configuration).", EventId.RepositoryRuntime, -// properties: SnTrace.Categories.ToDictionary(c => c.Name, c => (object)c.Enabled.ToString())); WriteInformation("configuration"); UpdateBasicCategories(); @@ -131,8 +127,6 @@ internal static void UpdateCategories(string[] categoryNames) UpdateBasicCategories(); -//SnLog.WriteInformation("Trace settings were updated (from assembly).", EventId.RepositoryRuntime, -// properties: SnTrace.Categories.ToDictionary(c => c.Name, c => (object)c.Enabled.ToString())); WriteInformation("assembly"); } diff --git a/src/ContentRepository/RepositoryInstance.cs b/src/ContentRepository/RepositoryInstance.cs index 683036d2e..8d8bb62de 100644 --- a/src/ContentRepository/RepositoryInstance.cs +++ b/src/ContentRepository/RepositoryInstance.cs @@ -142,7 +142,6 @@ internal void DoStart() // We have to log the access provider here because it cannot be logged // during creation as it would lead to a circular reference. -//SnLog.WriteInformation($"AccessProvider created: {AccessProvider.Current?.GetType().FullName}"); _logger.LogInformation($"AccessProvider created: {AccessProvider.Current?.GetType().FullName}"); using (new SystemAccount()) StartManagers(); @@ -243,7 +242,6 @@ private void StartManagers() // Log this, because logging is switched off when creating the cache provider // to avoid circular reference. -//SnLog.WriteInformation($"CacheProvider created: {Cache.Instance?.GetType().FullName}"); _logger.LogInformation($"CacheProvider created: {Cache.Instance?.GetType().FullName}"); ConsoleWriteLine("ok."); @@ -252,8 +250,6 @@ private void StartManagers() channel.StartAsync(CancellationToken.None).GetAwaiter().GetResult(); ConsoleWriteLine("ok."); -//SnLog.WriteInformation($"Message channel {channel.GetType().FullName} started." + -// $"Instance id: {channel.ClusterMemberInfo.InstanceID}"); _logger.LogInformation($"Message channel started: {channel.GetType().FullName}. " + $"Instance id: {channel.ClusterMemberInfo.InstanceID}"); @@ -329,11 +325,6 @@ private static void InitializeLogger() SnTrace.SnTracers.AddRange(tracers); } -//SnLog.WriteInformation("Loggers and tracers initialized.", properties: new Dictionary -//{ -// { "Loggers", SnLog.Instance?.GetType().Name }, -// { "Tracers", string.Join(", ", SnTrace.SnTracers.Select(snt => snt?.GetType().Name)) } -//}); SnTrace.System.Write("Loggers and tracers initialized. " + $"Loggers: {SnLog.Instance?.GetType().Name}. " + $"Tracers: {string.Join(", ", SnTrace.SnTracers.Select(snt => snt?.GetType().Name))}"); diff --git a/src/ContentRepository/Schema/ContentTypeManager.cs b/src/ContentRepository/Schema/ContentTypeManager.cs index 580ac5970..be7cf7193 100644 --- a/src/ContentRepository/Schema/ContentTypeManager.cs +++ b/src/ContentRepository/Schema/ContentTypeManager.cs @@ -75,7 +75,6 @@ public static ContentTypeManager Instance contentTypeManager = ctm; _initializing = false; Providers.Instance.SetProvider(ContentTypeManagerProviderKey, ctm); -//SnLog.WriteInformation("ContentTypeManager created. Content types: " + ctm._contentTypes.Count); Instance._logger.LogInformation("ContentTypeManager created. Content types: " + ctm._contentTypes.Count); } } diff --git a/src/ContentRepository/Search/Indexing/DistributedIndexingActivityQueue.cs b/src/ContentRepository/Search/Indexing/DistributedIndexingActivityQueue.cs index c3230441f..6004277fc 100644 --- a/src/ContentRepository/Search/Indexing/DistributedIndexingActivityQueue.cs +++ b/src/ContentRepository/Search/Indexing/DistributedIndexingActivityQueue.cs @@ -244,14 +244,6 @@ internal void Start(int lastDatabaseId, int lastExecutedId, int[] gaps, System.I { consoleOut?.WriteLine("Executing unprocessed indexing activities. {0}-{1} {2}", lastExecutedId, lastDatabaseId, IndexingActivityStatus.GapsToString(gaps, 5, 3)); -//SnLog.WriteInformation("Executing unprocessed activities.", -// EventId.RepositoryRuntime, -// properties: new Dictionary{ -// {"LastDatabaseId", lastDatabaseId}, -// {"LastExecutedId", lastExecutedId}, -// {"CountOfGaps", gaps.Length}, -// {"Gaps", IndexingActivityStatus.GapsToString(gaps, 100, 3)} -// }); this.Logger.LogInformation("Executing unprocessed indexing activities. " + $"LastDatabaseId: {lastDatabaseId}, " + $"LastExecutedId: {lastExecutedId}, " + @@ -340,7 +332,6 @@ internal void Start(int lastDatabaseId, int lastExecutedId, int[] gaps, System.I _indexManager.CommitAsync(CancellationToken.None).GetAwaiter().GetResult(); // explicit commit } -//SnLog.WriteInformation($"Executing unprocessed activities ({count}) finished.", EventId.RepositoryLifecycle); this.Logger.LogInformation($"Executing unprocessed indexing activities finished. Count: {count}."); } diff --git a/src/ContentRepository/TemplateManager.cs b/src/ContentRepository/TemplateManager.cs index 9b9686bef..7bd036cdd 100644 --- a/src/ContentRepository/TemplateManager.cs +++ b/src/ContentRepository/TemplateManager.cs @@ -44,8 +44,6 @@ private static Dictionary> Temp _templateReplacers = DiscoverTemplateReplacers(); } -//SnLog.WriteInformation("TemplateReplacers created, see supported templates below.", -// properties: _templateReplacers.Keys.ToDictionary(name => name, name => (object)string.Join(", ", _templateReplacers[name].Keys))); var logger = Providers.Instance.Services.GetService>(); logger?.LogInformation($"TemplateReplacers created. " + $"{string.Join(". ", _templateReplacers.Keys.Select(name => name + ":" + string.Join(", ", _templateReplacers[name].Keys)))}"); diff --git a/src/ContentRepository/i18n/SenseNetResourceManager.cs b/src/ContentRepository/i18n/SenseNetResourceManager.cs index 6e2e30824..ac6071333 100644 --- a/src/ContentRepository/i18n/SenseNetResourceManager.cs +++ b/src/ContentRepository/i18n/SenseNetResourceManager.cs @@ -111,7 +111,6 @@ public static SenseNetResourceManager Current var current = new SenseNetResourceManager(); current.Load(); _current = current; -//SnLog.WriteInformation("ResourceManager created: " + _current.GetType().FullName); _current._logger.LogInformation("ResourceManager created: " + _current.GetType().FullName); } } diff --git a/src/Storage/BackgroundOperations/StartActiveDirectorySynchronizationTask.cs b/src/Storage/BackgroundOperations/StartActiveDirectorySynchronizationTask.cs index 12dd8a7e0..d24f90df7 100644 --- a/src/Storage/BackgroundOperations/StartActiveDirectorySynchronizationTask.cs +++ b/src/Storage/BackgroundOperations/StartActiveDirectorySynchronizationTask.cs @@ -39,7 +39,6 @@ public Task ExecuteAsync(CancellationToken cancellationToken) if (!_ADSynchIsAvailable.HasValue) { _ADSynchIsAvailable = Settings.IsSettingsAvailable(ADSyncSettingsName); -//SnLog.WriteInformation("Active Directory synch feature is " + (_ADSynchIsAvailable.Value ? string.Empty : "not ") + "available."); _logger.LogInformation("Active Directory synch feature is " + $"{(_ADSynchIsAvailable.Value ? string.Empty : "not ")}available."); } diff --git a/src/Storage/Configuration/Providers.cs b/src/Storage/Configuration/Providers.cs index 704fb98d5..d1b562f1d 100644 --- a/src/Storage/Configuration/Providers.cs +++ b/src/Storage/Configuration/Providers.cs @@ -262,8 +262,6 @@ public virtual MembershipExtenderBase MembershipExtender } var activeObserverNames = activeObservers.Select(x => x.GetType().FullName).ToArray(); -//SnLog.WriteInformation("NodeObservers are instantiated. ", EventId.RepositoryLifecycle, -// properties: new Dictionary { { "Types", string.Join(", ", activeObserverNames) } }); Instance?._logger.LogInformation($"NodeObservers are instantiated. Types: {string.Join(", ", activeObserverNames)}"); return activeObservers; diff --git a/src/Storage/Security/SecurityHandler.cs b/src/Storage/Security/SecurityHandler.cs index b2b51216d..e37e8a569 100644 --- a/src/Storage/Security/SecurityHandler.cs +++ b/src/Storage/Security/SecurityHandler.cs @@ -1466,11 +1466,6 @@ public void StartSecurity(bool isWebContext, IServiceProvider services) _securitySystem = securitySystem; -//SnLog.WriteInformation("Security subsystem started", EventId.RepositoryLifecycle, -// properties: new Dictionary { -// { "DataProvider", securityDataProvider.GetType().FullName }, -// { "MessageProvider", messageProvider.GetType().FullName } -// }); _logger.LogInformation("Security subsystem started. " + $"DataProvider: {securityDataProvider.GetType().FullName}, " + $"MessageProvider: {messageProvider.GetType().FullName}"); diff --git a/src/Storage/StorageSchema.cs b/src/Storage/StorageSchema.cs index 5b831533d..893a3e4ee 100644 --- a/src/Storage/StorageSchema.cs +++ b/src/Storage/StorageSchema.cs @@ -174,7 +174,6 @@ private void LoadPrivate() NodeObserver.FireOnStart(); -//SnLog.WriteInformation("NodeTypeManager created: " + _nodeTypeManager); _logger = Providers.Instance.Services.GetRequiredService>(); _logger.LogInformation("NodeTypeManager created: " + _nodeTypeManager); } From 6d9f65ec6132a298a057aa1fa153c5715444f6db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zolt=C3=A1n=20Gyebrovszki?= Date: Thu, 4 Jan 2024 03:34:21 +0100 Subject: [PATCH 6/8] Do not echo console message to sntrace unconditionally. --- src/ContentRepository/RepositoryInstance.cs | 98 +++++++++++---------- 1 file changed, 53 insertions(+), 45 deletions(-) diff --git a/src/ContentRepository/RepositoryInstance.cs b/src/ContentRepository/RepositoryInstance.cs index 8d8bb62de..682106eaa 100644 --- a/src/ContentRepository/RepositoryInstance.cs +++ b/src/ContentRepository/RepositoryInstance.cs @@ -111,9 +111,9 @@ internal static RepositoryInstance Start(RepositoryStartSettings settings) } internal void DoStart() { - ConsoleWriteLine(); - ConsoleWriteLine("Starting Repository..."); - ConsoleWriteLine(); + ConsoleWriteLine(false); + ConsoleWriteLine(true, "Starting Repository."); + ConsoleWriteLine(false); LoggingSettings.SnTraceConfigurator.ConfigureCategories(); if (_settings.TraceCategories != null) @@ -148,9 +148,9 @@ internal void DoStart() LoggingSettings.SnTraceConfigurator.UpdateCategoriesBySettings(); - ConsoleWriteLine(); - ConsoleWriteLine("Repository has started."); - ConsoleWriteLine(); + ConsoleWriteLine(false); + ConsoleWriteLine(true, "Repository has started."); + ConsoleWriteLine(false); _startupInfo.Started = DateTime.UtcNow; } @@ -162,13 +162,13 @@ public void StartIndexingEngine() { if (IndexingEngineIsRunning) { - ConsoleWrite("IndexingEngine has already started."); + ConsoleWrite(true, "IndexingEngine has already started."); return; } - ConsoleWriteLine("Starting IndexingEngine:"); + ConsoleWriteLine(true, "Starting IndexingEngine."); Providers.Instance.IndexManager.StartAsync(_settings.Console, CancellationToken.None).GetAwaiter().GetResult(); Providers.Instance.SearchManager.SearchEngine.SetIndexingInfo(ContentTypeManager.Instance.IndexingInfo); - ConsoleWriteLine("IndexingEngine has started."); + ConsoleWriteLine(true, "IndexingEngine has started."); } private bool _workflowEngineIsRunning; @@ -179,21 +179,23 @@ public void StartWorkflowEngine() { if (_workflowEngineIsRunning) { - ConsoleWrite("Workflow engine has already started."); + ConsoleWrite(true, "Workflow engine has already started."); return; } - ConsoleWrite("Starting Workflow subsystem ... "); + ConsoleWrite(false, "Starting Workflow subsystem ... "); var t = TypeResolver.GetType("SenseNet.Workflow.InstanceManager", false); if (t != null) { var m = t.GetMethod("StartWorkflowSystem", BindingFlags.Static | BindingFlags.Public); m.Invoke(null, new object[0]); _workflowEngineIsRunning = true; - ConsoleWriteLine("ok."); + ConsoleWriteLine(false, "ok."); + SnTrace.System.Write("Workflow subsystem started."); } else { - ConsoleWriteLine("NOT STARTED"); + ConsoleWriteLine(false, "NOT STARTED"); + SnTrace.System.Write("Workflow subsystem NOT STARTED."); } } @@ -206,15 +208,15 @@ private void LoadAssemblies(bool isWebContext) if (!isWebContext) { - ConsoleWriteLine("Loading Assemblies from ", localBin, ":"); + ConsoleWriteLine(false, "Loading Assemblies from ", localBin, ":"); asmNames = TypeResolver.LoadAssembliesFrom(localBin); foreach (string name in asmNames) - ConsoleWriteLine(" ", name); + ConsoleWriteLine(false, " ", name); } _startupInfo.ReferencedAssemblies = GetLoadedAsmNames().Except(_startupInfo.AssembliesBeforeStart).ToArray(); - ConsoleWriteLine("Loading Assemblies from ", pluginsPath, ":"); + ConsoleWriteLine(false, "Loading Assemblies from ", pluginsPath, ":"); asmNames = TypeResolver.LoadAssembliesFrom(pluginsPath); _startupInfo.Plugins = GetLoadedAsmNames().Except(_startupInfo.AssembliesBeforeStart).Except(_startupInfo.ReferencedAssemblies).ToArray(); @@ -222,9 +224,9 @@ private void LoadAssemblies(bool isWebContext) return; foreach (string name in asmNames) - ConsoleWriteLine(" ", name); - ConsoleWriteLine("Ok."); - ConsoleWriteLine(); + ConsoleWriteLine(false, " ", name); + ConsoleWriteLine(false, "Ok."); + ConsoleWriteLine(false); } private IEnumerable GetLoadedAsmNames() { @@ -237,44 +239,48 @@ private void StartManagers() try { - ConsoleWrite("Initializing cache ... "); + ConsoleWrite(false, "Initializing cache ... "); dummy = Cache.Count; // Log this, because logging is switched off when creating the cache provider // to avoid circular reference. _logger.LogInformation($"CacheProvider created: {Cache.Instance?.GetType().FullName}"); - ConsoleWriteLine("ok."); + ConsoleWriteLine(false, "ok."); + SnTrace.System.Write("Cache initialized."); - ConsoleWrite("Starting message channel ... "); + ConsoleWrite(false, "Starting message channel ... "); channel = Providers.Instance.ClusterChannelProvider; channel.StartAsync(CancellationToken.None).GetAwaiter().GetResult(); - - ConsoleWriteLine("ok."); + ConsoleWriteLine(false, "ok."); _logger.LogInformation($"Message channel started: {channel.GetType().FullName}. " + $"Instance id: {channel.ClusterMemberInfo.InstanceID}"); - ConsoleWrite("Sending greeting message ... "); + ConsoleWrite(false, "Sending greeting message ... "); new PingMessage(new string[0]).SendAsync(CancellationToken.None).GetAwaiter().GetResult(); - ConsoleWriteLine("ok."); + ConsoleWriteLine(false, "ok."); + SnTrace.System.Write("Greeting message sent (PingMessage)."); - ConsoleWrite("Starting NodeType system ... "); + ConsoleWrite(false, "Starting NodeType system ... "); dummy = Providers.Instance.StorageSchema.NodeTypes[0]; - ConsoleWriteLine("ok."); + ConsoleWriteLine(false, "ok."); + SnTrace.System.Write("NodeType system started."); - ConsoleWrite("Starting ContentType system ... "); + ConsoleWrite(false, "Starting ContentType system ... "); dummy = ContentType.GetByName("GenericContent"); - ConsoleWriteLine("ok."); + ConsoleWriteLine(false, "ok."); + SnTrace.System.Write("ContentType system started."); - ConsoleWrite("Starting AccessProvider ... "); + ConsoleWrite(false, "Starting AccessProvider ... "); dummy = User.Current; - ConsoleWriteLine("ok."); + ConsoleWriteLine(false, "ok."); + SnTrace.System.Write("AccessProvider started."); SnQuery.SetPermissionFilterFactory(Providers.Instance.PermissionFilterFactory); if (_settings.StartIndexingEngine) StartIndexingEngine(); else - ConsoleWriteLine("IndexingEngine is not started."); + ConsoleWriteLine(true, "IndexingEngine is not started."); // switch on message processing after IndexingEngine was started. channel.AllowMessageProcessing = true; @@ -282,18 +288,19 @@ private void StartManagers() if (_settings.StartWorkflowEngine) StartWorkflowEngine(); else - ConsoleWriteLine("Workflow subsystem is not started."); + ConsoleWriteLine(true, "Workflow subsystem is not started."); - ConsoleWrite("Loading string resources ... "); + ConsoleWrite(false, "Loading string resources ... "); dummy = SenseNetResourceManager.Current; - ConsoleWriteLine("ok."); + ConsoleWriteLine(false, "ok."); + SnTrace.System.Write("String resources loaded."); _serviceInstances = _settings.Services.GetServices().ToList(); foreach (var service in _serviceInstances) { service.Start(); - ConsoleWriteLine("Service started: ", service.GetType().Name); + ConsoleWriteLine(true, "Service started: " + service.GetType().Name); } // register this application in the task management component @@ -391,9 +398,9 @@ internal static void Shutdown() SnTrace.Repository.Write("Sending a goodbye message."); - _instance.ConsoleWriteLine(); + _instance.ConsoleWriteLine(false); - _instance.ConsoleWriteLine("Sending a goodbye message..."); + _instance.ConsoleWriteLine(true, "Sending a goodbye message."); var channel = Providers.Instance.ClusterChannelProvider; channel.ClusterMemberInfo.NeedToRecover = false; var pingMessage = new PingMessage(); @@ -422,8 +429,8 @@ internal static void Shutdown() SnTrace.Repository.Write(msg); SnTrace.Flush(); - _instance.ConsoleWriteLine(msg); - _instance.ConsoleWriteLine(); + _instance.ConsoleWriteLine(false, msg); + _instance.ConsoleWriteLine(false); SnLog.WriteInformation(msg); _instance = null; @@ -431,17 +438,18 @@ internal static void Shutdown() } } - public void ConsoleWrite(params string[] text) + public void ConsoleWrite(bool trace, params string[] text) { foreach (var s in text) { - SnTrace.System.Write(s); + if(trace) + SnTrace.System.Write(s); _settings.Console?.Write(s); } } - public void ConsoleWriteLine(params string[] text) + public void ConsoleWriteLine(bool trace, params string[] text) { - ConsoleWrite(text); + ConsoleWrite(trace, text); _settings.Console?.WriteLine(); } From be4e383ca8fcb070b83d24f60102e58d44c2d821 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zolt=C3=A1n=20Gyebrovszki?= Date: Thu, 4 Jan 2024 04:07:45 +0100 Subject: [PATCH 7/8] Use ILogger instead of SnLog in startup sequence (part 5). --- src/ContentRepository/Search/IndexingSettings.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/ContentRepository/Search/IndexingSettings.cs b/src/ContentRepository/Search/IndexingSettings.cs index fcf76edd6..26493ab66 100644 --- a/src/ContentRepository/Search/IndexingSettings.cs +++ b/src/ContentRepository/Search/IndexingSettings.cs @@ -3,6 +3,7 @@ using System.Collections.ObjectModel; using System.Linq; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; using SenseNet.Configuration; using SenseNet.ContentRepository; using SenseNet.ContentRepository.Schema; @@ -11,6 +12,7 @@ using SenseNet.ContentRepository.Storage.Events; using SenseNet.Diagnostics; using SenseNet.Tools; +using EventId = SenseNet.Diagnostics.EventId; // ReSharper disable once CheckNamespace namespace SenseNet.Search @@ -65,7 +67,9 @@ public ReadOnlyDictionary TextExtractorInstances SetCachedData(TextExtractorsCacheKey, _textExtractors); - SnLog.WriteInformation("Text extractors were created.", properties: _textExtractors.ToDictionary(t => t.Key, t => (object)t.Value.GetType().FullName)); + var logger = Providers.Instance.Services.GetRequiredService>(); + logger.LogInformation($"Text extractors were created. File extensions and types: " + + $"{string.Join(", ", _textExtractors.Select(t => $"'.{t.Key}': {t.Value.GetType().FullName}"))}"); } } } From c7151363c2859553f844395cca9403136e2bda21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zolt=C3=A1n=20Gyebrovszki?= Date: Thu, 4 Jan 2024 12:25:38 +0100 Subject: [PATCH 8/8] refactor --- src/ContentRepository/Schema/ContentTypeManager.cs | 2 +- src/ContentRepository/Search/Indexing/IndexManager.cs | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/ContentRepository/Schema/ContentTypeManager.cs b/src/ContentRepository/Schema/ContentTypeManager.cs index be7cf7193..dd37e53e2 100644 --- a/src/ContentRepository/Schema/ContentTypeManager.cs +++ b/src/ContentRepository/Schema/ContentTypeManager.cs @@ -75,7 +75,7 @@ public static ContentTypeManager Instance contentTypeManager = ctm; _initializing = false; Providers.Instance.SetProvider(ContentTypeManagerProviderKey, ctm); - Instance._logger.LogInformation("ContentTypeManager created. Content types: " + ctm._contentTypes.Count); + contentTypeManager._logger.LogInformation("ContentTypeManager created. Content types: " + ctm._contentTypes.Count); } } } diff --git a/src/ContentRepository/Search/Indexing/IndexManager.cs b/src/ContentRepository/Search/Indexing/IndexManager.cs index 287d16965..edad9fd71 100644 --- a/src/ContentRepository/Search/Indexing/IndexManager.cs +++ b/src/ContentRepository/Search/Indexing/IndexManager.cs @@ -3,9 +3,6 @@ using System.IO; using System.Linq; using System.Threading; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Logging; -using SenseNet.Configuration; using SenseNet.ContentRepository.Schema; using SenseNet.ContentRepository.Search.Indexing.Activities; using SenseNet.ContentRepository.Storage;