diff --git a/src/Umbraco.Core/Composing/Composers.cs b/src/Umbraco.Core/Composing/Composers.cs index 93f6def891..eec355e9e7 100644 --- a/src/Umbraco.Core/Composing/Composers.cs +++ b/src/Umbraco.Core/Composing/Composers.cs @@ -5,6 +5,8 @@ using System.Reflection; using System.Text; using Umbraco.Core.Collections; using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; +using ILogger = Microsoft.Extensions.Logging.ILogger; namespace Umbraco.Core.Composing { @@ -16,7 +18,7 @@ namespace Umbraco.Core.Composing public class Composers { private readonly Composition _composition; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IProfilingLogger _profileLogger; private readonly IEnumerable _composerTypes; private readonly IEnumerable _enableDisableAttributes; @@ -38,7 +40,7 @@ namespace Umbraco.Core.Composing /// enableDisableAttributes /// or /// logger - public Composers(Composition composition, IEnumerable composerTypes, IEnumerable enableDisableAttributes, ILogger logger, IProfilingLogger profileLogger) + public Composers(Composition composition, IEnumerable composerTypes, IEnumerable enableDisableAttributes, ILogger logger, IProfilingLogger profileLogger) { _composition = composition ?? throw new ArgumentNullException(nameof(composition)); _composerTypes = composerTypes ?? throw new ArgumentNullException(nameof(composerTypes)); diff --git a/src/Umbraco.Core/Scheduling/KeepAlive.cs b/src/Umbraco.Core/Scheduling/KeepAlive.cs index 727c75326e..57df68d072 100644 --- a/src/Umbraco.Core/Scheduling/KeepAlive.cs +++ b/src/Umbraco.Core/Scheduling/KeepAlive.cs @@ -6,6 +6,7 @@ using Umbraco.Core; using Umbraco.Core.Configuration.UmbracoSettings; using Umbraco.Core.Logging; using Umbraco.Core.Sync; +using Microsoft.Extensions.Logging; namespace Umbraco.Web.Scheduling { @@ -14,13 +15,13 @@ namespace Umbraco.Web.Scheduling private readonly IRequestAccessor _requestAccessor; private readonly IMainDom _mainDom; private readonly IKeepAliveSettings _keepAliveSettings; - private readonly ILogger _logger; - private readonly ProfilingLogger _profilingLogger; + private readonly Microsoft.Extensions.Logging.ILogger _logger; + private readonly IProfilingLogger _profilingLogger; private readonly IServerRegistrar _serverRegistrar; private static HttpClient _httpClient; public KeepAlive(IBackgroundTaskRunner runner, int delayMilliseconds, int periodMilliseconds, - IRequestAccessor requestAccessor, IMainDom mainDom, IKeepAliveSettings keepAliveSettings, ILogger logger, ProfilingLogger profilingLogger, IServerRegistrar serverRegistrar) + IRequestAccessor requestAccessor, IMainDom mainDom, IKeepAliveSettings keepAliveSettings, Microsoft.Extensions.Logging.ILogger logger, IProfilingLogger profilingLogger, IServerRegistrar serverRegistrar) : base(runner, delayMilliseconds, periodMilliseconds) { _requestAccessor = requestAccessor; diff --git a/src/Umbraco.Core/Scheduling/TempFileCleanup.cs b/src/Umbraco.Core/Scheduling/TempFileCleanup.cs index acd4b93769..5bd2f667ee 100644 --- a/src/Umbraco.Core/Scheduling/TempFileCleanup.cs +++ b/src/Umbraco.Core/Scheduling/TempFileCleanup.cs @@ -4,6 +4,8 @@ using System.IO; using System.Linq; using Umbraco.Core; using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; +using ILogger = Microsoft.Extensions.Logging.ILogger; namespace Umbraco.Web.Scheduling { @@ -16,11 +18,11 @@ namespace Umbraco.Web.Scheduling private readonly TimeSpan _age; private readonly IMainDom _mainDom; private readonly IProfilingLogger _profilingLogger; - private readonly ILogger _logger; + private readonly ILogger _logger; public TempFileCleanup(IBackgroundTaskRunner runner, int delayMilliseconds, int periodMilliseconds, IEnumerable tempFolders, TimeSpan age, - IMainDom mainDom, IProfilingLogger profilingLogger, ILogger logger) + IMainDom mainDom, IProfilingLogger profilingLogger, ILogger logger) : base(runner, delayMilliseconds, periodMilliseconds) { //SystemDirectories.TempFileUploads diff --git a/src/Umbraco.Examine.Lucene/ExamineLuceneFinalComponent.cs b/src/Umbraco.Examine.Lucene/ExamineLuceneFinalComponent.cs index e1e80ead2f..25e79c6040 100644 --- a/src/Umbraco.Examine.Lucene/ExamineLuceneFinalComponent.cs +++ b/src/Umbraco.Examine.Lucene/ExamineLuceneFinalComponent.cs @@ -7,11 +7,11 @@ namespace Umbraco.Examine { public class ExamineLuceneFinalComponent : IComponent { - private readonly IProfilingLogger _logger; + private readonly ILogger _logger; private readonly IExamineManager _examineManager; private readonly IMainDom _mainDom; - public ExamineLuceneFinalComponent(IProfilingLogger logger, IExamineManager examineManager, IMainDom mainDom) + public ExamineLuceneFinalComponent(ILogger logger, IExamineManager examineManager, IMainDom mainDom) { _logger = logger; _examineManager = examineManager; diff --git a/src/Umbraco.Examine.Lucene/LuceneIndexDiagnosticsFactory.cs b/src/Umbraco.Examine.Lucene/LuceneIndexDiagnosticsFactory.cs index 16e3ee4d9a..4c64263041 100644 --- a/src/Umbraco.Examine.Lucene/LuceneIndexDiagnosticsFactory.cs +++ b/src/Umbraco.Examine.Lucene/LuceneIndexDiagnosticsFactory.cs @@ -1,5 +1,6 @@ using Examine; using Examine.LuceneEngine.Providers; +using Microsoft.Extensions.Logging; using Umbraco.Core.Hosting; using Umbraco.Core.Logging; using Umbraco.Core.IO; @@ -12,12 +13,12 @@ namespace Umbraco.Examine /// public class LuceneIndexDiagnosticsFactory : IndexDiagnosticsFactory { - private readonly ILogger _logger; + private readonly ILoggerFactory _loggerFactory; private readonly IHostingEnvironment _hostingEnvironment; - public LuceneIndexDiagnosticsFactory(ILogger logger, IHostingEnvironment hostingEnvironment) + public LuceneIndexDiagnosticsFactory(ILoggerFactory loggerFactory, IHostingEnvironment hostingEnvironment) { - _logger = logger; + _loggerFactory = loggerFactory; _hostingEnvironment = hostingEnvironment; } @@ -26,7 +27,7 @@ namespace Umbraco.Examine if (!(index is IIndexDiagnostics indexDiag)) { if (index is LuceneIndex luceneIndex) - indexDiag = new LuceneIndexDiagnostics(luceneIndex, _logger, _hostingEnvironment); + indexDiag = new LuceneIndexDiagnostics(luceneIndex, _loggerFactory.CreateLogger("LuceneIndexDiagnostics"), _hostingEnvironment); else indexDiag = base.Create(index); } diff --git a/src/Umbraco.Infrastructure/Packaging/PackageDataInstallation.cs b/src/Umbraco.Infrastructure/Packaging/PackageDataInstallation.cs index 1c1ca97f54..027b74ebdd 100644 --- a/src/Umbraco.Infrastructure/Packaging/PackageDataInstallation.cs +++ b/src/Umbraco.Infrastructure/Packaging/PackageDataInstallation.cs @@ -1289,7 +1289,7 @@ namespace Umbraco.Core.Packaging else if (string.IsNullOrEmpty((string)elementCopy.Element("Master")) == false && templateElements.Any(x => (string)x.Element("Alias") == (string)elementCopy.Element("Master")) == false) { - _logger.Info( + _logger.LogInformation( "Template '{TemplateAlias}' has an invalid Master '{TemplateMaster}', so the reference has been ignored.", (string)elementCopy.Element("Alias"), (string)elementCopy.Element("Master")); diff --git a/src/Umbraco.Infrastructure/Runtime/CoreInitialComposer.cs b/src/Umbraco.Infrastructure/Runtime/CoreInitialComposer.cs index 852c617750..0fd174ac42 100644 --- a/src/Umbraco.Infrastructure/Runtime/CoreInitialComposer.cs +++ b/src/Umbraco.Infrastructure/Runtime/CoreInitialComposer.cs @@ -145,6 +145,7 @@ namespace Umbraco.Core.Runtime factory.GetInstance(), factory.GetInstance(), factory.GetInstance(), + factory.GetInstance(), factory.GetInstance(), true, new DatabaseServerMessengerOptions(), factory.GetInstance(), diff --git a/src/Umbraco.Infrastructure/Runtime/CoreRuntime.cs b/src/Umbraco.Infrastructure/Runtime/CoreRuntime.cs index 4e369336d0..1b94b9239d 100644 --- a/src/Umbraco.Infrastructure/Runtime/CoreRuntime.cs +++ b/src/Umbraco.Infrastructure/Runtime/CoreRuntime.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.IO; +using Microsoft.Extensions.Logging; using Umbraco.Core.Cache; using Umbraco.Core.Composing; using Umbraco.Core.Configuration; @@ -12,6 +13,7 @@ using Umbraco.Core.IO; using Umbraco.Core.Logging; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Mappers; +using ILogger = Umbraco.Core.Logging.ILogger; namespace Umbraco.Core.Runtime { @@ -26,8 +28,7 @@ namespace Umbraco.Core.Runtime private IFactory _factory; // runtime state, this instance will get replaced again once the essential services are available to run the check private RuntimeState _state = RuntimeState.Booting(); - private readonly ILogger _typeLoaderLogger; - private readonly ILogger _composerLogger; + private readonly ILoggerFactory _loggerFactory; private readonly IUmbracoBootPermissionChecker _umbracoBootPermissionChecker; private readonly IGlobalSettings _globalSettings; private readonly IConnectionStrings _connectionStrings; @@ -37,8 +38,7 @@ namespace Umbraco.Core.Runtime IUmbracoVersion umbracoVersion, IIOHelper ioHelper, ILogger logger, - ILogger typeLoaderLogger, - ILogger composerLogger, + ILoggerFactory loggerFactory, IProfiler profiler, IUmbracoBootPermissionChecker umbracoBootPermissionChecker, IHostingEnvironment hostingEnvironment, @@ -57,8 +57,7 @@ namespace Umbraco.Core.Runtime BackOfficeInfo = backOfficeInfo; DbProviderFactoryCreator = dbProviderFactoryCreator; - _typeLoaderLogger = typeLoaderLogger; - _composerLogger = composerLogger; + _loggerFactory = loggerFactory; _umbracoBootPermissionChecker = umbracoBootPermissionChecker; Logger = logger; @@ -171,7 +170,7 @@ namespace Umbraco.Core.Runtime var databaseFactory = CreateDatabaseFactory(); // type finder/loader - var typeLoader = new TypeLoader(TypeFinder, AppCaches.RuntimeCache, new DirectoryInfo(HostingEnvironment.LocalTempPath), _typeLoaderLogger, ProfilingLogger); + var typeLoader = new TypeLoader(TypeFinder, AppCaches.RuntimeCache, new DirectoryInfo(HostingEnvironment.LocalTempPath), _loggerFactory.CreateLogger("TypeLoader"), ProfilingLogger); // re-create the state object with the essential services _state = new RuntimeState(Configs.Global(), UmbracoVersion, databaseFactory, Logger); @@ -291,7 +290,7 @@ namespace Umbraco.Core.Runtime enableDisableAttributes = typeLoader.GetAssemblyAttributes(typeof(EnableComposerAttribute), typeof(DisableComposerAttribute)); } - var composers = new Composers(composition, composerTypes, enableDisableAttributes, _composerLogger, ProfilingLogger); + var composers = new Composers(composition, composerTypes, enableDisableAttributes, _loggerFactory.CreateLogger("Composers"), ProfilingLogger); composers.Compose(); } diff --git a/src/Umbraco.Infrastructure/Scheduling/HealthCheckNotifier.cs b/src/Umbraco.Infrastructure/Scheduling/HealthCheckNotifier.cs index 8b2213134c..40d6f4eb28 100644 --- a/src/Umbraco.Infrastructure/Scheduling/HealthCheckNotifier.cs +++ b/src/Umbraco.Infrastructure/Scheduling/HealthCheckNotifier.cs @@ -7,6 +7,8 @@ using Umbraco.Core.Logging; using Umbraco.Core.Scoping; using Umbraco.Core.Sync; using Umbraco.Web.HealthCheck; +using Microsoft.Extensions.Logging; +using ILogger = Microsoft.Extensions.Logging.ILogger; namespace Umbraco.Web.Scheduling { @@ -17,7 +19,7 @@ namespace Umbraco.Web.Scheduling private readonly HealthCheckNotificationMethodCollection _notifications; private readonly IScopeProvider _scopeProvider; private readonly IProfilingLogger _pLogger; - private readonly ILogger _logger; + private readonly Microsoft.Extensions.Logging.ILogger _logger; private readonly IHealthChecksSettings _healthChecksSettingsConfig; private readonly IServerRegistrar _serverRegistrar; private readonly IRuntimeState _runtimeState; @@ -30,7 +32,7 @@ namespace Umbraco.Web.Scheduling HealthCheckNotificationMethodCollection notifications, IMainDom mainDom, IProfilingLogger pLogger, - ILogger logger, + Microsoft.Extensions.Logging.ILogger logger, IHealthChecksSettings healthChecksSettingsConfig, IServerRegistrar serverRegistrar, IRuntimeState runtimeState, diff --git a/src/Umbraco.Infrastructure/Scheduling/LogScrubber.cs b/src/Umbraco.Infrastructure/Scheduling/LogScrubber.cs index bbd6a9c1a5..916309a5db 100644 --- a/src/Umbraco.Infrastructure/Scheduling/LogScrubber.cs +++ b/src/Umbraco.Infrastructure/Scheduling/LogScrubber.cs @@ -5,6 +5,8 @@ using Umbraco.Core.Logging; using Umbraco.Core.Scoping; using Umbraco.Core.Services; using Umbraco.Core.Sync; +using Microsoft.Extensions.Logging; +using ILogger = Microsoft.Extensions.Logging.ILogger; namespace Umbraco.Web.Scheduling { @@ -16,11 +18,11 @@ namespace Umbraco.Web.Scheduling private readonly IAuditService _auditService; private readonly ILoggingSettings _settings; private readonly IProfilingLogger _pLogger; - private readonly ILogger _logger; + private readonly Microsoft.Extensions.Logging.ILogger _logger; private readonly IScopeProvider _scopeProvider; public LogScrubber(IBackgroundTaskRunner runner, int delayMilliseconds, int periodMilliseconds, - IMainDom mainDom, IServerRegistrar serverRegistrar, IAuditService auditService, ILoggingSettings settings, IScopeProvider scopeProvider, IProfilingLogger pLogger, ILogger logger) + IMainDom mainDom, IServerRegistrar serverRegistrar, IAuditService auditService, ILoggingSettings settings, IScopeProvider scopeProvider, IProfilingLogger pLogger, Microsoft.Extensions.Logging.ILogger logger) : base(runner, delayMilliseconds, periodMilliseconds) { _mainDom = mainDom; diff --git a/src/Umbraco.Infrastructure/Scheduling/ScheduledPublishing.cs b/src/Umbraco.Infrastructure/Scheduling/ScheduledPublishing.cs index 8d8015f449..8965be6985 100644 --- a/src/Umbraco.Infrastructure/Scheduling/ScheduledPublishing.cs +++ b/src/Umbraco.Infrastructure/Scheduling/ScheduledPublishing.cs @@ -4,13 +4,14 @@ using Umbraco.Core; using Umbraco.Core.Logging; using Umbraco.Core.Services; using Umbraco.Core.Sync; +using Microsoft.Extensions.Logging; namespace Umbraco.Web.Scheduling { public class ScheduledPublishing : RecurringTaskBase { private readonly IContentService _contentService; - private readonly ILogger _logger; + private readonly Microsoft.Extensions.Logging.ILogger _logger; private readonly IMainDom _mainDom; private readonly IRuntimeState _runtime; private readonly IServerMessenger _serverMessenger; @@ -20,7 +21,7 @@ namespace Umbraco.Web.Scheduling public ScheduledPublishing(IBackgroundTaskRunner runner, int delayMilliseconds, int periodMilliseconds, IRuntimeState runtime, IMainDom mainDom, IServerRegistrar serverRegistrar, IContentService contentService, - IUmbracoContextFactory umbracoContextFactory, ILogger logger, IServerMessenger serverMessenger) + IUmbracoContextFactory umbracoContextFactory, Microsoft.Extensions.Logging.ILogger logger, IServerMessenger serverMessenger) : base(runner, delayMilliseconds, periodMilliseconds) { _runtime = runtime; @@ -42,24 +43,24 @@ namespace Umbraco.Web.Scheduling switch (_serverRegistrar.GetCurrentServerRole()) { case ServerRole.Replica: - _logger.Debug("Does not run on replica servers."); + _logger.LogDebug("Does not run on replica servers."); return true; // DO repeat, server role can change case ServerRole.Unknown: - _logger.Debug("Does not run on servers with unknown role."); + _logger.LogDebug("Does not run on servers with unknown role."); return true; // DO repeat, server role can change } // ensure we do not run if not main domain, but do NOT lock it if (_mainDom.IsMainDom == false) { - _logger.Debug("Does not run if not MainDom."); + _logger.LogDebug("Does not run if not MainDom."); return false; // do NOT repeat, going down } // do NOT run publishing if not properly running if (_runtime.Level != RuntimeLevel.Run) { - _logger.Debug("Does not run if run level is not Run."); + _logger.LogDebug("Does not run if run level is not Run."); return true; // repeat/wait } @@ -98,7 +99,7 @@ namespace Umbraco.Web.Scheduling catch (Exception ex) { // important to catch *everything* to ensure the task repeats - _logger.LogError(ex, "Failed."); + _logger.LogError(ex, "Failed."); } return true; // repeat diff --git a/src/Umbraco.Infrastructure/Scheduling/SchedulerComponent.cs b/src/Umbraco.Infrastructure/Scheduling/SchedulerComponent.cs index 3539993358..80666e838b 100644 --- a/src/Umbraco.Infrastructure/Scheduling/SchedulerComponent.cs +++ b/src/Umbraco.Infrastructure/Scheduling/SchedulerComponent.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Composing; using Umbraco.Core.Configuration.HealthChecks; @@ -15,6 +16,7 @@ using Umbraco.Core.Services; using Umbraco.Core.Sync; using Umbraco.Web.HealthCheck; using Umbraco.Web.Routing; +using ILogger = Umbraco.Core.Logging.ILogger; namespace Umbraco.Web.Scheduling { @@ -30,7 +32,9 @@ namespace Umbraco.Web.Scheduling private readonly IServerRegistrar _serverRegistrar; private readonly IContentService _contentService; private readonly IAuditService _auditService; - private readonly IProfilingLogger _logger; + private readonly IProfilingLogger _pLogger; + private readonly ILogger _logger; + private readonly ILoggerFactory _loggerFactory; private readonly IApplicationShutdownRegistry _applicationShutdownRegistry; private readonly IScopeProvider _scopeProvider; private readonly HealthCheckCollection _healthChecks; @@ -56,7 +60,7 @@ namespace Umbraco.Web.Scheduling public SchedulerComponent(IRuntimeState runtime, IMainDom mainDom, IServerRegistrar serverRegistrar, IContentService contentService, IAuditService auditService, HealthCheckCollection healthChecks, HealthCheckNotificationMethodCollection notifications, - IScopeProvider scopeProvider, IUmbracoContextFactory umbracoContextFactory, IProfilingLogger logger, + IScopeProvider scopeProvider, IUmbracoContextFactory umbracoContextFactory, IProfilingLogger pLogger, Core.Logging.ILogger logger, ILoggerFactory loggerFactory, IApplicationShutdownRegistry applicationShutdownRegistry, IHealthChecksSettings healthChecksSettingsConfig, IServerMessenger serverMessenger, IRequestAccessor requestAccessor, ILoggingSettings loggingSettings, IKeepAliveSettings keepAliveSettings, @@ -68,7 +72,9 @@ namespace Umbraco.Web.Scheduling _contentService = contentService; _auditService = auditService; _scopeProvider = scopeProvider; + _pLogger = pLogger; _logger = logger; + _loggerFactory = loggerFactory; _applicationShutdownRegistry = applicationShutdownRegistry; _umbracoContextFactory = umbracoContextFactory; @@ -84,6 +90,7 @@ namespace Umbraco.Web.Scheduling public void Initialize() { + var backGroundTaskLogger = _loggerFactory.CreateLogger("BackgroundTaskRunner"); // backgrounds runners are web aware, if the app domain dies, these tasks will wind down correctly _keepAliveRunner = new BackgroundTaskRunner("KeepAlive", _logger, _applicationShutdownRegistry); _publishingRunner = new BackgroundTaskRunner("ScheduledPublishing", _logger, _applicationShutdownRegistry); @@ -116,7 +123,7 @@ namespace Umbraco.Web.Scheduling { LazyInitializer.EnsureInitialized(ref _tasks, ref _started, ref _locker, () => { - _logger.Debug("Initializing the scheduler"); + _logger.LogDebug("Initializing the scheduler"); var tasks = new List(); @@ -131,7 +138,7 @@ namespace Umbraco.Web.Scheduling var healthCheckConfig = _healthChecksSettingsConfig; if (healthCheckConfig.NotificationSettings.Enabled) - tasks.Add(RegisterHealthCheckNotifier(healthCheckConfig, _healthChecks, _notifications, _logger)); + tasks.Add(RegisterHealthCheckNotifier(healthCheckConfig, _healthChecks, _notifications, _pLogger)); return tasks.ToArray(); }); @@ -141,7 +148,7 @@ namespace Umbraco.Web.Scheduling { // ping/keepalive // on all servers - var task = new KeepAlive(_keepAliveRunner, DefaultDelayMilliseconds, FiveMinuteMilliseconds, _requestAccessor, _mainDom, keepAliveSettings, _logger, _serverRegistrar); + var task = new KeepAlive(_keepAliveRunner, DefaultDelayMilliseconds, FiveMinuteMilliseconds, _requestAccessor, _mainDom, keepAliveSettings, _loggerFactory.CreateLogger(), _pLogger, _serverRegistrar); _keepAliveRunner.TryAdd(task); return task; } @@ -150,7 +157,7 @@ namespace Umbraco.Web.Scheduling { // scheduled publishing/unpublishing // install on all, will only run on non-replica servers - var task = new ScheduledPublishing(_publishingRunner, DefaultDelayMilliseconds, OneMinuteMilliseconds, _runtime, _mainDom, _serverRegistrar, _contentService, _umbracoContextFactory, _logger, _serverMessenger); + var task = new ScheduledPublishing(_publishingRunner, DefaultDelayMilliseconds, OneMinuteMilliseconds, _runtime, _mainDom, _serverRegistrar, _contentService, _umbracoContextFactory, _loggerFactory.CreateLogger(), _serverMessenger); _publishingRunner.TryAdd(task); return task; } @@ -176,7 +183,7 @@ namespace Umbraco.Web.Scheduling } var periodInMilliseconds = healthCheckSettingsConfig.NotificationSettings.PeriodInHours * 60 * 60 * 1000; - var task = new HealthCheckNotifier(_healthCheckRunner, delayInMilliseconds, periodInMilliseconds, healthChecks, notifications, _mainDom, logger, _healthChecksSettingsConfig, _serverRegistrar, _runtime, _scopeProvider); + var task = new HealthCheckNotifier(_healthCheckRunner, delayInMilliseconds, periodInMilliseconds, healthChecks, notifications, _mainDom, logger, _loggerFactory.CreateLogger(), _healthChecksSettingsConfig, _serverRegistrar, _runtime, _scopeProvider); _healthCheckRunner.TryAdd(task); return task; } @@ -185,7 +192,7 @@ namespace Umbraco.Web.Scheduling { // log scrubbing // install on all, will only run on non-replica servers - var task = new LogScrubber(_scrubberRunner, DefaultDelayMilliseconds, LogScrubber.GetLogScrubbingInterval(), _mainDom, _serverRegistrar, _auditService, settings, _scopeProvider, _logger); + var task = new LogScrubber(_scrubberRunner, DefaultDelayMilliseconds, LogScrubber.GetLogScrubbingInterval(), _mainDom, _serverRegistrar, _auditService, settings, _scopeProvider, _pLogger, _loggerFactory.CreateLogger()); _scrubberRunner.TryAdd(task); return task; } @@ -209,7 +216,7 @@ namespace Umbraco.Web.Scheduling var task = new TempFileCleanup(_fileCleanupRunner, DefaultDelayMilliseconds, OneHourMilliseconds, tempFolderPaths.Select(x=>new DirectoryInfo(x)), TimeSpan.FromDays(1), //files that are over a day old - _mainDom, _logger); + _mainDom, _pLogger, _loggerFactory.CreateLogger("TempFileCleanup")); _scrubberRunner.TryAdd(task); return task; } diff --git a/src/Umbraco.Infrastructure/Search/BackgroundIndexRebuilder.cs b/src/Umbraco.Infrastructure/Search/BackgroundIndexRebuilder.cs index 0ecef1f253..ca1f9c3bf4 100644 --- a/src/Umbraco.Infrastructure/Search/BackgroundIndexRebuilder.cs +++ b/src/Umbraco.Infrastructure/Search/BackgroundIndexRebuilder.cs @@ -17,13 +17,15 @@ namespace Umbraco.Web.Search private static readonly object RebuildLocker = new object(); private readonly IndexRebuilder _indexRebuilder; private readonly IMainDom _mainDom; - private readonly IProfilingLogger _logger; + private readonly IProfilingLogger _pLogger; + private readonly ILogger _logger; private readonly IApplicationShutdownRegistry _hostingEnvironment; private static BackgroundTaskRunner _rebuildOnStartupRunner; - public BackgroundIndexRebuilder(IMainDom mainDom, IProfilingLogger logger, IApplicationShutdownRegistry hostingEnvironment, IndexRebuilder indexRebuilder) + public BackgroundIndexRebuilder(IMainDom mainDom, IProfilingLogger pLogger, ILogger logger, IApplicationShutdownRegistry hostingEnvironment, IndexRebuilder indexRebuilder) { _mainDom = mainDom; + _pLogger = pLogger; _logger = logger; _hostingEnvironment = hostingEnvironment; _indexRebuilder = indexRebuilder; @@ -42,17 +44,17 @@ namespace Umbraco.Web.Search { if (_rebuildOnStartupRunner != null && _rebuildOnStartupRunner.IsRunning) { - _logger.LogWarning("Call was made to RebuildIndexes but the task runner for rebuilding is already running"); + _logger.LogWarning("Call was made to RebuildIndexes but the task runner for rebuilding is already running"); return; } _logger.LogInformation("Starting initialize async background thread."); //do the rebuild on a managed background thread - var task = new RebuildOnStartupTask(_mainDom, _indexRebuilder, _logger, onlyEmptyIndexes, waitMilliseconds); + var task = new RebuildOnStartupTask(_mainDom, _indexRebuilder, _logger as ILogger, onlyEmptyIndexes, waitMilliseconds); _rebuildOnStartupRunner = new BackgroundTaskRunner( "RebuildIndexesOnStartup", - _logger, _hostingEnvironment); + _logger as ILogger, _hostingEnvironment); _rebuildOnStartupRunner.TryAdd(task); } diff --git a/src/Umbraco.Infrastructure/Search/ExamineComponent.cs b/src/Umbraco.Infrastructure/Search/ExamineComponent.cs index ab1c20b0a3..297d7ac2aa 100644 --- a/src/Umbraco.Infrastructure/Search/ExamineComponent.cs +++ b/src/Umbraco.Infrastructure/Search/ExamineComponent.cs @@ -27,7 +27,8 @@ namespace Umbraco.Web.Search private readonly IScopeProvider _scopeProvider; private readonly ServiceContext _services; private readonly IMainDom _mainDom; - private readonly IProfilingLogger _logger; + private readonly IProfilingLogger _pLogger; + private readonly ILogger _logger; private readonly IUmbracoIndexesCreator _indexCreator; @@ -38,6 +39,7 @@ namespace Umbraco.Web.Search public ExamineComponent(IMainDom mainDom, IExamineManager examineManager, IProfilingLogger profilingLogger, + ILogger logger, IScopeProvider scopeProvider, IUmbracoIndexesCreator indexCreator, ServiceContext services, IContentValueSetBuilder contentValueSetBuilder, @@ -55,7 +57,8 @@ namespace Umbraco.Web.Search _memberValueSetBuilder = memberValueSetBuilder; _backgroundIndexRebuilder = backgroundIndexRebuilder; _mainDom = mainDom; - _logger = profilingLogger; + _pLogger = profilingLogger; + _logger = logger; _indexCreator = indexCreator; } @@ -64,7 +67,7 @@ namespace Umbraco.Web.Search //let's deal with shutting down Examine with MainDom var examineShutdownRegistered = _mainDom.Register(() => { - using (_logger.TraceDuration("Examine shutting down")) + using (_pLogger.TraceDuration("Examine shutting down")) { _examineManager.Dispose(); } @@ -75,7 +78,7 @@ namespace Umbraco.Web.Search _logger.LogInformation("Examine shutdown not registered, this AppDomain is not the MainDom, Examine will be disabled"); //if we could not register the shutdown examine ourselves, it means we are not maindom! in this case all of examine should be disabled! - Suspendable.ExamineEvents.SuspendIndexers(_logger); + Suspendable.ExamineEvents.SuspendIndexers(_logger as ILogger); return; //exit, do not continue } @@ -83,7 +86,7 @@ namespace Umbraco.Web.Search foreach(var index in _indexCreator.Create()) _examineManager.AddIndex(index); - _logger.Debug("Examine shutdown registered with MainDom"); + _logger.LogDebug("Examine shutdown registered with MainDom"); var registeredIndexers = _examineManager.Indexes.OfType().Count(x => x.EnableDefaultEventHandler); diff --git a/src/Umbraco.Infrastructure/Sync/DatabaseServerMessenger.cs b/src/Umbraco.Infrastructure/Sync/DatabaseServerMessenger.cs index 11da064637..a557244b62 100644 --- a/src/Umbraco.Infrastructure/Sync/DatabaseServerMessenger.cs +++ b/src/Umbraco.Infrastructure/Sync/DatabaseServerMessenger.cs @@ -47,7 +47,7 @@ namespace Umbraco.Core.Sync public DatabaseServerMessengerOptions Options { get; } public DatabaseServerMessenger( - IMainDom mainDom, IScopeProvider scopeProvider, ISqlContext sqlContext, IProfilingLogger proflog, IServerRegistrar serverRegistrar, + IMainDom mainDom, IScopeProvider scopeProvider, ISqlContext sqlContext, IProfilingLogger proflog, ILogger logger, IServerRegistrar serverRegistrar, bool distributedEnabled, DatabaseServerMessengerOptions options, IHostingEnvironment hostingEnvironment, CacheRefresherCollection cacheRefreshers) : base(distributedEnabled) { @@ -58,7 +58,7 @@ namespace Umbraco.Core.Sync _serverRegistrar = serverRegistrar; _hostingEnvironment = hostingEnvironment; _cacheRefreshers = cacheRefreshers; - Logger = proflog; + Logger = logger; Options = options ?? throw new ArgumentNullException(nameof(options)); _lastPruned = _lastSync = DateTime.UtcNow; _syncIdle = new ManualResetEvent(true); diff --git a/src/Umbraco.Tests.Common/TestHelperBase.cs b/src/Umbraco.Tests.Common/TestHelperBase.cs index 8a4ed3f40e..cc01fa3528 100644 --- a/src/Umbraco.Tests.Common/TestHelperBase.cs +++ b/src/Umbraco.Tests.Common/TestHelperBase.cs @@ -42,7 +42,7 @@ namespace Umbraco.Tests.Common public TypeLoader GetMockedTypeLoader() { - return new TypeLoader(Mock.Of(), Mock.Of(), new DirectoryInfo(IOHelper.MapPath("~/App_Data/TEMP")), Mock.Of()); + return new TypeLoader(Mock.Of(), Mock.Of(), new DirectoryInfo(IOHelper.MapPath("~/App_Data/TEMP")), Mock.Of(), Mock.Of()); } public Configs GetConfigs() => GetConfigsFactory().Create(); diff --git a/src/Umbraco.Tests.Integration/Implementations/TestHelper.cs b/src/Umbraco.Tests.Integration/Implementations/TestHelper.cs index a33e264acb..7853ae9111 100644 --- a/src/Umbraco.Tests.Integration/Implementations/TestHelper.cs +++ b/src/Umbraco.Tests.Integration/Implementations/TestHelper.cs @@ -54,7 +54,6 @@ namespace Umbraco.Tests.Integration.Implementations _hostEnvironment = hostEnvironment.Object; _hostingLifetime = new AspNetCoreApplicationShutdownRegistry(Mock.Of()); - Logger = new ConsoleLogger(new MessageTemplates()); ProfilingLogger = new ProfilingLogger(new ConsoleLogger(new MessageTemplates()), Profiler); } diff --git a/src/Umbraco.Tests.Integration/RuntimeTests.cs b/src/Umbraco.Tests.Integration/RuntimeTests.cs index 07a0db167c..a20c0cd1c0 100644 --- a/src/Umbraco.Tests.Integration/RuntimeTests.cs +++ b/src/Umbraco.Tests.Integration/RuntimeTests.cs @@ -5,11 +5,11 @@ using NUnit.Framework; using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.Logging; using Smidge; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Composing; -using Umbraco.Core.Logging; using Umbraco.Core.Runtime; using Umbraco.Tests.Common; using Umbraco.Tests.Integration.Extensions; @@ -17,6 +17,7 @@ using Umbraco.Tests.Integration.Implementations; using Umbraco.Tests.Integration.Testing; using Umbraco.Web.Common.AspNetCore; using Umbraco.Extensions; +using ILogger = Umbraco.Core.Logging.ILogger; namespace Umbraco.Tests.Integration { @@ -56,7 +57,7 @@ namespace Umbraco.Tests.Integration // Create the core runtime var coreRuntime = new CoreRuntime(testHelper.GetConfigs(), testHelper.GetUmbracoVersion(), - testHelper.IOHelper, testHelper.Logger, testHelper.Profiler, testHelper.UmbracoBootPermissionChecker, + testHelper.IOHelper, testHelper.Logger, Mock.Of(), testHelper.Profiler, testHelper.UmbracoBootPermissionChecker, testHelper.GetHostingEnvironment(), testHelper.GetBackOfficeInfo(), testHelper.DbProviderFactoryCreator, testHelper.MainDom, testHelper.GetTypeFinder(), AppCaches.NoCache); diff --git a/src/Umbraco.Tests.Integration/Testing/IntegrationTestComposer.cs b/src/Umbraco.Tests.Integration/Testing/IntegrationTestComposer.cs index e9b38741e2..76480da97e 100644 --- a/src/Umbraco.Tests.Integration/Testing/IntegrationTestComposer.cs +++ b/src/Umbraco.Tests.Integration/Testing/IntegrationTestComposer.cs @@ -87,8 +87,8 @@ namespace Umbraco.Tests.Integration.Testing // replace the default so there is no background index rebuilder private class TestBackgroundIndexRebuilder : BackgroundIndexRebuilder { - public TestBackgroundIndexRebuilder(IMainDom mainDom, IProfilingLogger logger, IApplicationShutdownRegistry hostingEnvironment, IndexRebuilder indexRebuilder) - : base(mainDom, logger, hostingEnvironment, indexRebuilder) + public TestBackgroundIndexRebuilder(IMainDom mainDom, IProfilingLogger pLogger, IApplicationShutdownRegistry hostingEnvironment, IndexRebuilder indexRebuilder) + : base(mainDom, pLogger, hostingEnvironment, indexRebuilder) { } diff --git a/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs b/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs index 28b8fa0702..510d2ae6cf 100644 --- a/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs +++ b/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs @@ -29,6 +29,7 @@ using Microsoft.Extensions.Configuration; using System.Data.SqlClient; using System.Data.Common; using System.IO; +using Microsoft.Extensions.Logging; namespace Umbraco.Tests.Integration.Testing { @@ -124,6 +125,7 @@ namespace Umbraco.Tests.Integration.Testing /// /// /// + /// /// /// /// @@ -132,13 +134,14 @@ namespace Umbraco.Tests.Integration.Testing /// /// public CoreRuntime CreateTestRuntime(Configs configs, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, - ILogger logger, IProfiler profiler, Core.Hosting.IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo, + ILogger logger, ILoggerFactory loggerFactory, IProfiler profiler, Core.Hosting.IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo, ITypeFinder typeFinder, AppCaches appCaches, IDbProviderFactoryCreator dbProviderFactoryCreator) { var runtime = CreateTestRuntime(configs, umbracoVersion, ioHelper, logger, + loggerFactory, profiler, hostingEnvironment, backOfficeInfo, @@ -159,17 +162,18 @@ namespace Umbraco.Tests.Integration.Testing /// /// /// + /// /// /// /// /// - /// + /// /// /// /// The event handler used for DB installation /// public static CoreRuntime CreateTestRuntime(Configs configs, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, - ILogger logger, IProfiler profiler, Core.Hosting.IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo, + ILogger logger, ILoggerFactory loggerFactory, IProfiler profiler, Core.Hosting.IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo, ITypeFinder typeFinder, AppCaches appCaches, IDbProviderFactoryCreator dbProviderFactoryCreator, IMainDom mainDom, Action eventHandler) { @@ -178,6 +182,7 @@ namespace Umbraco.Tests.Integration.Testing umbracoVersion, ioHelper, logger, + loggerFactory, profiler, Mock.Of(), hostingEnvironment, diff --git a/src/Umbraco.Tests/Components/ComponentTests.cs b/src/Umbraco.Tests/Components/ComponentTests.cs index 6227ce00f6..c8e3adf5a0 100644 --- a/src/Umbraco.Tests/Components/ComponentTests.cs +++ b/src/Umbraco.Tests/Components/ComponentTests.cs @@ -14,6 +14,7 @@ using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Scoping; using Umbraco.Tests.TestHelpers; +using ILogger = Microsoft.Extensions.Logging.ILogger; namespace Umbraco.Tests.Components { @@ -32,15 +33,16 @@ namespace Umbraco.Tests.Components var mock = new Mock(); var logger = Mock.Of(); + var umbLogger = Mock.Of(); var typeFinder = TestHelper.GetTypeFinder(); - var f = new UmbracoDatabaseFactory(logger, SettingsForTests.DefaultGlobalSettings, Mock.Of(), new Lazy(() => new MapperCollection(Enumerable.Empty())), TestHelper.DbProviderFactoryCreator); - var fs = new FileSystems(mock.Object, logger, TestHelper.IOHelper, SettingsForTests.GenerateMockGlobalSettings(), TestHelper.GetHostingEnvironment()); + var f = new UmbracoDatabaseFactory(umbLogger, SettingsForTests.DefaultGlobalSettings, Mock.Of(), new Lazy(() => new MapperCollection(Enumerable.Empty())), TestHelper.DbProviderFactoryCreator); + var fs = new FileSystems(mock.Object, umbLogger, TestHelper.IOHelper, SettingsForTests.GenerateMockGlobalSettings(), TestHelper.GetHostingEnvironment()); var coreDebug = Mock.Of(); var mediaFileSystem = Mock.Of(); - var p = new ScopeProvider(f, fs, coreDebug, mediaFileSystem, logger, typeFinder, NoAppCache.Instance); + var p = new ScopeProvider(f, fs, coreDebug, mediaFileSystem, umbLogger, typeFinder, NoAppCache.Instance); mock.Setup(x => x.GetInstance(typeof (ILogger))).Returns(logger); - mock.Setup(x => x.GetInstance(typeof (IProfilingLogger))).Returns(new ProfilingLogger(Mock.Of(), Mock.Of())); + mock.Setup(x => x.GetInstance(typeof (IProfilingLogger))).Returns(new ProfilingLogger(Mock.Of(), Mock.Of())); mock.Setup(x => x.GetInstance(typeof (IUmbracoDatabaseFactory))).Returns(f); mock.Setup(x => x.GetInstance(typeof (IScopeProvider))).Returns(p); @@ -56,7 +58,7 @@ namespace Umbraco.Tests.Components private static TypeLoader MockTypeLoader() { var ioHelper = TestHelper.IOHelper; - return new TypeLoader(Mock.Of(), Mock.Of(), new DirectoryInfo(ioHelper.MapPath("~/App_Data/TEMP")), Mock.Of>(), Mock.Of()); + return new TypeLoader(Mock.Of(), Mock.Of(), new DirectoryInfo(ioHelper.MapPath("~/App_Data/TEMP")), Mock.Of(), Mock.Of()); } public static IRuntimeState MockRuntimeState(RuntimeLevel level) @@ -74,7 +76,7 @@ namespace Umbraco.Tests.Components var composition = new Composition(register, MockTypeLoader(), Mock.Of(), MockRuntimeState(RuntimeLevel.Unknown), TestHelper.GetConfigs(), TestHelper.IOHelper, AppCaches.NoCache); var types = TypeArray(); - var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of>(), Mock.Of()); + var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of(), Mock.Of()); Composed.Clear(); // 2 is Core and requires 4 // 3 is User - goes away with RuntimeLevel.Unknown @@ -90,7 +92,7 @@ namespace Umbraco.Tests.Components if (type == typeof(Composer1)) return new Composer1(); if (type == typeof(Composer5)) return new Composer5(); if (type == typeof(Component5)) return new Component5(new SomeResource()); - if (type == typeof(IProfilingLogger)) return new ProfilingLogger(Mock.Of(), Mock.Of()); + if (type == typeof(IProfilingLogger)) return new ProfilingLogger(Mock.Of(), Mock.Of()); throw new NotSupportedException(type.FullName); }); }); @@ -113,7 +115,7 @@ namespace Umbraco.Tests.Components var composition = new Composition(register, MockTypeLoader(), Mock.Of(), MockRuntimeState(RuntimeLevel.Run), TestHelper.GetConfigs(), TestHelper.IOHelper, AppCaches.NoCache); var types = TypeArray(); - var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of>(), Mock.Of()); + var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of(), Mock.Of()); Composed.Clear(); // 2 is Core and requires 4 // 3 is User - stays with RuntimeLevel.Run @@ -129,7 +131,7 @@ namespace Umbraco.Tests.Components var composition = new Composition(register, MockTypeLoader(), Mock.Of(), MockRuntimeState(RuntimeLevel.Unknown), TestHelper.GetConfigs(), TestHelper.IOHelper, AppCaches.NoCache); var types = TypeArray(); - var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of>(), Mock.Of()); + var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of(), Mock.Of()); Composed.Clear(); // 21 is required by 20 // => reorder components accordingly @@ -144,7 +146,7 @@ namespace Umbraco.Tests.Components var composition = new Composition(register, MockTypeLoader(), Mock.Of(), MockRuntimeState(RuntimeLevel.Unknown), TestHelper.GetConfigs(), TestHelper.IOHelper, AppCaches.NoCache); var types = TypeArray(); - var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of>(), Mock.Of()); + var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of(), Mock.Of()); Composed.Clear(); // i23 requires 22 // 24, 25 implement i23 @@ -161,7 +163,7 @@ namespace Umbraco.Tests.Components var composition = new Composition(register, MockTypeLoader(), Mock.Of(), MockRuntimeState(RuntimeLevel.Unknown), TestHelper.GetConfigs(), TestHelper.IOHelper, AppCaches.NoCache); var types = TypeArray(); - var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of>(), Mock.Of()); + var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of(), Mock.Of()); Composed.Clear(); try { @@ -184,7 +186,7 @@ namespace Umbraco.Tests.Components var composition = new Composition(register, MockTypeLoader(), Mock.Of(), MockRuntimeState(RuntimeLevel.Unknown), TestHelper.GetConfigs(), TestHelper.IOHelper, AppCaches.NoCache); var types = TypeArray(); - var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of>(), Mock.Of()); + var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of(), Mock.Of()); Composed.Clear(); // 2 is Core and requires 4 // 13 is required by 1 @@ -213,14 +215,14 @@ namespace Umbraco.Tests.Components if (type == typeof(Composer5a)) return new Composer5a(); if (type == typeof(Component5)) return new Component5(new SomeResource()); if (type == typeof(Component5a)) return new Component5a(); - if (type == typeof(IProfilingLogger)) return new ProfilingLogger(Mock.Of(), Mock.Of()); + if (type == typeof(IProfilingLogger)) return new ProfilingLogger(Mock.Of(), Mock.Of()); throw new NotSupportedException(type.FullName); }); }); var composition = new Composition(register, MockTypeLoader(), Mock.Of(), MockRuntimeState(RuntimeLevel.Unknown), TestHelper.GetConfigs(), TestHelper.IOHelper, AppCaches.NoCache); var types = new[] { typeof(Composer1), typeof(Composer5), typeof(Composer5a) }; - var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of>(), Mock.Of()); + var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of(), Mock.Of()); Assert.IsEmpty(Composed); composers.Compose(); @@ -246,7 +248,7 @@ namespace Umbraco.Tests.Components var composition = new Composition(register, MockTypeLoader(), Mock.Of(), MockRuntimeState(RuntimeLevel.Unknown), TestHelper.GetConfigs(), TestHelper.IOHelper, AppCaches.NoCache); var types = new[] { typeof(Composer6), typeof(Composer7), typeof(Composer8) }; - var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of>(), Mock.Of()); + var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of(), Mock.Of()); Composed.Clear(); composers.Compose(); Assert.AreEqual(2, Composed.Count); @@ -261,7 +263,7 @@ namespace Umbraco.Tests.Components var composition = new Composition(register, MockTypeLoader(), Mock.Of(), MockRuntimeState(RuntimeLevel.Unknown), Configs, TestHelper.IOHelper, AppCaches.NoCache); var types = new[] { typeof(Composer9), typeof(Composer2), typeof(Composer4) }; - var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of>(), Mock.Of()); + var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of(), Mock.Of()); Composed.Clear(); composers.Compose(); Assert.AreEqual(2, Composed.Count); @@ -279,7 +281,7 @@ namespace Umbraco.Tests.Components var composition = new Composition(register, MockTypeLoader(), Mock.Of(), MockRuntimeState(RuntimeLevel.Run), Configs, TestHelper.IOHelper, AppCaches.NoCache); var types = new[] { typeof(Composer9), typeof(Composer2), typeof(Composer4) }; - var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of>(), Mock.Of()); + var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of(), Mock.Of()); Composed.Clear(); composers.Compose(); var builder = composition.WithCollectionBuilder(); @@ -298,32 +300,32 @@ namespace Umbraco.Tests.Components var composition = new Composition(register, MockTypeLoader(), Mock.Of(), MockRuntimeState(RuntimeLevel.Unknown), Configs, TestHelper.IOHelper, AppCaches.NoCache); var types = new[] { typeof(Composer10) }; - var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of>(), Mock.Of()); + var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of(), Mock.Of()); Composed.Clear(); composers.Compose(); Assert.AreEqual(1, Composed.Count); Assert.AreEqual(typeof(Composer10), Composed[0]); types = new[] { typeof(Composer11) }; - composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of>(), Mock.Of()); + composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of(), Mock.Of()); Composed.Clear(); Assert.Throws(() => composers.Compose()); Console.WriteLine("throws:"); - composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of>(), Mock.Of()); + composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of(), Mock.Of()); var requirements = composers.GetRequirements(false); Console.WriteLine(Composers.GetComposersReport(requirements)); types = new[] { typeof(Composer2) }; - composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of>(), Mock.Of()); + composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of(), Mock.Of()); Composed.Clear(); Assert.Throws(() => composers.Compose()); Console.WriteLine("throws:"); - composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of>(), Mock.Of()); + composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of(), Mock.Of()); requirements = composers.GetRequirements(false); Console.WriteLine(Composers.GetComposersReport(requirements)); types = new[] { typeof(Composer12) }; - composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of>(), Mock.Of()); + composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of(), Mock.Of()); Composed.Clear(); composers.Compose(); Assert.AreEqual(1, Composed.Count); @@ -337,7 +339,7 @@ namespace Umbraco.Tests.Components var composition = new Composition(register, MockTypeLoader(), Mock.Of(), MockRuntimeState(RuntimeLevel.Unknown), Configs, TestHelper.IOHelper, AppCaches.NoCache); var types = new[] { typeof(Composer6), typeof(Composer8) }; // 8 disables 7 which is not in the list - var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of>(), Mock.Of()); + var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of(), Mock.Of()); Composed.Clear(); composers.Compose(); Assert.AreEqual(2, Composed.Count); @@ -353,13 +355,13 @@ namespace Umbraco.Tests.Components var types = new[] { typeof(Composer26) }; var enableDisableAttributes = new[] { new DisableComposerAttribute(typeof(Composer26)) }; - var composers = new Composers(composition, types, enableDisableAttributes, Mock.Of>(), Mock.Of()); + var composers = new Composers(composition, types, enableDisableAttributes, Mock.Of(), Mock.Of()); Composed.Clear(); composers.Compose(); Assert.AreEqual(0, Composed.Count); // 26 gone types = new[] { typeof(Composer26), typeof(Composer27) }; // 26 disabled by assembly attribute, enabled by 27 - composers = new Composers(composition, types, enableDisableAttributes, Mock.Of>(), Mock.Of()); + composers = new Composers(composition, types, enableDisableAttributes, Mock.Of(), Mock.Of()); Composed.Clear(); composers.Compose(); Assert.AreEqual(2, Composed.Count); // both @@ -372,7 +374,7 @@ namespace Umbraco.Tests.Components { var ioHelper = TestHelper.IOHelper; var typeFinder = TestHelper.GetTypeFinder(); - var typeLoader = new TypeLoader(typeFinder, AppCaches.Disabled.RuntimeCache, new DirectoryInfo(ioHelper.MapPath("~/App_Data/TEMP")), Mock.Of>(), Mock.Of()); + var typeLoader = new TypeLoader(typeFinder, AppCaches.Disabled.RuntimeCache, new DirectoryInfo(ioHelper.MapPath("~/App_Data/TEMP")), Mock.Of(), Mock.Of()); var register = MockRegister(); var composition = new Composition(register, typeLoader, Mock.Of(), @@ -380,7 +382,7 @@ namespace Umbraco.Tests.Components var allComposers = typeLoader.GetTypes().ToList(); var types = allComposers.Where(x => x.FullName.StartsWith("Umbraco.Core.") || x.FullName.StartsWith("Umbraco.Web")).ToList(); - var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of>(), Mock.Of()); + var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of(), Mock.Of()); var requirements = composers.GetRequirements(); var report = Composers.GetComposersReport(requirements); Console.WriteLine(report); diff --git a/src/Umbraco.Tests/Composing/ComposingTestBase.cs b/src/Umbraco.Tests/Composing/ComposingTestBase.cs index 1977a5dfc1..dd605e1c6f 100644 --- a/src/Umbraco.Tests/Composing/ComposingTestBase.cs +++ b/src/Umbraco.Tests/Composing/ComposingTestBase.cs @@ -24,7 +24,7 @@ namespace Umbraco.Tests.Composing var typeFinder = TestHelper.GetTypeFinder(); var ioHelper = TestHelper.IOHelper; - TypeLoader = new TypeLoader(typeFinder, NoAppCache.Instance, new DirectoryInfo(ioHelper.MapPath("~/App_Data/TEMP")), ProfilingLogger, false, AssembliesToScan); + TypeLoader = new TypeLoader(typeFinder, NoAppCache.Instance, new DirectoryInfo(ioHelper.MapPath("~/App_Data/TEMP")), Mock.Of(), ProfilingLogger, false, AssembliesToScan); } [TearDown] diff --git a/src/Umbraco.Tests/Composing/CompositionTests.cs b/src/Umbraco.Tests/Composing/CompositionTests.cs index 380511eaaa..b018f7c63e 100644 --- a/src/Umbraco.Tests/Composing/CompositionTests.cs +++ b/src/Umbraco.Tests/Composing/CompositionTests.cs @@ -40,7 +40,7 @@ namespace Umbraco.Tests.Composing var logger = new ProfilingLogger(Mock.Of(), Mock.Of()); var typeFinder = TestHelper.GetTypeFinder(); var ioHelper = TestHelper.IOHelper; - var typeLoader = new TypeLoader(typeFinder, Mock.Of(), new DirectoryInfo(ioHelper.MapPath("~/App_Data/TEMP")), logger); + var typeLoader = new TypeLoader(typeFinder, Mock.Of(), new DirectoryInfo(ioHelper.MapPath("~/App_Data/TEMP")), Mock.Of(), logger); var composition = new Composition(mockedRegister, typeLoader, logger, Mock.Of(), TestHelper.GetConfigs(), TestHelper.IOHelper, AppCaches.NoCache); // create the factory, ensure it is the mocked factory diff --git a/src/Umbraco.Tests/Composing/TypeLoaderTests.cs b/src/Umbraco.Tests/Composing/TypeLoaderTests.cs index 980878d6f2..7894ee9fe8 100644 --- a/src/Umbraco.Tests/Composing/TypeLoaderTests.cs +++ b/src/Umbraco.Tests/Composing/TypeLoaderTests.cs @@ -30,7 +30,7 @@ namespace Umbraco.Tests.Composing var typeFinder = TestHelper.GetTypeFinder(); _typeLoader = new TypeLoader(typeFinder, NoAppCache.Instance, new DirectoryInfo(TestHelper.IOHelper.MapPath("~/App_Data/TEMP")), - new ProfilingLogger(Mock.Of(), Mock.Of()), false, + Mock.Of(), new ProfilingLogger(Mock.Of(), Mock.Of()), false, // for testing, we'll specify which assemblies are scanned for the PluginTypeResolver // TODO: Should probably update this so it only searches this assembly and add custom types to be found diff --git a/src/Umbraco.Tests/PublishedContent/PublishedContentSnapshotTestBase.cs b/src/Umbraco.Tests/PublishedContent/PublishedContentSnapshotTestBase.cs index abaf61917a..2e4c6e5fa0 100644 --- a/src/Umbraco.Tests/PublishedContent/PublishedContentSnapshotTestBase.cs +++ b/src/Umbraco.Tests/PublishedContent/PublishedContentSnapshotTestBase.cs @@ -46,11 +46,11 @@ namespace Umbraco.Tests.PublishedContent Composition.RegisterUnique(f => new PublishedModelFactory(f.GetInstance().GetTypes(), f.GetInstance())); } - protected override TypeLoader CreateTypeLoader(IIOHelper ioHelper, ITypeFinder typeFinder, IAppPolicyCache runtimeCache,IProfilingLogger pLogger, IHostingEnvironment hostingEnvironment) + protected override TypeLoader CreateTypeLoader(IIOHelper ioHelper, ITypeFinder typeFinder, IAppPolicyCache runtimeCache, Microsoft.Extensions.Logging.ILogger logger, IProfilingLogger pLogger, IHostingEnvironment hostingEnvironment) { - var baseLoader = base.CreateTypeLoader(ioHelper, typeFinder, runtimeCache, pLogger, hostingEnvironment); + var baseLoader = base.CreateTypeLoader(ioHelper, typeFinder, runtimeCache, logger, pLogger, hostingEnvironment); - return new TypeLoader(typeFinder, runtimeCache, new DirectoryInfo(hostingEnvironment.LocalTempPath), pLogger, false, + return new TypeLoader(typeFinder, runtimeCache, new DirectoryInfo(hostingEnvironment.LocalTempPath), logger, pLogger, false, // this is so the model factory looks into the test assembly baseLoader.AssembliesToScan .Union(new[] {typeof(PublishedContentMoreTests).Assembly}) diff --git a/src/Umbraco.Tests/PublishedContent/PublishedContentTests.cs b/src/Umbraco.Tests/PublishedContent/PublishedContentTests.cs index 7191d552f9..7ce365b84e 100644 --- a/src/Umbraco.Tests/PublishedContent/PublishedContentTests.cs +++ b/src/Umbraco.Tests/PublishedContent/PublishedContentTests.cs @@ -95,11 +95,11 @@ namespace Umbraco.Tests.PublishedContent } - protected override TypeLoader CreateTypeLoader(IIOHelper ioHelper, ITypeFinder typeFinder, IAppPolicyCache runtimeCache, IProfilingLogger pLogger, IHostingEnvironment hostingEnvironment) + protected override TypeLoader CreateTypeLoader(IIOHelper ioHelper, ITypeFinder typeFinder, IAppPolicyCache runtimeCache, Microsoft.Extensions.Logging.ILogger logger, IProfilingLogger pLogger, IHostingEnvironment hostingEnvironment) { - var baseLoader = base.CreateTypeLoader(ioHelper, typeFinder, runtimeCache, pLogger, hostingEnvironment); + var baseLoader = base.CreateTypeLoader(ioHelper, typeFinder, runtimeCache, logger, pLogger, hostingEnvironment); - return new TypeLoader(typeFinder, runtimeCache, new DirectoryInfo(hostingEnvironment.LocalTempPath), pLogger, false, + return new TypeLoader(typeFinder, runtimeCache, new DirectoryInfo(hostingEnvironment.LocalTempPath), logger, pLogger, false, // this is so the model factory looks into the test assembly baseLoader.AssembliesToScan .Union(new[] { typeof(PublishedContentTests).Assembly }) diff --git a/src/Umbraco.Tests/Runtimes/StandaloneTests.cs b/src/Umbraco.Tests/Runtimes/StandaloneTests.cs index 37a527542d..b2088f00d7 100644 --- a/src/Umbraco.Tests/Runtimes/StandaloneTests.cs +++ b/src/Umbraco.Tests/Runtimes/StandaloneTests.cs @@ -7,6 +7,7 @@ using System.Reflection; using System.Text; using System.Web; using Examine; +using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -58,6 +59,7 @@ namespace Umbraco.Tests.Runtimes ConfigurationManager.AppSettings[Constants.AppSettings.ConfigurationStatus] = ""; // FIXME: we need a better management of settings here (and, true config files?) + var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole()); // create the very basic and essential things we need var logger = new ConsoleLogger(new MessageTemplates()); var profiler = new LogProfiler(logger); @@ -69,7 +71,7 @@ namespace Umbraco.Tests.Runtimes var databaseFactory = new UmbracoDatabaseFactory(logger,globalSettings, connectionStrings, new Lazy(() => factory.GetInstance()), TestHelper.DbProviderFactoryCreator); var ioHelper = TestHelper.IOHelper; var hostingEnvironment = Mock.Of(); - var typeLoader = new TypeLoader(typeFinder, appCaches.RuntimeCache, new DirectoryInfo(ioHelper.MapPath("~/App_Data/TEMP")), profilingLogger); + var typeLoader = new TypeLoader(typeFinder, appCaches.RuntimeCache, new DirectoryInfo(ioHelper.MapPath("~/App_Data/TEMP")), loggerFactory.CreateLogger("TypeLoader"), profilingLogger); var mainDom = new SimpleMainDom(); var umbracoVersion = TestHelper.GetUmbracoVersion(); var backOfficeInfo = TestHelper.GetBackOfficeInfo(); @@ -84,7 +86,7 @@ namespace Umbraco.Tests.Runtimes composition.RegisterEssentials(logger, profiler, profilingLogger, mainDom, appCaches, databaseFactory, typeLoader, runtimeState, typeFinder, ioHelper, umbracoVersion, TestHelper.DbProviderFactoryCreator, hostingEnvironment, backOfficeInfo); // create the core runtime and have it compose itself - var coreRuntime = new CoreRuntime(configs, umbracoVersion, ioHelper, logger, profiler, new AspNetUmbracoBootPermissionChecker(), hostingEnvironment, backOfficeInfo, TestHelper.DbProviderFactoryCreator, TestHelper.MainDom, typeFinder, AppCaches.NoCache); + var coreRuntime = new CoreRuntime(configs, umbracoVersion, ioHelper, logger, loggerFactory, profiler, new AspNetUmbracoBootPermissionChecker(), hostingEnvironment, backOfficeInfo, TestHelper.DbProviderFactoryCreator, TestHelper.MainDom, typeFinder, AppCaches.NoCache); // determine actual runtime level runtimeState.DetermineRuntimeLevel(); @@ -95,7 +97,7 @@ namespace Umbraco.Tests.Runtimes var composerTypes = typeLoader.GetTypes() // all of them .Where(x => !x.FullName.StartsWith("Umbraco.Tests.")) // exclude test components .Where(x => x != typeof(WebInitialComposer) && x != typeof(WebFinalComposer)); // exclude web runtime - var composers = new Composers(composition, composerTypes, Enumerable.Empty(), profilingLogger); + var composers = new Composers(composition, composerTypes, Enumerable.Empty(), loggerFactory.CreateLogger("Composers"), profilingLogger); composers.Compose(); // must registers stuff that WebRuntimeComponent would register otherwise @@ -255,16 +257,15 @@ namespace Umbraco.Tests.Runtimes // - assigning the factory to Current.Factory // create the very basic and essential things we need + var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole()); var logger = new ConsoleLogger(new MessageTemplates()); - var composerLogger = new ConsoleLogger(new MessageTemplates()); - var typeLoaderLogger = new ConsoleLogger(new MessageTemplates()); var profiler = Mock.Of(); var profilingLogger = new ProfilingLogger(logger, profiler); var appCaches = AppCaches.Disabled; var databaseFactory = Mock.Of(); var typeFinder = TestHelper.GetTypeFinder(); var ioHelper = TestHelper.IOHelper; - var typeLoader = new TypeLoader(typeFinder, appCaches.RuntimeCache, new DirectoryInfo(ioHelper.MapPath("~/App_Data/TEMP")), typeLoaderLogger, profilingLogger); + var typeLoader = new TypeLoader(typeFinder, appCaches.RuntimeCache, new DirectoryInfo(ioHelper.MapPath("~/App_Data/TEMP")), loggerFactory.CreateLogger("TypeLoader"), profilingLogger); var runtimeState = Mock.Of(); var hostingEnvironment = Mock.Of(); var backOfficeInfo = TestHelper.GetBackOfficeInfo(); @@ -280,7 +281,7 @@ namespace Umbraco.Tests.Runtimes composition.RegisterEssentials(logger, profiler, profilingLogger, mainDom, appCaches, databaseFactory, typeLoader, runtimeState, typeFinder, ioHelper, umbracoVersion, TestHelper.DbProviderFactoryCreator, hostingEnvironment, backOfficeInfo); // create the core runtime and have it compose itself - var coreRuntime = new CoreRuntime(configs, umbracoVersion, ioHelper, logger, profiler, new AspNetUmbracoBootPermissionChecker(), hostingEnvironment, backOfficeInfo, TestHelper.DbProviderFactoryCreator, TestHelper.MainDom, typeFinder, AppCaches.NoCache); + var coreRuntime = new CoreRuntime(configs, umbracoVersion, ioHelper, logger, loggerFactory, profiler, new AspNetUmbracoBootPermissionChecker(), hostingEnvironment, backOfficeInfo, TestHelper.DbProviderFactoryCreator, TestHelper.MainDom, typeFinder, AppCaches.NoCache); // get the components // all of them? @@ -290,7 +291,7 @@ namespace Umbraco.Tests.Runtimes .Where(x => !x.FullName.StartsWith("Umbraco.Tests")); // single? //var componentTypes = new[] { typeof(CoreRuntimeComponent) }; - var composers = new Composers(composition, composerTypes, Enumerable.Empty(), profilingLogger); + var composers = new Composers(composition, composerTypes, Enumerable.Empty(), loggerFactory.CreateLogger("Composers"), profilingLogger); // get components to compose themselves composers.Compose(); diff --git a/src/Umbraco.Tests/TestHelpers/BaseUsingSqlCeSyntax.cs b/src/Umbraco.Tests/TestHelpers/BaseUsingSqlCeSyntax.cs index 2ad52856df..46495d6bc5 100644 --- a/src/Umbraco.Tests/TestHelpers/BaseUsingSqlCeSyntax.cs +++ b/src/Umbraco.Tests/TestHelpers/BaseUsingSqlCeSyntax.cs @@ -42,7 +42,7 @@ namespace Umbraco.Tests.TestHelpers var typeFinder = TestHelper.GetTypeFinder(); var typeLoader = new TypeLoader(typeFinder, NoAppCache.Instance, new DirectoryInfo(ioHelper.MapPath("~/App_Data/TEMP")), - Mock.Of>(), + Mock.Of(), logger, false); diff --git a/src/Umbraco.Tests/Testing/UmbracoTestBase.cs b/src/Umbraco.Tests/Testing/UmbracoTestBase.cs index 6f57db554e..4fec590de1 100644 --- a/src/Umbraco.Tests/Testing/UmbracoTestBase.cs +++ b/src/Umbraco.Tests/Testing/UmbracoTestBase.cs @@ -4,12 +4,15 @@ using System.Globalization; using System.IO; using System.Linq; using System.Reflection; +using System.Web.Http.Validation; using System.Web.Routing; using System.Web.Security; using System.Xml.Linq; using Examine; +using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; +using Serilog; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Composing; @@ -60,6 +63,7 @@ using Umbraco.Web.Trees; using Current = Umbraco.Web.Composing.Current; using Umbraco.Tests.Common; using Umbraco.Core.Media; +using ILogger = Umbraco.Core.Logging.ILogger; namespace Umbraco.Tests.Testing { @@ -166,7 +170,7 @@ namespace Umbraco.Tests.Testing // FIXME: align to runtimes & components - don't redo everything here !!!! Yes this is getting painful - var (logger, profiler) = GetLoggers(Options.Logger); + var (logger, msLogger, profiler) = GetLoggers(Options.Logger); var proflogger = new ProfilingLogger(logger, profiler); IOHelper = TestHelper.IOHelper; @@ -181,7 +185,7 @@ namespace Umbraco.Tests.Testing LocalizedTextService = new LocalizedTextService(new Dictionary>(), logger); - var typeLoader = GetTypeLoader(IOHelper, TypeFinder, appCaches.RuntimeCache, HostingEnvironment, logger, proflogger, Options.TypeLoader); + var typeLoader = GetTypeLoader(IOHelper, TypeFinder, appCaches.RuntimeCache, HostingEnvironment, msLogger, proflogger, Options.TypeLoader); var register = TestHelper.GetRegister(); @@ -252,30 +256,35 @@ namespace Umbraco.Tests.Testing #region Compose - protected virtual (ILogger, IProfiler) GetLoggers(UmbracoTestOptions.Logger option) + protected virtual (ILogger, Microsoft.Extensions.Logging.ILogger, IProfiler) GetLoggers(UmbracoTestOptions.Logger option) { + // TODO: Fix this, give the microsoft loggers a name ILogger logger; + Microsoft.Extensions.Logging.ILogger msLogger; IProfiler profiler; switch (option) { case UmbracoTestOptions.Logger.Mock: logger = Mock.Of(); + msLogger = Mock.Of(); profiler = Mock.Of(); break; case UmbracoTestOptions.Logger.Serilog: logger = new SerilogLogger(new FileInfo(TestHelper.MapPathForTestFiles("~/unit-test.config"))); + msLogger = LoggerFactory.Create(builder => builder.AddSerilog()).CreateLogger(""); profiler = new LogProfiler(logger); break; case UmbracoTestOptions.Logger.Console: logger = new ConsoleLogger(new MessageTemplates()); + msLogger = LoggerFactory.Create(builder => builder.AddConsole()).CreateLogger(""); profiler = new LogProfiler(logger); break; default: throw new NotSupportedException($"Logger option {option} is not supported."); } - return (logger, profiler); + return (logger, msLogger, profiler); } protected virtual AppCaches GetAppCaches() @@ -369,7 +378,7 @@ namespace Umbraco.Tests.Testing .ComposeCoreMappingProfiles(); } - protected virtual TypeLoader GetTypeLoader(IIOHelper ioHelper, ITypeFinder typeFinder, IAppPolicyCache runtimeCache, IHostingEnvironment hostingEnvironment, ILogger logger, IProfilingLogger pLogger, UmbracoTestOptions.TypeLoader option) + protected virtual TypeLoader GetTypeLoader(IIOHelper ioHelper, ITypeFinder typeFinder, IAppPolicyCache runtimeCache, IHostingEnvironment hostingEnvironment, Microsoft.Extensions.Logging.ILogger logger, IProfilingLogger pLogger, UmbracoTestOptions.TypeLoader option) { switch (option) { @@ -384,13 +393,13 @@ namespace Umbraco.Tests.Testing } } - protected virtual TypeLoader CreateTypeLoader(IIOHelper ioHelper, ITypeFinder typeFinder, IAppPolicyCache runtimeCache, ILogger logger, IProfilingLogger pLogger, IHostingEnvironment hostingEnvironment) + protected virtual TypeLoader CreateTypeLoader(IIOHelper ioHelper, ITypeFinder typeFinder, IAppPolicyCache runtimeCache, Microsoft.Extensions.Logging.ILogger logger, IProfilingLogger pLogger, IHostingEnvironment hostingEnvironment) { return CreateCommonTypeLoader(typeFinder, runtimeCache, logger, pLogger, hostingEnvironment); } // common to all tests = cannot be overriden - private static TypeLoader CreateCommonTypeLoader(ITypeFinder typeFinder, IAppPolicyCache runtimeCache, ILogger logger, IProfilingLogger pLogger, IHostingEnvironment hostingEnvironment) + private static TypeLoader CreateCommonTypeLoader(ITypeFinder typeFinder, IAppPolicyCache runtimeCache, Microsoft.Extensions.Logging.ILogger logger, IProfilingLogger pLogger, IHostingEnvironment hostingEnvironment) { return new TypeLoader(typeFinder, runtimeCache, new DirectoryInfo(hostingEnvironment.LocalTempPath), logger, pLogger, false, new[] { diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj index f1db4b619f..191a70d765 100644 --- a/src/Umbraco.Tests/Umbraco.Tests.csproj +++ b/src/Umbraco.Tests/Umbraco.Tests.csproj @@ -95,6 +95,9 @@ + + 3.1.8 + diff --git a/src/Umbraco.Tests/UmbracoExamine/IndexInitializer.cs b/src/Umbraco.Tests/UmbracoExamine/IndexInitializer.cs index 9f33e33000..81964eb714 100644 --- a/src/Umbraco.Tests/UmbracoExamine/IndexInitializer.cs +++ b/src/Umbraco.Tests/UmbracoExamine/IndexInitializer.cs @@ -6,6 +6,7 @@ using Examine.LuceneEngine.Providers; using Lucene.Net.Analysis; using Lucene.Net.Analysis.Standard; using Lucene.Net.Store; +using Microsoft.Extensions.Logging; using Moq; using Umbraco.Core; using Umbraco.Core.Hosting; @@ -23,6 +24,7 @@ using Umbraco.Core.Strings; using Umbraco.Examine; using Umbraco.Tests.TestHelpers; using IContentService = Umbraco.Core.Services.IContentService; +using ILogger = Umbraco.Core.Logging.ILogger; using IMediaService = Umbraco.Core.Services.IMediaService; using Version = Lucene.Net.Util.Version; @@ -161,9 +163,9 @@ namespace Umbraco.Tests.UmbracoExamine return new ProfilingLogger(Mock.Of(), Mock.Of()); } - public static ILogger GetMockLogger() + public static Core.Logging.ILogger GetMockLogger() { - return Mock.Of>(); + return Mock.Of>(); } public static UmbracoContentIndex GetUmbracoIndexer( @@ -190,10 +192,9 @@ namespace Umbraco.Tests.UmbracoExamine new UmbracoFieldDefinitionCollection(), analyzer, profilingLogger, - GetMockLogger(), - GetMockLogger(), - GetMockLogger(), - hostingEnvironment, + Mock.Of(), + Mock.Of(), + hostingEnvironment, runtimeState, languageService, validator); diff --git a/src/Umbraco.Tests/Web/UmbracoHelperTests.cs b/src/Umbraco.Tests/Web/UmbracoHelperTests.cs index 80cc45a412..38e6657892 100644 --- a/src/Umbraco.Tests/Web/UmbracoHelperTests.cs +++ b/src/Umbraco.Tests/Web/UmbracoHelperTests.cs @@ -11,6 +11,7 @@ using Umbraco.Tests.TestHelpers; using Umbraco.Web; using Current = Umbraco.Web.Composing.Current; + namespace Umbraco.Tests.Web { @@ -36,7 +37,7 @@ namespace Umbraco.Tests.Web typeFinder, NoAppCache.Instance, new DirectoryInfo(ioHelper.MapPath("~/App_Data/TEMP")), - Mock.Of>(), + Mock.Of(), new ProfilingLogger(Mock.Of(), Mock.Of()) ) ); diff --git a/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs b/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs index 5ab13b72ab..2a59a0fa95 100644 --- a/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs +++ b/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs @@ -207,7 +207,7 @@ namespace Umbraco.Extensions AppCaches appCaches, ILoggingConfiguration loggingConfiguration, // TODO: Yep that's extremely ugly - Func getRuntime, + Func getRuntime, out IFactory factory) { if (services is null) throw new ArgumentNullException(nameof(services)); @@ -234,7 +234,9 @@ namespace Umbraco.Extensions // into the container. This is not true for `Configs` but we should do that too, see comments in // `RegisterEssentials`. var serviceProvider = services.BuildServiceProvider(); + var configs = serviceProvider.GetService(); + var loggerFactory = serviceProvider.GetService(); var dbProviderFactoryCreator = serviceProvider.GetRequiredService(); CreateCompositionRoot(services, @@ -252,6 +254,7 @@ namespace Umbraco.Extensions umbracoVersion, ioHelper, logger, + loggerFactory, profiler, hostingEnvironment, backOfficeInfo, @@ -273,7 +276,7 @@ namespace Umbraco.Extensions } private static IRuntime GetCoreRuntime( - Configs configs, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, Core.Logging.ILogger logger, + Configs configs, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, Core.Logging.ILogger logger, ILoggerFactory loggerFactory, IProfiler profiler, Core.Hosting.IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo, ITypeFinder typeFinder, AppCaches appCaches, IDbProviderFactoryCreator dbProviderFactoryCreator) { @@ -295,6 +298,7 @@ namespace Umbraco.Extensions umbracoVersion, ioHelper, logger, + loggerFactory, profiler, new AspNetCoreBootPermissionsChecker(), hostingEnvironment, diff --git a/src/Umbraco.Web.Common/Install/InstallApiController.cs b/src/Umbraco.Web.Common/Install/InstallApiController.cs index a9d2fecfec..83134ba803 100644 --- a/src/Umbraco.Web.Common/Install/InstallApiController.cs +++ b/src/Umbraco.Web.Common/Install/InstallApiController.cs @@ -32,10 +32,10 @@ namespace Umbraco.Web.Common.Install private readonly IUmbracoApplicationLifetime _umbracoApplicationLifetime; private readonly BackOfficeSignInManager _backOfficeSignInManager; private readonly InstallStepCollection _installSteps; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IProfilingLogger _proflog; - public InstallApiController(DatabaseBuilder databaseBuilder, IProfilingLogger proflog, + public InstallApiController(DatabaseBuilder databaseBuilder, IProfilingLogger proflog, ILogger logger, InstallHelper installHelper, InstallStepCollection installSteps, InstallStatusTracker installStatusTracker, IUmbracoApplicationLifetime umbracoApplicationLifetime, BackOfficeSignInManager backOfficeSignInManager) { @@ -46,7 +46,7 @@ namespace Umbraco.Web.Common.Install _umbracoApplicationLifetime = umbracoApplicationLifetime; _backOfficeSignInManager = backOfficeSignInManager; InstallHelper = installHelper; - _logger = _proflog; + _logger = logger; } @@ -155,7 +155,7 @@ namespace Umbraco.Web.Common.Install } catch (Exception ex) { - _logger.LogError(ex, "An error occurred during installation step {Step}", + _logger.LogError(ex, "An error occurred during installation step {Step}", step.Name); if (ex is TargetInvocationException && ex.InnerException != null) @@ -268,7 +268,7 @@ namespace Umbraco.Web.Common.Install } catch (Exception ex) { - _logger.LogError(ex, "Checking if step requires execution ({Step}) failed.", + _logger.LogError(ex, "Checking if step requires execution ({Step}) failed.", step.Name); throw; } @@ -299,7 +299,7 @@ namespace Umbraco.Web.Common.Install } catch (Exception ex) { - _logger.LogError(ex, "Installation step {Step} failed.", step.Name); + _logger.LogError(ex, "Installation step {Step} failed.", step.Name); throw; } } diff --git a/src/Umbraco.Web/Editors/AuthenticationController.cs b/src/Umbraco.Web/Editors/AuthenticationController.cs index 021128d551..bacd533560 100644 --- a/src/Umbraco.Web/Editors/AuthenticationController.cs +++ b/src/Umbraco.Web/Editors/AuthenticationController.cs @@ -46,6 +46,7 @@ namespace Umbraco.Web.Editors private BackOfficeSignInManager _signInManager; private readonly IUserPasswordConfiguration _passwordConfiguration; private readonly IHostingEnvironment _hostingEnvironment; + private readonly ILogger _logger; private readonly IRuntimeState _runtimeState; private readonly ISecuritySettings _securitySettings; private readonly IRequestAccessor _requestAccessor; @@ -59,17 +60,19 @@ namespace Umbraco.Web.Editors ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, - IProfilingLogger logger, + IProfilingLogger pLogger, + ILogger logger, IRuntimeState runtimeState, UmbracoMapper umbracoMapper, ISecuritySettings securitySettings, IPublishedUrlProvider publishedUrlProvider, IRequestAccessor requestAccessor, IEmailSender emailSender) - : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoMapper, publishedUrlProvider) + : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, pLogger, runtimeState, umbracoMapper, publishedUrlProvider) { _passwordConfiguration = passwordConfiguration ?? throw new ArgumentNullException(nameof(passwordConfiguration)); _hostingEnvironment = hostingEnvironment ?? throw new ArgumentNullException(nameof(hostingEnvironment)); + _logger = logger; _runtimeState = runtimeState ?? throw new ArgumentNullException(nameof(runtimeState)); _securitySettings = securitySettings ?? throw new ArgumentNullException(nameof(securitySettings)); _requestAccessor = requestAccessor ?? throw new ArgumentNullException(nameof(securitySettings)); @@ -117,7 +120,7 @@ namespace Umbraco.Web.Editors var userId = await SignInManager.GetVerifiedUserIdAsync(); if (string.IsNullOrWhiteSpace(userId)) { - Logger.LogWarning("Get2FAProviders :: No verified user found, returning 404"); + _logger.LogDebug("Get2FAProviders :: No verified user found, returning 404"); throw new HttpResponseException(HttpStatusCode.NotFound); } @@ -136,7 +139,7 @@ namespace Umbraco.Web.Editors var userId = await SignInManager.GetVerifiedUserIdAsync(); if (string.IsNullOrWhiteSpace(userId)) { - Logger.LogWarning("Get2FAProviders :: No verified user found, returning 404"); + _logger.LogDebug("Get2FAProviders :: No verified user found, returning 404"); throw new HttpResponseException(HttpStatusCode.NotFound); } @@ -159,7 +162,7 @@ namespace Umbraco.Web.Editors var userName = await SignInManager.GetVerifiedUserNameAsync(); if (userName == null) { - Logger.LogWarning("Get2FAProviders :: No verified user found, returning 404"); + _logger.LogDebug("Get2FAProviders :: No verified user found, returning 404"); throw new HttpResponseException(HttpStatusCode.NotFound); } diff --git a/src/Umbraco.Web/Macros/MacroRenderer.cs b/src/Umbraco.Web/Macros/MacroRenderer.cs index 9e9bbcd0e5..dd705cef57 100644 --- a/src/Umbraco.Web/Macros/MacroRenderer.cs +++ b/src/Umbraco.Web/Macros/MacroRenderer.cs @@ -19,6 +19,7 @@ namespace Umbraco.Web.Macros internal class MacroRenderer : IMacroRenderer { private readonly IProfilingLogger _plogger; + private readonly ILogger _logger; private readonly IUmbracoContextAccessor _umbracoContextAccessor; private readonly IContentSettings _contentSettings; private readonly ILocalizedTextService _textService; @@ -34,6 +35,7 @@ namespace Umbraco.Web.Macros public MacroRenderer( IProfilingLogger plogger, + ILogger logger, IUmbracoContextAccessor umbracoContextAccessor, IContentSettings contentSettings, ILocalizedTextService textService, @@ -44,9 +46,10 @@ namespace Umbraco.Web.Macros IMemberUserKeyProvider memberUserKeyProvider, ISessionManager sessionManager, IRequestAccessor requestAccessor, - IHttpContextAccessor httpContextAccessor) + IHttpContextAccessor httpContextAccessor) { _plogger = plogger ?? throw new ArgumentNullException(nameof(plogger)); + _logger = logger; _umbracoContextAccessor = umbracoContextAccessor ?? throw new ArgumentNullException(nameof(umbracoContextAccessor)); _contentSettings = contentSettings ?? throw new ArgumentNullException(nameof(contentSettings)); _textService = textService; @@ -109,7 +112,7 @@ namespace Umbraco.Web.Macros if (macroContent == null) return null; - _plogger.Debug("Macro content loaded from cache '{MacroCacheId}'", model.CacheIdentifier); + _logger.LogDebug("Macro content loaded from cache '{MacroCacheId}'", model.CacheIdentifier); // ensure that the source has not changed // note: does not handle dependencies, and never has @@ -118,13 +121,13 @@ namespace Umbraco.Web.Macros { if (macroSource.Exists == false) { - _plogger.Debug("Macro source does not exist anymore, ignore cache."); + _logger.LogDebug("Macro source does not exist anymore, ignore cache."); return null; } if (macroContent.Date < macroSource.LastWriteTime) { - _plogger.Debug("Macro source has changed, ignore cache."); + _logger.LogDebug("Macro source has changed, ignore cache."); return null; } } @@ -158,7 +161,7 @@ namespace Umbraco.Web.Macros new TimeSpan(0, 0, model.CacheDuration) ); - _plogger.Debug("Macro content saved to cache '{MacroCacheId}'", model.CacheIdentifier); + _logger.LogDebug("Macro content saved to cache '{MacroCacheId}'", model.CacheIdentifier); } // gets the macro source file name @@ -280,7 +283,7 @@ namespace Umbraco.Web.Macros } catch (Exception e) { - _plogger.LogWarning(e, "Failed {MsgIn}", msgIn); + _logger.LogWarning(e, "Failed {MsgIn}", msgIn); var macroErrorEventArgs = new MacroErrorEventArgs { diff --git a/src/Umbraco.Web/Mvc/UmbracoController.cs b/src/Umbraco.Web/Mvc/UmbracoController.cs index 9cfd93ba9d..139257904f 100644 --- a/src/Umbraco.Web/Mvc/UmbracoController.cs +++ b/src/Umbraco.Web/Mvc/UmbracoController.cs @@ -73,18 +73,19 @@ namespace Umbraco.Web.Mvc Current.Factory.GetInstance(), Current.Factory.GetInstance(), Current.Factory.GetInstance(), - Current.Factory.GetInstance() + Current.Factory.GetInstance(), + Current.Factory.GetInstance() ) { } - protected UmbracoController(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ServiceContext services, AppCaches appCaches, IProfilingLogger profilingLogger) + protected UmbracoController(IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ServiceContext services, AppCaches appCaches, IProfilingLogger profilingLogger, ILogger logger) { GlobalSettings = globalSettings; UmbracoContextAccessor = umbracoContextAccessor; Services = services; AppCaches = appCaches; - Logger = profilingLogger; + Logger = logger; ProfilingLogger = profilingLogger; } } diff --git a/src/Umbraco.Web/UmbracoHttpHandler.cs b/src/Umbraco.Web/UmbracoHttpHandler.cs index eb219f82d2..042cc794b3 100644 --- a/src/Umbraco.Web/UmbracoHttpHandler.cs +++ b/src/Umbraco.Web/UmbracoHttpHandler.cs @@ -14,13 +14,13 @@ namespace Umbraco.Web private UrlHelper _url; protected UmbracoHttpHandler() - : this(Current.UmbracoContextAccessor, Current.Services, Current.ProfilingLogger) + : this(Current.UmbracoContextAccessor, Current.Services, Current.Logger, Current.ProfilingLogger) { } - protected UmbracoHttpHandler(IUmbracoContextAccessor umbracoContextAccessor,ServiceContext service, IProfilingLogger plogger) + protected UmbracoHttpHandler(IUmbracoContextAccessor umbracoContextAccessor,ServiceContext service, ILogger logger, IProfilingLogger plogger) { UmbracoContextAccessor = umbracoContextAccessor; - Logger = plogger; + Logger = logger; ProfilingLogger = plogger; Services = service; } diff --git a/src/Umbraco.Web/UmbracoWebService.cs b/src/Umbraco.Web/UmbracoWebService.cs index 916ab5ad8e..dc7bf3f9e7 100644 --- a/src/Umbraco.Web/UmbracoWebService.cs +++ b/src/Umbraco.Web/UmbracoWebService.cs @@ -21,9 +21,9 @@ namespace Umbraco.Web { private UrlHelper _url; - protected UmbracoWebService(IProfilingLogger profilingLogger, IUmbracoContextAccessor umbracoContextAccessor, ServiceContext services, IGlobalSettings globalSettings) + protected UmbracoWebService(ILogger logger, IProfilingLogger profilingLogger, IUmbracoContextAccessor umbracoContextAccessor, ServiceContext services, IGlobalSettings globalSettings) { - Logger = profilingLogger; + Logger = logger; ProfilingLogger = profilingLogger; UmbracoContextAccessor = umbracoContextAccessor; Services = services; @@ -31,7 +31,7 @@ namespace Umbraco.Web } protected UmbracoWebService() - : this(Current.ProfilingLogger, Current.UmbracoContextAccessor, Current.Services, Current.Configs.Global()) + : this(Current.Logger, Current.ProfilingLogger, Current.UmbracoContextAccessor, Current.Services, Current.Configs.Global()) { }