diff --git a/src/Umbraco.Core/Composing/ComponentCollection.cs b/src/Umbraco.Core/Composing/ComponentCollection.cs index 62b240f10f..509962599c 100644 --- a/src/Umbraco.Core/Composing/ComponentCollection.cs +++ b/src/Umbraco.Core/Composing/ComponentCollection.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core.Logging; namespace Umbraco.Core.Composing @@ -12,22 +13,24 @@ namespace Umbraco.Core.Composing { private const int LogThresholdMilliseconds = 100; - private readonly IProfilingLogger _logger; + private readonly IProfilingLogger _profilingLogger; + private readonly ILogger _logger; - public ComponentCollection(IEnumerable items, IProfilingLogger logger) + public ComponentCollection(IEnumerable items, IProfilingLogger profilingLogger, ILogger logger) : base(items) { + _profilingLogger = profilingLogger; _logger = logger; } public void Initialize() { - using (_logger.DebugDuration($"Initializing. (log components when >{LogThresholdMilliseconds}ms)", "Initialized.")) + using (_profilingLogger.DebugDuration($"Initializing. (log components when >{LogThresholdMilliseconds}ms)", "Initialized.")) { foreach (var component in this) { var componentType = component.GetType(); - using (_logger.DebugDuration($"Initializing {componentType.FullName}.", $"Initialized {componentType.FullName}.", thresholdMilliseconds: LogThresholdMilliseconds)) + using (_profilingLogger.DebugDuration($"Initializing {componentType.FullName}.", $"Initialized {componentType.FullName}.", thresholdMilliseconds: LogThresholdMilliseconds)) { component.Initialize(); } @@ -37,12 +40,12 @@ namespace Umbraco.Core.Composing public void Terminate() { - using (_logger.DebugDuration($"Terminating. (log components when >{LogThresholdMilliseconds}ms)", "Terminated.")) + using (_profilingLogger.DebugDuration($"Terminating. (log components when >{LogThresholdMilliseconds}ms)", "Terminated.")) { foreach (var component in this.Reverse()) // terminate components in reverse order { var componentType = component.GetType(); - using (_logger.DebugDuration($"Terminating {componentType.FullName}.", $"Terminated {componentType.FullName}.", thresholdMilliseconds: LogThresholdMilliseconds)) + using (_profilingLogger.DebugDuration($"Terminating {componentType.FullName}.", $"Terminated {componentType.FullName}.", thresholdMilliseconds: LogThresholdMilliseconds)) { try { @@ -51,7 +54,7 @@ namespace Umbraco.Core.Composing } catch (Exception ex) { - _logger.Error(ex, "Error while terminating component {ComponentType}.", componentType.FullName); + _logger.LogError(ex, "Error while terminating component {ComponentType}.", componentType.FullName); } } } diff --git a/src/Umbraco.Core/Composing/Composers.cs b/src/Umbraco.Core/Composing/Composers.cs index 004c2527e6..880b91c61b 100644 --- a/src/Umbraco.Core/Composing/Composers.cs +++ b/src/Umbraco.Core/Composing/Composers.cs @@ -5,6 +5,7 @@ using System.Reflection; using System.Text; using Umbraco.Core.Collections; using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; namespace Umbraco.Core.Composing { @@ -16,7 +17,8 @@ namespace Umbraco.Core.Composing public class Composers { private readonly Composition _composition; - private readonly IProfilingLogger _logger; + private readonly ILogger _logger; + private readonly IProfilingLogger _profileLogger; private readonly IEnumerable _composerTypes; private readonly IEnumerable _enableDisableAttributes; @@ -28,7 +30,8 @@ namespace Umbraco.Core.Composing /// The composition. /// The types. /// The and/or attributes. - /// The profiling logger. + /// The logger. + /// The profiling logger. /// composition /// or /// composerTypes @@ -36,13 +39,13 @@ namespace Umbraco.Core.Composing /// enableDisableAttributes /// or /// logger - - public Composers(Composition composition, IEnumerable composerTypes, IEnumerable enableDisableAttributes, IProfilingLogger logger) + 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)); _enableDisableAttributes = enableDisableAttributes ?? throw new ArgumentNullException(nameof(enableDisableAttributes)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); + _profileLogger = profileLogger; } private class EnableInfo @@ -61,19 +64,19 @@ namespace Umbraco.Core.Composing IEnumerable orderedComposerTypes; - using (_logger.DebugDuration("Preparing composer types.", "Prepared composer types.")) + using (_profileLogger.DebugDuration("Preparing composer types.", "Prepared composer types.")) { orderedComposerTypes = PrepareComposerTypes(); } var composers = InstantiateComposers(orderedComposerTypes); - using (_logger.DebugDuration($"Composing composers. (log when >{LogThresholdMilliseconds}ms)", "Composed composers.")) + using (_profileLogger.DebugDuration($"Composing composers. (log when >{LogThresholdMilliseconds}ms)", "Composed composers.")) { foreach (var composer in composers) { var componentType = composer.GetType(); - using (_logger.DebugDuration($"Composing {componentType.FullName}.", $"Composed {componentType.FullName}.", thresholdMilliseconds: LogThresholdMilliseconds)) + using (_profileLogger.DebugDuration($"Composing {componentType.FullName}.", $"Composed {componentType.FullName}.", thresholdMilliseconds: LogThresholdMilliseconds)) { composer.Compose(_composition); } @@ -92,7 +95,7 @@ namespace Umbraco.Core.Composing // bit verbose but should help for troubleshooting //var text = "Ordered Composers: " + Environment.NewLine + string.Join(Environment.NewLine, sortedComposerTypes) + Environment.NewLine; - _logger.Debug("Ordered Composers: {SortedComposerTypes}", sortedComposerTypes); + _logger.LogDebug("Ordered Composers: {SortedComposerTypes}", sortedComposerTypes); return sortedComposerTypes; } @@ -183,8 +186,8 @@ namespace Umbraco.Core.Composing catch (Exception e) { // in case of an error, force-dump everything to log - _logger.Info("Composer Report:\r\n{ComposerReport}", GetComposersReport(requirements)); - _logger.Error(e, "Failed to sort composers."); + _logger.LogInformation("Composer Report:\r\n{ComposerReport}", GetComposersReport(requirements)); + _logger.LogError(e, "Failed to sort composers."); throw; } @@ -370,7 +373,7 @@ namespace Umbraco.Core.Composing return (IComposer) ctor.Invoke(Array.Empty()); } - using (_logger.DebugDuration("Instantiating composers.", "Instantiated composers.")) + using (_profileLogger.DebugDuration("Instantiating composers.", "Instantiated composers.")) { return types.Select(InstantiateComposer).ToArray(); } diff --git a/src/Umbraco.Core/Composing/Current.cs b/src/Umbraco.Core/Composing/Current.cs index 856be9f414..003f3ee6a2 100644 --- a/src/Umbraco.Core/Composing/Current.cs +++ b/src/Umbraco.Core/Composing/Current.cs @@ -1,18 +1,20 @@ using System; using System.Runtime.CompilerServices; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Hosting; using Umbraco.Core.IO; using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging.Abstractions; namespace Umbraco.Composing { public static class Current { - private static ILogger _logger = new NullLogger(); + private static ILogger _logger = new NullLogger(); private static IIOHelper _ioHelper; private static IHostingEnvironment _hostingEnvironment; private static IBackOfficeInfo _backOfficeInfo; @@ -20,8 +22,7 @@ namespace Umbraco.Composing private static SecuritySettings _securitySettings; private static GlobalSettings _globalSettings; - public static ILogger Logger => EnsureInitialized(_logger); - + public static ILogger Logger => EnsureInitialized(_logger); public static IIOHelper IOHelper => EnsureInitialized(_ioHelper); public static IHostingEnvironment HostingEnvironment => EnsureInitialized(_hostingEnvironment); public static IBackOfficeInfo BackOfficeInfo => EnsureInitialized(_backOfficeInfo); @@ -41,7 +42,7 @@ namespace Umbraco.Composing } public static void Initialize( - ILogger logger, + ILogger logger, SecuritySettings securitySettings, GlobalSettings globalSettings, IIOHelper ioHelper, diff --git a/src/Umbraco.Core/Composing/TypeFinder.cs b/src/Umbraco.Core/Composing/TypeFinder.cs index 3427c55731..4cfcd9090c 100644 --- a/src/Umbraco.Core/Composing/TypeFinder.cs +++ b/src/Umbraco.Core/Composing/TypeFinder.cs @@ -6,7 +6,7 @@ using System.Reflection; using System.Security; using System.Text; using Umbraco.Core.Configuration.UmbracoSettings; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; namespace Umbraco.Core.Composing { @@ -14,7 +14,7 @@ namespace Umbraco.Core.Composing /// public class TypeFinder : ITypeFinder { - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IAssemblyProvider _assemblyProvider; private readonly IRuntimeHash _runtimeHash; private volatile HashSet _localFilteredAssemblyCache; @@ -26,7 +26,7 @@ namespace Umbraco.Core.Composing // used for benchmark tests internal bool QueryWithReferencingAssemblies = true; - public TypeFinder(ILogger logger, IAssemblyProvider assemblyProvider, IRuntimeHash runtimeHash, ITypeFinderConfig typeFinderConfig = null) + public TypeFinder(ILogger logger, IAssemblyProvider assemblyProvider, IRuntimeHash runtimeHash, ITypeFinderConfig typeFinderConfig = null) { _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _assemblyProvider = assemblyProvider; @@ -297,7 +297,7 @@ namespace Umbraco.Core.Composing } catch (TypeLoadException ex) { - _logger.Error(typeof(TypeFinder), ex, "Could not query types on {Assembly} assembly, this is most likely due to this assembly not being compatible with the current Umbraco version", assembly); + _logger.LogError(ex, "Could not query types on {Assembly} assembly, this is most likely due to this assembly not being compatible with the current Umbraco version", assembly); continue; } @@ -372,7 +372,7 @@ namespace Umbraco.Core.Composing } catch (TypeLoadException ex) { - _logger.Error(typeof(TypeFinder), ex, "Could not query types on {Assembly} assembly, this is most likely due to this assembly not being compatible with the current Umbraco version", assembly); + _logger.LogError(ex, "Could not query types on {Assembly} assembly, this is most likely due to this assembly not being compatible with the current Umbraco version", assembly); continue; } @@ -442,7 +442,7 @@ namespace Umbraco.Core.Composing if (_notifiedLoadExceptionAssemblies.Contains(a.FullName) == false) { _notifiedLoadExceptionAssemblies.Add(a.FullName); - _logger.Warn(typeof (TypeFinder), ex, "Could not load all types from {TypeName}.", a.GetName().Name); + _logger.LogWarning(ex, "Could not load all types from {TypeName}.", a.GetName().Name); } } return rex.Types.WhereNotNull().ToArray(); diff --git a/src/Umbraco.Core/Composing/TypeLoader.cs b/src/Umbraco.Core/Composing/TypeLoader.cs index 1d40149936..c7bac236a6 100644 --- a/src/Umbraco.Core/Composing/TypeLoader.cs +++ b/src/Umbraco.Core/Composing/TypeLoader.cs @@ -11,6 +11,7 @@ using Umbraco.Core.Collections; using Umbraco.Core.IO; using Umbraco.Core.Logging; using File = System.IO.File; +using Microsoft.Extensions.Logging; namespace Umbraco.Core.Composing { @@ -28,7 +29,8 @@ namespace Umbraco.Core.Composing private const string CacheKey = "umbraco-types.list"; private readonly IAppPolicyCache _runtimeCache; - private readonly IProfilingLogger _logger; + private readonly ILogger _logger; + private readonly IProfilingLogger _profilingLogger; private readonly Dictionary _types = new Dictionary(); private readonly object _locko = new object(); @@ -51,8 +53,8 @@ namespace Umbraco.Core.Composing /// Files storage location. /// A profiling logger. /// - public TypeLoader(ITypeFinder typeFinder, IAppPolicyCache runtimeCache, DirectoryInfo localTempPath, IProfilingLogger logger, IEnumerable assembliesToScan = null) - : this(typeFinder, runtimeCache, localTempPath, logger, true, assembliesToScan) + public TypeLoader(ITypeFinder typeFinder, IAppPolicyCache runtimeCache, DirectoryInfo localTempPath, ILogger logger, IProfilingLogger profilingLogger, IEnumerable assembliesToScan = null) + : this(typeFinder, runtimeCache, localTempPath, logger, profilingLogger, true, assembliesToScan) { } /// @@ -64,12 +66,13 @@ namespace Umbraco.Core.Composing /// A profiling logger. /// Whether to detect changes using hashes. /// - public TypeLoader(ITypeFinder typeFinder, IAppPolicyCache runtimeCache, DirectoryInfo localTempPath, IProfilingLogger logger, bool detectChanges, IEnumerable assembliesToScan = null) + public TypeLoader(ITypeFinder typeFinder, IAppPolicyCache runtimeCache, DirectoryInfo localTempPath, ILogger logger, IProfilingLogger profilingLogger, bool detectChanges, IEnumerable assembliesToScan = null) { TypeFinder = typeFinder ?? throw new ArgumentNullException(nameof(typeFinder)); _runtimeCache = runtimeCache ?? throw new ArgumentNullException(nameof(runtimeCache)); _localTempPath = localTempPath; _logger = logger ?? throw new ArgumentNullException(nameof(logger)); + _profilingLogger = profilingLogger ?? throw new ArgumentNullException(nameof(profilingLogger)); _assemblies = assembliesToScan; if (detectChanges) @@ -309,7 +312,7 @@ namespace Umbraco.Core.Composing // internal for tests public void WriteCache() { - _logger.Debug("Writing cache file."); + _logger.LogDebug("Writing cache file."); var typesListFilePath = GetTypesListFilePath(); using (var stream = GetFileStream(typesListFilePath, FileMode.Create, FileAccess.Write, FileShare.None, ListFileOpenWriteTimeout)) using (var writer = new StreamWriter(stream)) @@ -381,7 +384,7 @@ namespace Umbraco.Core.Composing if (--attempts == 0) throw; - _logger.Debug("Attempted to get filestream for file {Path} failed, {NumberOfAttempts} attempts left, pausing for {PauseMilliseconds} milliseconds", path, attempts, pauseMilliseconds); + _logger.LogDebug("Attempted to get filestream for file {Path} failed, {NumberOfAttempts} attempts left, pausing for {PauseMilliseconds} milliseconds", path, attempts, pauseMilliseconds); Thread.Sleep(pauseMilliseconds); } } @@ -402,7 +405,7 @@ namespace Umbraco.Core.Composing if (--attempts == 0) throw; - _logger.Debug("Attempted to delete file {Path} failed, {NumberOfAttempts} attempts left, pausing for {PauseMilliseconds} milliseconds", path, attempts, pauseMilliseconds); + _logger.LogDebug("Attempted to delete file {Path} failed, {NumberOfAttempts} attempts left, pausing for {PauseMilliseconds} milliseconds", path, attempts, pauseMilliseconds); Thread.Sleep(pauseMilliseconds); } } @@ -475,7 +478,7 @@ namespace Umbraco.Core.Composing if (!typeof(IDiscoverable).IsAssignableFrom(typeof(T))) { // warn - _logger.Debug("Running a full, " + (cache ? "" : "non-") + "cached, scan for non-discoverable type {TypeName} (slow).", typeof(T).FullName); + _logger.LogDebug("Running a full, " + (cache ? "" : "non-") + "cached, scan for non-discoverable type {TypeName} (slow).", typeof(T).FullName); return GetTypesInternal( typeof(T), null, @@ -493,7 +496,7 @@ namespace Umbraco.Core.Composing // warn if (!cache) - _logger.Debug("Running a non-cached, filter for discoverable type {TypeName} (slowish).", typeof(T).FullName); + _logger.LogDebug("Running a non-cached, filter for discoverable type {TypeName} (slowish).", typeof(T).FullName); // filter the cached discovered types (and maybe cache the result) return GetTypesInternal( @@ -525,7 +528,7 @@ namespace Umbraco.Core.Composing // if not IDiscoverable, directly get types if (!typeof(IDiscoverable).IsAssignableFrom(typeof(T))) { - _logger.Debug("Running a full, " + (cache ? "" : "non-") + "cached, scan for non-discoverable type {TypeName} / attribute {AttributeName} (slow).", typeof(T).FullName, typeof(TAttribute).FullName); + _logger.LogDebug("Running a full, " + (cache ? "" : "non-") + "cached, scan for non-discoverable type {TypeName} / attribute {AttributeName} (slow).", typeof(T).FullName, typeof(TAttribute).FullName); return GetTypesInternal( typeof(T), typeof(TAttribute), @@ -543,7 +546,7 @@ namespace Umbraco.Core.Composing // warn if (!cache) - _logger.Debug("Running a non-cached, filter for discoverable type {TypeName} / attribute {AttributeName} (slowish).", typeof(T).FullName, typeof(TAttribute).FullName); + _logger.LogDebug("Running a non-cached, filter for discoverable type {TypeName} / attribute {AttributeName} (slowish).", typeof(T).FullName, typeof(TAttribute).FullName); // filter the cached discovered types (and maybe cache the result) return GetTypesInternal( @@ -573,7 +576,7 @@ namespace Umbraco.Core.Composing cache &= specificAssemblies == null; if (!cache) - _logger.Debug("Running a full, non-cached, scan for types / attribute {AttributeName} (slow).", typeof(TAttribute).FullName); + _logger.LogDebug("Running a full, non-cached, scan for types / attribute {AttributeName} (slow).", typeof(TAttribute).FullName); return GetTypesInternal( typeof (object), typeof (TAttribute), @@ -596,7 +599,7 @@ namespace Umbraco.Core.Composing var name = GetName(baseType, attributeType); lock (_locko) - using (_logger.DebugDuration( + using (_profilingLogger.DebugDuration( "Getting " + name, "Got " + name)) // cannot contain typesFound.Count as it's evaluated before the find { @@ -629,7 +632,7 @@ namespace Umbraco.Core.Composing if (typeList != null) { // need to put some logging here to try to figure out why this is happening: http://issues.umbraco.org/issue/U4-3505 - _logger.Debug("Getting {TypeName}: found a cached type list.", GetName(baseType, attributeType)); + _logger.LogDebug("Getting {TypeName}: found a cached type list.", GetName(baseType, attributeType)); return typeList.Types; } @@ -645,7 +648,7 @@ namespace Umbraco.Core.Composing // report (only once) and scan and update the cache file if (_reportedChange == false) { - _logger.Debug("Assemblies changes detected, need to rescan everything."); + _logger.LogDebug("Assemblies changes detected, need to rescan everything."); _reportedChange = true; } } @@ -660,7 +663,7 @@ namespace Umbraco.Core.Composing // so in this instance there will never be a result. if (cacheResult.Exception is CachedTypeNotFoundInFileException || cacheResult.Success == false) { - _logger.Debug("Getting {TypeName}: failed to load from cache file, must scan assemblies.", GetName(baseType, attributeType)); + _logger.LogDebug("Getting {TypeName}: failed to load from cache file, must scan assemblies.", GetName(baseType, attributeType)); scan = true; } else @@ -674,7 +677,7 @@ namespace Umbraco.Core.Composing else { // in case of any exception, we have to exit, and revert to scanning - _logger.Warn("Getting {TypeName}: failed to load cache file type {CacheType}, reverting to scanning assemblies.", GetName(baseType, attributeType), type); + _logger.LogWarning("Getting {TypeName}: failed to load cache file type {CacheType}, reverting to scanning assemblies.", GetName(baseType, attributeType), type); scan = true; break; } @@ -682,7 +685,7 @@ namespace Umbraco.Core.Composing if (scan == false) { - _logger.Debug("Getting {TypeName}: loaded types from cache file.", GetName(baseType, attributeType)); + _logger.LogDebug("Getting {TypeName}: loaded types from cache file.", GetName(baseType, attributeType)); } } } @@ -690,7 +693,7 @@ namespace Umbraco.Core.Composing if (scan) { // either we had to scan, or we could not get the types from the cache file - scan now - _logger.Debug("Getting {TypeName}: " + action + ".", GetName(baseType, attributeType)); + _logger.LogDebug("Getting {TypeName}: " + action + ".", GetName(baseType, attributeType)); foreach (var t in finder()) typeList.Add(t); @@ -708,11 +711,11 @@ namespace Umbraco.Core.Composing UpdateCache(); } - _logger.Debug("Got {TypeName}, caching ({CacheType}).", GetName(baseType, attributeType), added.ToString().ToLowerInvariant()); + _logger.LogDebug("Got {TypeName}, caching ({CacheType}).", GetName(baseType, attributeType), added.ToString().ToLowerInvariant()); } else { - _logger.Debug("Got {TypeName}.", GetName(baseType, attributeType)); + _logger.LogDebug("Got {TypeName}.", GetName(baseType, attributeType)); } return typeList.Types; diff --git a/src/Umbraco.Core/Configuration/ConfigConnectionString.cs b/src/Umbraco.Core/Configuration/ConfigConnectionString.cs index 3a540aa3e2..72408e212c 100644 --- a/src/Umbraco.Core/Configuration/ConfigConnectionString.cs +++ b/src/Umbraco.Core/Configuration/ConfigConnectionString.cs @@ -29,7 +29,9 @@ namespace Umbraco.Core.Configuration ConnectionString = connectionString }; - if (builder.TryGetValue("Data Source", out var ds) && ds is string dataSource) + if ( + (builder.TryGetValue("Data Source", out var ds) + || builder.TryGetValue("DataSource", out ds)) && ds is string dataSource) { if (dataSource.EndsWith(".sdf")) { @@ -37,6 +39,7 @@ namespace Umbraco.Core.Configuration } } + if (builder.TryGetValue("Server", out var s) && s is string server && !string.IsNullOrEmpty(server)) { if (builder.TryGetValue("Database", out var db) && db is string database && !string.IsNullOrEmpty(database)) diff --git a/src/Umbraco.Core/Configuration/Grid/GridConfig.cs b/src/Umbraco.Core/Configuration/Grid/GridConfig.cs index 363dc7b048..d9816101fd 100644 --- a/src/Umbraco.Core/Configuration/Grid/GridConfig.cs +++ b/src/Umbraco.Core/Configuration/Grid/GridConfig.cs @@ -1,6 +1,6 @@ -using Umbraco.Core.Cache; +using Microsoft.Extensions.Logging; +using Umbraco.Core.Cache; using Umbraco.Core.Hosting; -using Umbraco.Core.Logging; using Umbraco.Core.Manifest; using Umbraco.Core.Serialization; @@ -8,9 +8,9 @@ namespace Umbraco.Core.Configuration.Grid { public class GridConfig : IGridConfig { - public GridConfig(AppCaches appCaches, IManifestParser manifestParser, IJsonSerializer jsonSerializer, IHostingEnvironment hostingEnvironment, ILogger logger) + public GridConfig(AppCaches appCaches, IManifestParser manifestParser, IJsonSerializer jsonSerializer, IHostingEnvironment hostingEnvironment, ILoggerFactory loggerFactory) { - EditorsConfig = new GridEditorsConfig(appCaches, hostingEnvironment, manifestParser, jsonSerializer, logger); + EditorsConfig = new GridEditorsConfig(appCaches, hostingEnvironment, manifestParser, jsonSerializer, loggerFactory.CreateLogger()); } public IGridEditorsConfig EditorsConfig { get; } diff --git a/src/Umbraco.Core/Configuration/Grid/GridEditorsConfig.cs b/src/Umbraco.Core/Configuration/Grid/GridEditorsConfig.cs index 6cf985fecb..6ee72f1d04 100644 --- a/src/Umbraco.Core/Configuration/Grid/GridEditorsConfig.cs +++ b/src/Umbraco.Core/Configuration/Grid/GridEditorsConfig.cs @@ -1,9 +1,9 @@ using System; using System.Collections.Generic; using System.IO; +using Microsoft.Extensions.Logging; using Umbraco.Core.Cache; using Umbraco.Core.Hosting; -using Umbraco.Core.Logging; using Umbraco.Core.Manifest; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Serialization; @@ -17,9 +17,9 @@ namespace Umbraco.Core.Configuration.Grid private readonly IManifestParser _manifestParser; private readonly IJsonSerializer _jsonSerializer; - private readonly ILogger _logger; + private readonly ILogger _logger; - public GridEditorsConfig(AppCaches appCaches, IHostingEnvironment hostingEnvironment, IManifestParser manifestParser,IJsonSerializer jsonSerializer, ILogger logger) + public GridEditorsConfig(AppCaches appCaches, IHostingEnvironment hostingEnvironment, IManifestParser manifestParser,IJsonSerializer jsonSerializer, ILogger logger) { _appCaches = appCaches; _hostingEnvironment = hostingEnvironment; @@ -47,7 +47,7 @@ namespace Umbraco.Core.Configuration.Grid } catch (Exception ex) { - _logger.Error(ex, "Could not parse the contents of grid.editors.config.js into a JSON array '{Json}", sourceString); + _logger.LogError(ex, "Could not parse the contents of grid.editors.config.js into a JSON array '{Json}", sourceString); } } diff --git a/src/Umbraco.Core/Configuration/HealthChecks/AbstractConfigCheck.cs b/src/Umbraco.Core/Configuration/HealthChecks/AbstractConfigCheck.cs index bebde2f99d..f3452131f0 100644 --- a/src/Umbraco.Core/Configuration/HealthChecks/AbstractConfigCheck.cs +++ b/src/Umbraco.Core/Configuration/HealthChecks/AbstractConfigCheck.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core.Hosting; using Umbraco.Core.IO; using Umbraco.Core.Logging; @@ -15,7 +16,7 @@ namespace Umbraco.Web.HealthCheck.Checks.Config private readonly ConfigurationService _configurationService; protected ILocalizedTextService TextService { get; } - protected ILogger Logger { get; } + protected ILoggerFactory LoggerFactory { get; } /// /// Gets the config file path. @@ -55,12 +56,12 @@ namespace Umbraco.Web.HealthCheck.Checks.Config get { return false; } } - protected AbstractConfigCheck(ILocalizedTextService textService, IHostingEnvironment hostingEnvironment, ILogger logger) + protected AbstractConfigCheck(ILocalizedTextService textService, IHostingEnvironment hostingEnvironment, ILoggerFactory loggerFactory) { _hostingEnvironment = hostingEnvironment; TextService = textService; - Logger = logger; - _configurationService = new ConfigurationService(AbsoluteFilePath, XPath, textService, logger); + LoggerFactory = loggerFactory; + _configurationService = new ConfigurationService(AbsoluteFilePath, XPath, textService, loggerFactory.CreateLogger()); } /// diff --git a/src/Umbraco.Core/Configuration/HealthChecks/CompilationDebugCheck.cs b/src/Umbraco.Core/Configuration/HealthChecks/CompilationDebugCheck.cs index fe06ccc6f0..b400093a34 100644 --- a/src/Umbraco.Core/Configuration/HealthChecks/CompilationDebugCheck.cs +++ b/src/Umbraco.Core/Configuration/HealthChecks/CompilationDebugCheck.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; +using Microsoft.Extensions.Logging; using Umbraco.Core.Hosting; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Services; namespace Umbraco.Web.HealthCheck.Checks.Config @@ -11,8 +11,8 @@ namespace Umbraco.Web.HealthCheck.Checks.Config Group = "Live Environment")] public class CompilationDebugCheck : AbstractConfigCheck { - public CompilationDebugCheck(ILocalizedTextService textService, IHostingEnvironment hostingEnvironment, ILogger logger) - : base(textService, hostingEnvironment, logger) + public CompilationDebugCheck(ILocalizedTextService textService, IHostingEnvironment hostingEnvironment, ILoggerFactory loggerFactory) + : base(textService, hostingEnvironment, loggerFactory) { } public override string FilePath => "~/Web.config"; diff --git a/src/Umbraco.Core/Configuration/HealthChecks/ConfigurationService.cs b/src/Umbraco.Core/Configuration/HealthChecks/ConfigurationService.cs index a4554a52fd..396d55b735 100644 --- a/src/Umbraco.Core/Configuration/HealthChecks/ConfigurationService.cs +++ b/src/Umbraco.Core/Configuration/HealthChecks/ConfigurationService.cs @@ -1,7 +1,7 @@ using System; using System.IO; using System.Xml; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Core.Services; namespace Umbraco.Web.HealthCheck.Checks.Config @@ -13,14 +13,14 @@ namespace Umbraco.Web.HealthCheck.Checks.Config private readonly string _configFilePath; private readonly string _xPath; private readonly ILocalizedTextService _textService; - private readonly ILogger _logger; + private readonly ILogger _logger; /// The absolute file location of the configuration file /// The XPath to select the value /// /// /// - public ConfigurationService(string configFilePath, string xPath, ILocalizedTextService textService, ILogger logger) + public ConfigurationService(string configFilePath, string xPath, ILocalizedTextService textService, ILogger logger) { _configFilePath = configFilePath; _xPath = xPath; @@ -61,7 +61,7 @@ namespace Umbraco.Web.HealthCheck.Checks.Config } catch (Exception ex) { - _logger.Error(ex, "Error trying to get configuration value"); + _logger.LogError(ex, "Error trying to get configuration value"); return new ConfigurationServiceResult { Success = false, @@ -107,7 +107,7 @@ namespace Umbraco.Web.HealthCheck.Checks.Config } catch (Exception ex) { - _logger.Error(ex, "Error trying to update configuration"); + _logger.LogError(ex, "Error trying to update configuration"); return new ConfigurationServiceResult { Success = false, diff --git a/src/Umbraco.Core/Configuration/HealthChecks/CustomErrorsCheck.cs b/src/Umbraco.Core/Configuration/HealthChecks/CustomErrorsCheck.cs index 2338daf718..9b14847bdf 100644 --- a/src/Umbraco.Core/Configuration/HealthChecks/CustomErrorsCheck.cs +++ b/src/Umbraco.Core/Configuration/HealthChecks/CustomErrorsCheck.cs @@ -1,8 +1,8 @@ using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core.Hosting; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Services; namespace Umbraco.Web.HealthCheck.Checks.Config @@ -12,8 +12,8 @@ namespace Umbraco.Web.HealthCheck.Checks.Config Group = "Live Environment")] public class CustomErrorsCheck : AbstractConfigCheck { - public CustomErrorsCheck(ILocalizedTextService textService, IHostingEnvironment hostingEnvironment, ILogger logger) - : base(textService, hostingEnvironment, logger) + public CustomErrorsCheck(ILocalizedTextService textService, IHostingEnvironment hostingEnvironment, ILoggerFactory loggerFactory) + : base(textService, hostingEnvironment, loggerFactory) { } public override string FilePath => "~/Web.config"; diff --git a/src/Umbraco.Core/Configuration/HealthChecks/MacroErrorsCheck.cs b/src/Umbraco.Core/Configuration/HealthChecks/MacroErrorsCheck.cs index 7e53b87b79..68e76dfc81 100644 --- a/src/Umbraco.Core/Configuration/HealthChecks/MacroErrorsCheck.cs +++ b/src/Umbraco.Core/Configuration/HealthChecks/MacroErrorsCheck.cs @@ -1,8 +1,8 @@ using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core.Hosting; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Services; namespace Umbraco.Web.HealthCheck.Checks.Config @@ -12,8 +12,8 @@ namespace Umbraco.Web.HealthCheck.Checks.Config Group = "Configuration")] public class MacroErrorsCheck : AbstractConfigCheck { - public MacroErrorsCheck(ILocalizedTextService textService, IHostingEnvironment hostingEnvironment, ILogger logger) - : base(textService, hostingEnvironment, logger) + public MacroErrorsCheck(ILocalizedTextService textService, IHostingEnvironment hostingEnvironment, ILoggerFactory loggerFactory) + : base(textService, hostingEnvironment, loggerFactory) { } public override string FilePath => "~/Config/umbracoSettings.config"; diff --git a/src/Umbraco.Core/Configuration/HealthChecks/NotificationEmailCheck.cs b/src/Umbraco.Core/Configuration/HealthChecks/NotificationEmailCheck.cs index 9ba88c4a13..bac2cf1c3c 100644 --- a/src/Umbraco.Core/Configuration/HealthChecks/NotificationEmailCheck.cs +++ b/src/Umbraco.Core/Configuration/HealthChecks/NotificationEmailCheck.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; +using Microsoft.Extensions.Logging; using Umbraco.Core.Hosting; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Services; namespace Umbraco.Web.HealthCheck.Checks.Config @@ -13,8 +13,8 @@ namespace Umbraco.Web.HealthCheck.Checks.Config { private const string DefaultFromEmail = "your@email.here"; - public NotificationEmailCheck(ILocalizedTextService textService, IHostingEnvironment hostingEnvironment, ILogger logger) - : base(textService, hostingEnvironment, logger) + public NotificationEmailCheck(ILocalizedTextService textService, IHostingEnvironment hostingEnvironment, ILoggerFactory loggerFactory) + : base(textService, hostingEnvironment, loggerFactory) { } public override string FilePath => "~/Config/umbracoSettings.config"; diff --git a/src/Umbraco.Core/Configuration/HealthChecks/TraceCheck.cs b/src/Umbraco.Core/Configuration/HealthChecks/TraceCheck.cs index 16702e3a06..a2c5a84c55 100644 --- a/src/Umbraco.Core/Configuration/HealthChecks/TraceCheck.cs +++ b/src/Umbraco.Core/Configuration/HealthChecks/TraceCheck.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; +using Microsoft.Extensions.Logging; using Umbraco.Core.Hosting; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Services; namespace Umbraco.Web.HealthCheck.Checks.Config @@ -12,8 +12,8 @@ namespace Umbraco.Web.HealthCheck.Checks.Config public class TraceCheck : AbstractConfigCheck { - public TraceCheck(ILocalizedTextService textService, IHostingEnvironment hostingEnvironment, ILogger logger) - : base(textService, hostingEnvironment, logger) + public TraceCheck(ILocalizedTextService textService, IHostingEnvironment hostingEnvironment, ILoggerFactory loggerFactory) + : base(textService, hostingEnvironment, loggerFactory) { } public override string FilePath => "~/Web.config"; diff --git a/src/Umbraco.Core/Configuration/HealthChecks/TrySkipIisCustomErrorsCheck.cs b/src/Umbraco.Core/Configuration/HealthChecks/TrySkipIisCustomErrorsCheck.cs index dc3abbc8a8..76269d961c 100644 --- a/src/Umbraco.Core/Configuration/HealthChecks/TrySkipIisCustomErrorsCheck.cs +++ b/src/Umbraco.Core/Configuration/HealthChecks/TrySkipIisCustomErrorsCheck.cs @@ -1,9 +1,9 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core.Hosting; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Services; namespace Umbraco.Web.HealthCheck.Checks.Config @@ -15,9 +15,9 @@ namespace Umbraco.Web.HealthCheck.Checks.Config { private readonly Version _iisVersion; - public TrySkipIisCustomErrorsCheck(ILocalizedTextService textService, ILogger logger, + public TrySkipIisCustomErrorsCheck(ILocalizedTextService textService, ILoggerFactory loggerFactory, IHostingEnvironment hostingEnvironment) - : base(textService, hostingEnvironment, logger) + : base(textService, hostingEnvironment, loggerFactory) { _iisVersion = hostingEnvironment.IISVersion; } diff --git a/src/Umbraco.Core/Configuration/XmlConfigManipulator.cs b/src/Umbraco.Core/Configuration/XmlConfigManipulator.cs index dd7e4baa94..b7c3d5d58b 100644 --- a/src/Umbraco.Core/Configuration/XmlConfigManipulator.cs +++ b/src/Umbraco.Core/Configuration/XmlConfigManipulator.cs @@ -4,17 +4,17 @@ using System.IO; using System.Linq; using System.Xml; using System.Xml.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core.IO; -using Umbraco.Core.Logging; namespace Umbraco.Core.Configuration { public class XmlConfigManipulator : IConfigManipulator { private readonly IIOHelper _ioHelper; - private readonly ILogger _logger; + private readonly ILogger _logger; - public XmlConfigManipulator(IIOHelper ioHelper, ILogger logger) + public XmlConfigManipulator(IIOHelper ioHelper, ILogger logger) { _ioHelper = ioHelper; _logger = logger; @@ -101,9 +101,9 @@ namespace Umbraco.Core.Configuration } // save - _logger.Info("Saving connection string to {ConfigFile}.", fileSource); + _logger.LogInformation("Saving connection string to {ConfigFile}.", fileSource); xml.Save(fileName, SaveOptions.DisableFormatting); - _logger.Info("Saved connection string to {ConfigFile}.", fileSource); + _logger.LogInformation("Saved connection string to {ConfigFile}.", fileSource); } public void SaveConfigValue(string itemPath, object value) diff --git a/src/Umbraco.Core/ContentApps/ContentAppFactoryCollection.cs b/src/Umbraco.Core/ContentApps/ContentAppFactoryCollection.cs index 4e85e51af3..7884126dc8 100644 --- a/src/Umbraco.Core/ContentApps/ContentAppFactoryCollection.cs +++ b/src/Umbraco.Core/ContentApps/ContentAppFactoryCollection.cs @@ -1,19 +1,19 @@ using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Composing; using Umbraco.Core.Models.ContentEditing; -using Umbraco.Core.Logging; using Umbraco.Core.Models.Membership; namespace Umbraco.Web.ContentApps { public class ContentAppFactoryCollection : BuilderCollectionBase { - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IUmbracoContextAccessor _umbracoContextAccessor; - public ContentAppFactoryCollection(IEnumerable items, ILogger logger, IUmbracoContextAccessor umbracoContextAccessor) + public ContentAppFactoryCollection(IEnumerable items, ILogger logger, IUmbracoContextAccessor umbracoContextAccessor) : base(items) { _logger = logger; @@ -51,7 +51,7 @@ namespace Umbraco.Web.ContentApps // dying is not user-friendly, so let's write to log instead, and wish people read logs... //throw new InvalidOperationException($"Duplicate content app aliases found: {string.Join(",", dups)}"); - _logger.Warn("Duplicate content app aliases found: {DuplicateAliases}", string.Join(",", dups)); + _logger.LogWarning("Duplicate content app aliases found: {DuplicateAliases}", string.Join(",", dups)); } return apps; diff --git a/src/Umbraco.Core/ContentApps/ContentAppFactoryCollectionBuilder.cs b/src/Umbraco.Core/ContentApps/ContentAppFactoryCollectionBuilder.cs index f3d3a149d5..0e2c8e2f55 100644 --- a/src/Umbraco.Core/ContentApps/ContentAppFactoryCollectionBuilder.cs +++ b/src/Umbraco.Core/ContentApps/ContentAppFactoryCollectionBuilder.cs @@ -1,9 +1,9 @@ using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Composing; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Manifest; using Umbraco.Core.Models.ContentEditing; using Umbraco.Core.Models.Identity; @@ -17,10 +17,10 @@ namespace Umbraco.Web.ContentApps // need to inject dependencies in the collection, so override creation public override ContentAppFactoryCollection CreateCollection(IFactory factory) { - // get the logger just-in-time - see note below for manifest parser - var logger = factory.GetInstance(); + // get the logger factory just-in-time - see note below for manifest parser + var loggerFactory = factory.GetInstance(); var umbracoContextAccessor = factory.GetInstance(); - return new ContentAppFactoryCollection(CreateItems(factory), logger, umbracoContextAccessor); + return new ContentAppFactoryCollection(CreateItems(factory), loggerFactory.CreateLogger(), umbracoContextAccessor); } protected override IEnumerable CreateItems(IFactory factory) diff --git a/src/Umbraco.Core/HealthCheck/Checks/Security/HttpsCheck.cs b/src/Umbraco.Core/HealthCheck/Checks/Security/HttpsCheck.cs index 7f85d326df..3f788f7460 100644 --- a/src/Umbraco.Core/HealthCheck/Checks/Security/HttpsCheck.cs +++ b/src/Umbraco.Core/HealthCheck/Checks/Security/HttpsCheck.cs @@ -2,11 +2,11 @@ using System.Collections.Generic; using System.Net; using System.Security.Cryptography.X509Certificates; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Configuration; using Umbraco.Core.IO; using Umbraco.Core.Services; -using Umbraco.Core.Logging; using Umbraco.Web.HealthCheck.Checks.Config; using Umbraco.Core.Configuration.Models; using Microsoft.Extensions.Options; @@ -23,18 +23,22 @@ namespace Umbraco.Web.HealthCheck.Checks.Security private readonly ILocalizedTextService _textService; private readonly GlobalSettings _globalSettings; private readonly IIOHelper _ioHelper; - private readonly ILogger _logger; private readonly IRequestAccessor _requestAccessor; + private readonly ILogger _logger; private const string FixHttpsSettingAction = "fixHttpsSetting"; - public HttpsCheck(ILocalizedTextService textService, IOptions globalSettings, IIOHelper ioHelper, ILogger logger, IRequestAccessor requestAccessor) + public HttpsCheck(ILocalizedTextService textService, + IOptions globalSettings, + IIOHelper ioHelper, + IRequestAccessor requestAccessor, + ILogger logger) { _textService = textService; _globalSettings = globalSettings.Value; _ioHelper = ioHelper; - _logger = logger; _requestAccessor = requestAccessor; + _logger = logger; } /// diff --git a/src/Umbraco.Core/IO/FileSystems.cs b/src/Umbraco.Core/IO/FileSystems.cs index 505f714620..e5c8caffe7 100644 --- a/src/Umbraco.Core/IO/FileSystems.cs +++ b/src/Umbraco.Core/IO/FileSystems.cs @@ -2,7 +2,7 @@ using System.Collections.Concurrent; using System.Collections.Generic; using System.Threading; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Core.Composing; using Umbraco.Core.Configuration; using Umbraco.Core.Hosting; @@ -14,7 +14,8 @@ namespace Umbraco.Core.IO public class FileSystems : IFileSystems { private readonly IFactory _container; - private readonly ILogger _logger; + private readonly ILogger _logger; + private readonly ILoggerFactory _loggerFactory; private readonly IIOHelper _ioHelper; private readonly ConcurrentDictionary> _filesystems = new ConcurrentDictionary>(); @@ -38,10 +39,11 @@ namespace Umbraco.Core.IO #region Constructor // DI wants a public ctor - public FileSystems(IFactory container, ILogger logger, IIOHelper ioHelper, IOptions globalSettings, IHostingEnvironment hostingEnvironment) + public FileSystems(IFactory container, ILogger logger, ILoggerFactory loggerFactory, IIOHelper ioHelper, IOptions globalSettings, IHostingEnvironment hostingEnvironment) { _container = container; _logger = logger; + _loggerFactory = loggerFactory; _ioHelper = ioHelper; _globalSettings = globalSettings.Value; _hostingEnvironment = hostingEnvironment; @@ -128,17 +130,18 @@ namespace Umbraco.Core.IO // but it does not really matter what we return - here, null private object CreateWellKnownFileSystems() { - var macroPartialFileSystem = new PhysicalFileSystem(_ioHelper, _hostingEnvironment, _logger, Constants.SystemDirectories.MacroPartials); - var partialViewsFileSystem = new PhysicalFileSystem(_ioHelper, _hostingEnvironment, _logger, Constants.SystemDirectories.PartialViews); - var stylesheetsFileSystem = new PhysicalFileSystem(_ioHelper, _hostingEnvironment, _logger, _globalSettings.UmbracoCssPath); - var scriptsFileSystem = new PhysicalFileSystem(_ioHelper, _hostingEnvironment, _logger, _globalSettings.UmbracoScriptsPath); - var mvcViewsFileSystem = new PhysicalFileSystem(_ioHelper, _hostingEnvironment, _logger, Constants.SystemDirectories.MvcViews); + var logger = _loggerFactory.CreateLogger(); + var macroPartialFileSystem = new PhysicalFileSystem(_ioHelper, _hostingEnvironment, logger, Constants.SystemDirectories.MacroPartials); + var partialViewsFileSystem = new PhysicalFileSystem(_ioHelper, _hostingEnvironment, logger, Constants.SystemDirectories.PartialViews); + var stylesheetsFileSystem = new PhysicalFileSystem(_ioHelper, _hostingEnvironment, logger, _globalSettings.UmbracoCssPath); + var scriptsFileSystem = new PhysicalFileSystem(_ioHelper, _hostingEnvironment, logger, _globalSettings.UmbracoScriptsPath); + var mvcViewsFileSystem = new PhysicalFileSystem(_ioHelper, _hostingEnvironment, logger, Constants.SystemDirectories.MvcViews); - _macroPartialFileSystem = new ShadowWrapper(macroPartialFileSystem, _ioHelper, _hostingEnvironment, _logger,"macro-partials", IsScoped); - _partialViewsFileSystem = new ShadowWrapper(partialViewsFileSystem, _ioHelper, _hostingEnvironment, _logger,"partials", IsScoped); - _stylesheetsFileSystem = new ShadowWrapper(stylesheetsFileSystem, _ioHelper, _hostingEnvironment,_logger,"css", IsScoped); - _scriptsFileSystem = new ShadowWrapper(scriptsFileSystem, _ioHelper, _hostingEnvironment,_logger,"scripts", IsScoped); - _mvcViewsFileSystem = new ShadowWrapper(mvcViewsFileSystem, _ioHelper, _hostingEnvironment,_logger,"views", IsScoped); + _macroPartialFileSystem = new ShadowWrapper(macroPartialFileSystem, _ioHelper, _hostingEnvironment, _loggerFactory, "macro-partials", IsScoped); + _partialViewsFileSystem = new ShadowWrapper(partialViewsFileSystem, _ioHelper, _hostingEnvironment, _loggerFactory, "partials", IsScoped); + _stylesheetsFileSystem = new ShadowWrapper(stylesheetsFileSystem, _ioHelper, _hostingEnvironment, _loggerFactory, "css", IsScoped); + _scriptsFileSystem = new ShadowWrapper(scriptsFileSystem, _ioHelper, _hostingEnvironment, _loggerFactory, "scripts", IsScoped); + _mvcViewsFileSystem = new ShadowWrapper(mvcViewsFileSystem, _ioHelper, _hostingEnvironment, _loggerFactory, "views", IsScoped); // TODO: do we need a lock here? _shadowWrappers.Add(_macroPartialFileSystem); @@ -235,7 +238,7 @@ namespace Umbraco.Core.IO _shadowCurrentId = id; - _logger.Debug("Shadow '{ShadowId}'", _shadowCurrentId); + _logger.LogDebug("Shadow '{ShadowId}'", _shadowCurrentId); foreach (var wrapper in _shadowWrappers) wrapper.Shadow(_shadowCurrentId); @@ -252,7 +255,7 @@ namespace Umbraco.Core.IO if (id != _shadowCurrentId) throw new InvalidOperationException("Not the current shadow."); - _logger.Debug("UnShadow '{ShadowId}' {Status}", id, completed ? "complete" : "abort"); + _logger.LogDebug("UnShadow '{ShadowId}' {Status}", id, completed ? "complete" : "abort"); var exceptions = new List(); foreach (var wrapper in _shadowWrappers) @@ -279,7 +282,7 @@ namespace Umbraco.Core.IO { lock (_shadowLocker) { - var wrapper = new ShadowWrapper(filesystem, _ioHelper, _hostingEnvironment, _logger, shadowPath, IsScoped); + var wrapper = new ShadowWrapper(filesystem, _ioHelper, _hostingEnvironment, _loggerFactory, shadowPath, IsScoped); if (_shadowCurrentId != null) wrapper.Shadow(_shadowCurrentId); _shadowWrappers.Add(wrapper); diff --git a/src/Umbraco.Core/IO/MediaFileSystem.cs b/src/Umbraco.Core/IO/MediaFileSystem.cs index 1df4e4a0fb..5e5a3f3e97 100644 --- a/src/Umbraco.Core/IO/MediaFileSystem.cs +++ b/src/Umbraco.Core/IO/MediaFileSystem.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Core.Models; using Umbraco.Core.Strings; @@ -15,13 +15,13 @@ namespace Umbraco.Core.IO public class MediaFileSystem : FileSystemWrapper, IMediaFileSystem { private readonly IMediaPathScheme _mediaPathScheme; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IShortStringHelper _shortStringHelper; /// /// Initializes a new instance of the class. /// - public MediaFileSystem(IFileSystem innerFileSystem, IMediaPathScheme mediaPathScheme, ILogger logger, IShortStringHelper shortStringHelper) + public MediaFileSystem(IFileSystem innerFileSystem, IMediaPathScheme mediaPathScheme, ILogger logger, IShortStringHelper shortStringHelper) : base(innerFileSystem) { _mediaPathScheme = mediaPathScheme; @@ -51,7 +51,7 @@ namespace Umbraco.Core.IO } catch (Exception e) { - _logger.Error(e, "Failed to delete media file '{File}'.", file); + _logger.LogError(e, "Failed to delete media file '{File}'.", file); } }); } diff --git a/src/Umbraco.Core/IO/PhysicalFileSystem.cs b/src/Umbraco.Core/IO/PhysicalFileSystem.cs index aa9d6174dd..04e3df6ab3 100644 --- a/src/Umbraco.Core/IO/PhysicalFileSystem.cs +++ b/src/Umbraco.Core/IO/PhysicalFileSystem.cs @@ -2,18 +2,18 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core.Exceptions; using Umbraco.Core.Composing; using System.Threading; using Umbraco.Core.Hosting; -using Umbraco.Core.Logging; namespace Umbraco.Core.IO { public class PhysicalFileSystem : IFileSystem { private readonly IIOHelper _ioHelper; - private readonly ILogger _logger; + private readonly ILogger _logger; // the rooted, filesystem path, using directory separator chars, NOT ending with a separator // eg "c:" or "c:\path\to\site" or "\\server\path" @@ -30,7 +30,7 @@ namespace Umbraco.Core.IO // virtualRoot should be "~/path/to/root" eg "~/Views" // the "~/" is mandatory. - public PhysicalFileSystem(IIOHelper ioHelper, IHostingEnvironment hostingEnvironment, ILogger logger, string virtualRoot) + public PhysicalFileSystem(IIOHelper ioHelper, IHostingEnvironment hostingEnvironment, ILogger logger, string virtualRoot) { _ioHelper = ioHelper ?? throw new ArgumentNullException(nameof(ioHelper)); if (hostingEnvironment == null) throw new ArgumentNullException(nameof(hostingEnvironment)); @@ -45,7 +45,7 @@ namespace Umbraco.Core.IO _rootUrl = EnsureUrlSeparatorChar(hostingEnvironment.ToAbsolute(virtualRoot)).TrimEnd('/'); } - public PhysicalFileSystem(IIOHelper ioHelper,IHostingEnvironment hostingEnvironment, ILogger logger, string rootPath, string rootUrl) + public PhysicalFileSystem(IIOHelper ioHelper,IHostingEnvironment hostingEnvironment, ILogger logger, string rootPath, string rootUrl) { _ioHelper = ioHelper ?? throw new ArgumentNullException(nameof(ioHelper)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); @@ -87,11 +87,11 @@ namespace Umbraco.Core.IO } catch (UnauthorizedAccessException ex) { - _logger.Error(ex, "Not authorized to get directories for '{Path}'", fullPath); + _logger.LogError(ex, "Not authorized to get directories for '{Path}'", fullPath); } catch (DirectoryNotFoundException ex) { - _logger.Error(ex, "Directory not found for '{Path}'", fullPath); + _logger.LogError(ex, "Directory not found for '{Path}'", fullPath); } return Enumerable.Empty(); @@ -123,7 +123,7 @@ namespace Umbraco.Core.IO } catch (DirectoryNotFoundException ex) { - _logger.Error(ex, "Directory not found for '{Path}'", fullPath); + _logger.LogError(ex, "Directory not found for '{Path}'", fullPath); } } @@ -203,11 +203,11 @@ namespace Umbraco.Core.IO } catch (UnauthorizedAccessException ex) { - _logger.Error(ex, "Not authorized to get directories for '{Path}'", fullPath); + _logger.LogError(ex, "Not authorized to get directories for '{Path}'", fullPath); } catch (DirectoryNotFoundException ex) { - _logger.Error(ex, "Directory not found for '{FullPath}'", fullPath); + _logger.LogError(ex, "Directory not found for '{FullPath}'", fullPath); } return Enumerable.Empty(); @@ -240,7 +240,7 @@ namespace Umbraco.Core.IO } catch (FileNotFoundException ex) { - _logger.Error(ex.InnerException, "DeleteFile failed with FileNotFoundException for '{Path}'", fullPath); + _logger.LogError(ex.InnerException, "DeleteFile failed with FileNotFoundException for '{Path}'", fullPath); } } diff --git a/src/Umbraco.Core/IO/ShadowWrapper.cs b/src/Umbraco.Core/IO/ShadowWrapper.cs index 7ddd6a48b7..83fe5aafe7 100644 --- a/src/Umbraco.Core/IO/ShadowWrapper.cs +++ b/src/Umbraco.Core/IO/ShadowWrapper.cs @@ -2,9 +2,9 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core.Composing; using Umbraco.Core.Hosting; -using Umbraco.Core.Logging; namespace Umbraco.Core.IO { @@ -19,14 +19,14 @@ namespace Umbraco.Core.IO private string _shadowDir; private readonly IIOHelper _ioHelper; private readonly IHostingEnvironment _hostingEnvironment; - private readonly ILogger _logger; + private readonly ILoggerFactory _loggerFactory; - public ShadowWrapper(IFileSystem innerFileSystem, IIOHelper ioHelper, IHostingEnvironment hostingEnvironment, ILogger logger, string shadowPath, Func isScoped = null) + public ShadowWrapper(IFileSystem innerFileSystem, IIOHelper ioHelper, IHostingEnvironment hostingEnvironment, ILoggerFactory loggerFactory, string shadowPath, Func isScoped = null) { _innerFileSystem = innerFileSystem; _ioHelper = ioHelper ?? throw new ArgumentNullException(nameof(ioHelper)); _hostingEnvironment = hostingEnvironment ?? throw new ArgumentNullException(nameof(hostingEnvironment)); - _logger = logger ?? throw new ArgumentNullException(nameof(logger)); + _loggerFactory = loggerFactory; _shadowPath = shadowPath; _isScoped = isScoped; } @@ -66,7 +66,7 @@ namespace Umbraco.Core.IO var virt = ShadowFsPath + "/" + id + "/" + _shadowPath; _shadowDir = _ioHelper.MapPath(virt); Directory.CreateDirectory(_shadowDir); - var tempfs = new PhysicalFileSystem(_ioHelper, _hostingEnvironment, _logger, virt); + var tempfs = new PhysicalFileSystem(_ioHelper, _hostingEnvironment, _loggerFactory.CreateLogger(), virt); _shadowFileSystem = new ShadowFileSystem(_innerFileSystem, tempfs); } diff --git a/src/Umbraco.Core/Logging/ConsoleLogger.cs b/src/Umbraco.Core/Logging/ConsoleLogger.cs deleted file mode 100644 index 275b8d988b..0000000000 --- a/src/Umbraco.Core/Logging/ConsoleLogger.cs +++ /dev/null @@ -1,125 +0,0 @@ -using System; - -namespace Umbraco.Core.Logging -{ - public class ConsoleLogger : ILogger - { - private readonly IMessageTemplates _messageTemplates; - - public ConsoleLogger(IMessageTemplates messageTemplates) - { - _messageTemplates = messageTemplates; - } - - public bool IsEnabled(Type reporting, LogLevel level) - => true; - - public void Fatal(Type reporting, Exception exception, string message) - { - Console.WriteLine("FATAL {0} - {1}", reporting.Name, message); - Console.WriteLine(exception); - } - - public void Fatal(Type reporting, Exception exception) - { - Console.WriteLine("FATAL {0}", reporting.Name); - Console.WriteLine(exception); - } - - public void Fatal(Type reporting, string message) - { - Console.WriteLine("FATAL {0} - {1}", reporting.Name, message); - } - - public void Fatal(Type reporting, Exception exception, string messageTemplate, params object[] propertyValues) - { - Console.WriteLine("FATAL {0} - {1}", reporting.Name, _messageTemplates.Render(messageTemplate, propertyValues)); - Console.WriteLine(exception); - } - - public void Fatal(Type reporting, string messageTemplate, params object[] propertyValues) - { - Console.WriteLine("FATAL {0} - {1}", reporting.Name, _messageTemplates.Render(messageTemplate, propertyValues)); - } - - public void Error(Type reporting, Exception exception, string message) - { - Console.WriteLine("ERROR {0} - {1}", reporting.Name, message); - Console.WriteLine(exception); - } - - public void Error(Type reporting, Exception exception) - { - Console.WriteLine("ERROR {0}", reporting.Name); - Console.WriteLine(exception); - } - - public void Error(Type reporting, string message) - { - Console.WriteLine("ERROR {0} - {1}", reporting.Name, message); - } - - public void Error(Type reporting, Exception exception, string messageTemplate, params object[] propertyValues) - { - Console.WriteLine("ERROR {0} - {1}", reporting.Name, _messageTemplates.Render(messageTemplate, propertyValues)); - Console.WriteLine(exception); - } - - public void Error(Type reporting, string messageTemplate, params object[] propertyValues) - { - Console.WriteLine("ERROR {0} - {1}", reporting.Name, _messageTemplates.Render(messageTemplate, propertyValues)); - } - - public void Warn(Type reporting, string message) - { - Console.WriteLine("WARN {0} - {1}", reporting.Name, message); - } - - public void Warn(Type reporting, string message, params object[] propertyValues) - { - Console.WriteLine("WARN {0} - {1}", reporting.Name, _messageTemplates.Render(message, propertyValues)); - } - - public void Warn(Type reporting, Exception exception, string message) - { - Console.WriteLine("WARN {0} - {1}", reporting.Name, message); - Console.WriteLine(exception); - } - - public void Warn(Type reporting, Exception exception, string message, params object[] propertyValues) - { - Console.WriteLine("WARN {0} - {1}", reporting.Name, _messageTemplates.Render(message, propertyValues)); - Console.WriteLine(exception); - } - - public void Info(Type reporting, string messageTemplate, params object[] propertyValues) - { - Console.WriteLine("INFO {0} - {1}", reporting.Name, _messageTemplates.Render(messageTemplate, propertyValues)); - } - - public void Info(Type reporting, string message) - { - Console.WriteLine("INFO {0} - {1}", reporting.Name, message); - } - - public void Debug(Type reporting, string message) - { - Console.WriteLine("DEBUG {0} - {1}", reporting.Name, message); - } - - public void Debug(Type reporting, string messageTemplate, params object[] propertyValues) - { - Console.WriteLine("DEBUG {0} - {1}", reporting.Name, _messageTemplates.Render(messageTemplate, propertyValues)); - } - - public void Verbose(Type reporting, string message) - { - Console.WriteLine("VERBOSE {0} - {1}", reporting.Name, message); - } - - public void Verbose(Type reporting, string messageTemplate, params object[] propertyValues) - { - Console.WriteLine("VERBOSE {0} - {1}", reporting.Name, _messageTemplates.Render(messageTemplate, propertyValues)); - } - } -} diff --git a/src/Umbraco.Core/Logging/DebugDiagnosticsLogger.cs b/src/Umbraco.Core/Logging/DebugDiagnosticsLogger.cs deleted file mode 100644 index 552daba713..0000000000 --- a/src/Umbraco.Core/Logging/DebugDiagnosticsLogger.cs +++ /dev/null @@ -1,140 +0,0 @@ -using System; - -namespace Umbraco.Core.Logging -{ - /// - /// Implements on top of . - /// - public class DebugDiagnosticsLogger : ILogger - { - private readonly IMessageTemplates _messageTemplates; - - public DebugDiagnosticsLogger(IMessageTemplates messageTemplates) - { - _messageTemplates = messageTemplates; - } - - public bool IsEnabled(Type reporting, LogLevel level) - => true; - - /// - public void Fatal(Type reporting, Exception exception, string message) - { - System.Diagnostics.Debug.WriteLine(message + Environment.NewLine + exception, reporting.FullName); - } - - /// - public void Fatal(Type reporting, Exception exception) - { - System.Diagnostics.Debug.WriteLine(Environment.NewLine + exception, reporting.FullName); - } - - /// - public void Fatal(Type reporting, string message) - { - System.Diagnostics.Debug.WriteLine(message); - } - - /// - public void Fatal(Type reporting, Exception exception, string messageTemplate, params object[] propertyValues) - { - System.Diagnostics.Debug.WriteLine(_messageTemplates.Render(messageTemplate, propertyValues) + Environment.NewLine + exception, reporting.FullName); - } - - /// - public void Fatal(Type reporting, string messageTemplate, params object[] propertyValues) - { - System.Diagnostics.Debug.WriteLine(messageTemplate, propertyValues); - } - - /// - public void Error(Type reporting, Exception exception, string message) - { - System.Diagnostics.Debug.WriteLine(message + Environment.NewLine + exception, reporting.FullName); - } - - /// - public void Error(Type reporting, Exception exception) - { - System.Diagnostics.Debug.WriteLine(Environment.NewLine + exception, reporting.FullName); - } - - /// - public void Error(Type reporting, string message) - { - System.Diagnostics.Debug.WriteLine(message); - } - - /// - public void Error(Type reporting, Exception exception, string messageTemplate, params object[] propertyValues) - { - System.Diagnostics.Debug.WriteLine(_messageTemplates.Render(messageTemplate, propertyValues) + Environment.NewLine + exception, reporting.FullName); - } - - /// - public void Error(Type reporting, string messageTemplate, params object[] propertyValues) - { - System.Diagnostics.Debug.WriteLine(messageTemplate, propertyValues); - } - - /// - public void Warn(Type reporting, string message) - { - System.Diagnostics.Debug.WriteLine(message, reporting.FullName); - } - - /// - public void Warn(Type reporting, string message, params object[] propertyValues) - { - System.Diagnostics.Debug.WriteLine(_messageTemplates.Render(message, propertyValues), reporting.FullName); - } - - /// - public void Warn(Type reporting, Exception exception, string message) - { - System.Diagnostics.Debug.WriteLine(message + Environment.NewLine + exception, reporting.FullName); - } - - /// - public void Warn(Type reporting, Exception exception, string message, params object[] propertyValues) - { - System.Diagnostics.Debug.WriteLine(_messageTemplates.Render(message + Environment.NewLine + exception, propertyValues), reporting.FullName); - } - - /// - public void Info(Type reporting, string message) - { - System.Diagnostics.Debug.WriteLine(message, reporting.FullName); - } - - /// - public void Info(Type reporting, string messageTemplate, params object[] propertyValues) - { - System.Diagnostics.Debug.WriteLine(_messageTemplates.Render(messageTemplate, propertyValues), reporting.FullName); - } - - /// - public void Debug(Type reporting, string message) - { - System.Diagnostics.Debug.WriteLine(message, reporting.FullName); - } - - /// - public void Debug(Type reporting, string messageTemplate, params object[] propertyValues) - { - System.Diagnostics.Debug.WriteLine(_messageTemplates.Render(messageTemplate, propertyValues), reporting.FullName); - } - - /// - public void Verbose(Type reporting, string message) - { - System.Diagnostics.Debug.WriteLine(message, reporting.FullName); - } - - /// - public void Verbose(Type reporting, string messageTemplate, params object[] propertyValues) - { - System.Diagnostics.Debug.WriteLine(_messageTemplates.Render(messageTemplate, propertyValues), reporting.FullName); - } - } -} diff --git a/src/Umbraco.Core/Logging/DisposableTimer.cs b/src/Umbraco.Core/Logging/DisposableTimer.cs index d854813b7d..9fdb93c057 100644 --- a/src/Umbraco.Core/Logging/DisposableTimer.cs +++ b/src/Umbraco.Core/Logging/DisposableTimer.cs @@ -1,5 +1,6 @@ using System; using System.Diagnostics; +using Microsoft.Extensions.Logging; namespace Umbraco.Core.Logging { @@ -37,10 +38,10 @@ namespace Umbraco.Core.Logging switch (_level) { case LogLevel.Debug: - logger.Debug(loggerType, "{StartMessage} [Timing {TimingId}]", startMessage, _timingId); + logger.LogDebug("{StartMessage} [Timing {TimingId}]", startMessage, _timingId); break; case LogLevel.Information: - logger.Info(loggerType, "{StartMessage} [Timing {TimingId}]", startMessage, _timingId); + logger.LogInformation("{StartMessage} [Timing {TimingId}]", startMessage, _timingId); break; default: throw new ArgumentOutOfRangeException(nameof(level)); @@ -84,15 +85,15 @@ namespace Umbraco.Core.Logging { if (_failed) { - _logger.Error(_loggerType, _failException, "{FailMessage} ({Duration}ms) [Timing {TimingId}]", _failMessage, Stopwatch.ElapsedMilliseconds, _timingId); + _logger.LogError(_failException, "{FailMessage} ({Duration}ms) [Timing {TimingId}]", _failMessage, Stopwatch.ElapsedMilliseconds, _timingId); } else switch (_level) { case LogLevel.Debug: - _logger.Debug(_loggerType, "{EndMessage} ({Duration}ms) [Timing {TimingId}]", _endMessage, Stopwatch.ElapsedMilliseconds, _timingId); + _logger.LogDebug("{EndMessage} ({Duration}ms) [Timing {TimingId}]", _endMessage, Stopwatch.ElapsedMilliseconds, _timingId); break; case LogLevel.Information: - _logger.Info(_loggerType, "{EndMessage} ({Duration}ms) [Timing {TimingId}]", _endMessage, Stopwatch.ElapsedMilliseconds, _timingId); + _logger.LogInformation("{EndMessage} ({Duration}ms) [Timing {TimingId}]", _endMessage, Stopwatch.ElapsedMilliseconds, _timingId); break; // filtered in the ctor //default: diff --git a/src/Umbraco.Core/Logging/ILogger.cs b/src/Umbraco.Core/Logging/ILogger.cs deleted file mode 100644 index fe7d798ebf..0000000000 --- a/src/Umbraco.Core/Logging/ILogger.cs +++ /dev/null @@ -1,182 +0,0 @@ -using System; - -namespace Umbraco.Core.Logging -{ - - /// - /// Defines the logging service. - /// - /// - /// Message templates in logging methods follow the Message Templates specification - /// available at https://messagetemplates.org/ in order to support structured logging. - /// Implementations must ensure that they support these templates. Note that the - /// specification includes support for traditional C# numeric placeholders. - /// For instance, "Processed {Input} in {Time}ms." - /// - public interface ILogger - { - /// - /// Determines if logging is enabled at a specified level, for a reporting type. - /// - /// The reporting type. - /// The level. - bool IsEnabled(Type reporting, LogLevel level); - - /// - /// Logs a fatal message with an exception. - /// - /// The reporting type. - /// An exception. - /// A message. - void Fatal(Type reporting, Exception exception, string message); - - /// - /// Logs a fatal exception. - /// - /// The reporting type. - /// An exception. - /// The message string is unspecified and is implementation-specific. - void Fatal(Type reporting, Exception exception); - - /// - /// Logs a fatal message. - /// - /// The reporting type. - /// A message. - void Fatal(Type reporting, string message); - - /// - /// Logs a fatal message with an exception. - /// - /// The reporting type. - /// An exception. - /// A message template. - /// Property values. - void Fatal(Type reporting, Exception exception, string messageTemplate, params object[] propertyValues); - - /// - /// Logs a fatal message. - /// - /// The reporting type. - /// A message template. - /// Property values. - void Fatal(Type reporting, string messageTemplate, params object[] propertyValues); - - /// - /// Logs an error message with an exception. - /// - /// The reporting type. - /// An exception. - /// A message. - void Error(Type reporting, Exception exception, string message); - - /// - /// Logs an error exception. - /// - /// The reporting type. - /// An exception. - /// The message string is unspecified and is implementation-specific. - void Error(Type reporting, Exception exception); - - /// - /// Logs an error message. - /// - /// The reporting type. - /// A message. - void Error(Type reporting, string message); - - /// - /// Logs an error message with an exception. - /// - /// The reporting type. - /// An exception. - /// A message template. - /// Property values. - void Error(Type reporting, Exception exception, string messageTemplate, params object[] propertyValues); - - /// - /// Logs an error message. - /// - /// The reporting type. - /// A message template. - /// Property values. - void Error(Type reporting, string messageTemplate, params object[] propertyValues); - - /// - /// Logs a warning message. - /// - /// The reporting type. - /// A message. - void Warn(Type reporting, string message); - - /// - /// Logs a warning message. - /// - /// The reporting type. - /// A message template. - /// Property values. - void Warn(Type reporting, string messageTemplate, params object[] propertyValues); - - /// - /// Logs a warning message with an exception. - /// - /// The reporting type. - /// An exception. - /// A message. - void Warn(Type reporting, Exception exception, string message); - - /// - /// Logs a warning message with an exception. - /// - /// The reporting type. - /// An exception. - /// A message template. - /// Property values. - void Warn(Type reporting, Exception exception, string messageTemplate, params object[] propertyValues); - - /// - /// Logs an information message. - /// - /// The reporting type. - /// A message. - void Info(Type reporting, string message); - - /// - /// Logs a info message. - /// - /// The reporting type. - /// A message template. - /// Property values. - void Info(Type reporting, string messageTemplate, params object[] propertyValues); - - /// - /// Logs a debugging message. - /// - /// The reporting type. - /// A message. - void Debug(Type reporting, string message); - - /// - /// Logs a debug message. - /// - /// The reporting type. - /// A message template. - /// Property values. - void Debug(Type reporting, string messageTemplate, params object[] propertyValues); - - /// - /// Logs a verbose message. - /// - /// The reporting type. - /// A message. - void Verbose(Type reporting, string message); - - /// - /// Logs a verbose message. - /// - /// The reporting type. - /// A message template. - /// Property values. - void Verbose(Type reporting, string messageTemplate, params object[] propertyValues); - } -} diff --git a/src/Umbraco.Core/Logging/IProfilingLogger.cs b/src/Umbraco.Core/Logging/IProfilingLogger.cs index 1d7c231e95..019b43d61e 100644 --- a/src/Umbraco.Core/Logging/IProfilingLogger.cs +++ b/src/Umbraco.Core/Logging/IProfilingLogger.cs @@ -5,7 +5,7 @@ namespace Umbraco.Core.Logging /// /// Defines the profiling logging service. /// - public interface IProfilingLogger : ILogger + public interface IProfilingLogger { /// /// Profiles an action and log as information messages. diff --git a/src/Umbraco.Core/Logging/LogProfiler.cs b/src/Umbraco.Core/Logging/LogProfiler.cs index a1d2a2e61f..047331fd3a 100644 --- a/src/Umbraco.Core/Logging/LogProfiler.cs +++ b/src/Umbraco.Core/Logging/LogProfiler.cs @@ -1,5 +1,6 @@ using System; using System.Diagnostics; +using Microsoft.Extensions.Logging; namespace Umbraco.Core.Logging { @@ -8,9 +9,9 @@ namespace Umbraco.Core.Logging /// public class LogProfiler : IProfiler { - private readonly ILogger _logger; + private readonly ILogger _logger; - public LogProfiler(ILogger logger) + public LogProfiler(ILogger logger) { _logger = logger; } @@ -18,8 +19,8 @@ namespace Umbraco.Core.Logging /// public IDisposable Step(string name) { - _logger.Debug("Begin: {ProfileName}", name); - return new LightDisposableTimer(duration => _logger.Info("End {ProfileName} ({ProfileDuration}ms)", name, duration)); + _logger.LogDebug("Begin: {ProfileName}", name); + return new LightDisposableTimer(duration => _logger.LogInformation("End {ProfileName} ({ProfileDuration}ms)", name, duration)); } /// diff --git a/src/Umbraco.Core/Logging/LoggerExtensions.cs b/src/Umbraco.Core/Logging/LoggerExtensions.cs deleted file mode 100644 index 3b105ed888..0000000000 --- a/src/Umbraco.Core/Logging/LoggerExtensions.cs +++ /dev/null @@ -1,186 +0,0 @@ -using System; - -namespace Umbraco.Core.Logging -{ - /// - /// Provides extension methods for the interface. - /// - public static class LoggerExtensions - { - /// - /// Determines if logging is enabled at a specified level, for a reporting type. - /// - /// The reporting type. - /// The logger. - /// The level. - public static bool IsEnabled(this ILogger logger, LogLevel level) - => logger.IsEnabled(typeof(T), level); - - /// - /// Logs an error message with an exception. - /// - /// The reporting type. - /// The logger. - /// A message. - /// An exception. - public static void Error(this ILogger logger, Exception exception, string message) - => logger.Error(typeof(T), exception, message); - - /// - /// Logs an error message with an exception. - /// - /// The reporting type. - /// The logger. - /// An exception. - /// A message template. - /// Property values. - public static void Error(this ILogger logger, Exception exception, string messageTemplate, params object[] propertyValues) - => logger.Error(typeof(T), exception, messageTemplate, propertyValues); - - /// - /// Logs an error exception. - /// - /// The reporting type. - /// The logger. - /// An exception. - public static void Error(this ILogger logger, Exception exception) - => logger.Error(typeof(T), exception); - - /// - /// Logs an error message. - /// - /// The reporting type. - /// The logger. - /// A message. - public static void Error(this ILogger logger, string message) - => logger.Error(typeof(T), message); - - /// - /// Logs an error message. - /// - /// The reporting type. - /// The logger. - /// A message template. - /// Property values. - public static void Error(this ILogger logger, string messageTemplate, params object[] propertyValues) - => logger.Error(typeof(T), messageTemplate, propertyValues); - - /// - /// Logs a warning message. - /// - /// The reporting type. - /// The logger. - /// A message. - public static void Warn(this ILogger logger, string message) - => logger.Warn(typeof(T), message); - - /// - /// Logs a warning message. - /// - /// The reporting type. - /// The logger. - /// A message template. - /// Property values. - public static void Warn(this ILogger logger, string messageTemplate, params object[] propertyValues) - => logger.Warn(typeof(T), messageTemplate, propertyValues); - - /// - /// Logs a warning message with an exception. - /// - /// The reporting type. - /// The logger. - /// An exception. - /// A message. - public static void Warn(this ILogger logger, Exception exception, string message) - => logger.Warn(typeof(T), exception, message); - - /// - /// Logs a warning message with an exception. - /// - /// The reporting type. - /// The logger. - /// An exception. - /// A message template. - /// Property values. - public static void Warn(this ILogger logger, Exception exception, string messageTemplate, params object[] propertyValues) - => logger.Warn(typeof(T), exception, messageTemplate, propertyValues); - - /// - /// Logs an information message. - /// - /// The reporting type. - /// The logger. - /// A message. - public static void Info(this ILogger logger, string message) - => logger.Info(typeof(T), message); - - /// - /// Logs a information message. - /// - /// The reporting type - /// The logger. - /// A message template. - /// Property values. - public static void Info(this ILogger logger, string messageTemplate, params object[] propertyValues) - => logger.Info(typeof(T), messageTemplate, propertyValues); - - /// - /// Logs a debugging message. - /// - /// The reporting type. - /// The logger. - /// A message. - public static void Debug(this ILogger logger, string message) - => logger.Debug(typeof(T), message); - - /// - /// Logs a debugging message. - /// - /// The reporting type - /// The logger. - /// A message template. - /// Property values. - public static void Debug(this ILogger logger, string messageTemplate, params object[] propertyValues) - => logger.Debug(typeof(T), messageTemplate, propertyValues); - - /// - /// Logs a verbose message. - /// - /// The reporting type. - /// The logger. - /// A message. - public static void Verbose(this ILogger logger, string message) - => logger.Verbose(typeof(T), message); - - /// - /// Logs a verbose message. - /// - /// The reporting type. - /// The logger. - /// A message template. - /// Property values. - public static void Verbose(this ILogger logger, string messageTemplate, params object[] propertyValues) - => logger.Verbose(typeof(T), messageTemplate, propertyValues); - - /// - /// Logs a fatal message. - /// - /// The reporting type. - /// The logger. - /// An exception. - /// A message. - public static void Fatal(this ILogger logger, Exception exception, string message) - => logger.Fatal(typeof(T), exception, message); - - /// - /// Logs a fatal message. - /// - /// The reporting type. - /// The logger. - /// An exception. - /// A message template. - /// Property values. - public static void Fatal(this ILogger logger, Exception exception, string messageTemplate, params object[] propertyValues) - => logger.Fatal(typeof(T), exception, messageTemplate, propertyValues); - } -} diff --git a/src/Umbraco.Core/Logging/NullLogger.cs b/src/Umbraco.Core/Logging/NullLogger.cs deleted file mode 100644 index 7945e0b965..0000000000 --- a/src/Umbraco.Core/Logging/NullLogger.cs +++ /dev/null @@ -1,109 +0,0 @@ -using System; - -namespace Umbraco.Core.Logging -{ - public class NullLogger : ILogger - { - public bool IsEnabled(Type reporting, LogLevel level) => false; - - public void Fatal(Type reporting, Exception exception, string message) - { - - } - - public void Fatal(Type reporting, Exception exception) - { - - } - - public void Fatal(Type reporting, string message) - { - - } - - public void Fatal(Type reporting, Exception exception, string messageTemplate, params object[] propertyValues) - { - - } - - public void Fatal(Type reporting, string messageTemplate, params object[] propertyValues) - { - - } - - public void Error(Type reporting, Exception exception, string message) - { - - } - - public void Error(Type reporting, Exception exception) - { - - } - - public void Error(Type reporting, string message) - { - - } - - public void Error(Type reporting, Exception exception, string messageTemplate, params object[] propertyValues) - { - - } - - public void Error(Type reporting, string messageTemplate, params object[] propertyValues) - { - - } - - public void Warn(Type reporting, string message) - { - - } - - public void Warn(Type reporting, string messageTemplate, params object[] propertyValues) - { - - } - - public void Warn(Type reporting, Exception exception, string message) - { - - } - - public void Warn(Type reporting, Exception exception, string messageTemplate, params object[] propertyValues) - { - - } - - public void Info(Type reporting, string message) - { - - } - - public void Info(Type reporting, string messageTemplate, params object[] propertyValues) - { - - } - - public void Debug(Type reporting, string message) - { - - } - - public void Debug(Type reporting, string messageTemplate, params object[] propertyValues) - { - - } - - public void Verbose(Type reporting, string message) - { - - } - - public void Verbose(Type reporting, string messageTemplate, params object[] propertyValues) - { - - } - } -} diff --git a/src/Umbraco.Core/Logging/ProfilingLogger.cs b/src/Umbraco.Core/Logging/ProfilingLogger.cs index d642926147..7bf04e3d77 100644 --- a/src/Umbraco.Core/Logging/ProfilingLogger.cs +++ b/src/Umbraco.Core/Logging/ProfilingLogger.cs @@ -1,4 +1,7 @@ using System; +using Microsoft.Extensions.Logging; +using Umbraco.Core.Models; + namespace Umbraco.Core.Logging { @@ -43,89 +46,56 @@ namespace Umbraco.Core.Logging public DisposableTimer DebugDuration(string startMessage) { - return Logger.IsEnabled(LogLevel.Debug) + return Logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug) ? DebugDuration(startMessage, "Completed.") : null; } public DisposableTimer DebugDuration(string startMessage, string completeMessage, string failMessage = null, int thresholdMilliseconds = 0) { - return Logger.IsEnabled(LogLevel.Debug) + return Logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug) ? new DisposableTimer(Logger, LogLevel.Debug, Profiler, typeof(T), startMessage, completeMessage, failMessage, thresholdMilliseconds) : null; } public DisposableTimer DebugDuration(Type loggerType, string startMessage, string completeMessage, string failMessage = null, int thresholdMilliseconds = 0) { - return Logger.IsEnabled(loggerType, LogLevel.Debug) + return Logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug) ? new DisposableTimer(Logger, LogLevel.Debug, Profiler, loggerType, startMessage, completeMessage, failMessage, thresholdMilliseconds) : null; } #region ILogger - public bool IsEnabled(Type reporting, LogLevel level) - => Logger.IsEnabled(reporting, level); + public bool IsEnabled(Microsoft.Extensions.Logging.LogLevel level) + => Logger.IsEnabled(level); - public void Fatal(Type reporting, Exception exception, string message) - => Logger.Fatal(reporting, exception, message); + public void LogCritical(Exception exception, string messageTemplate, params object[] propertyValues) + => Logger.LogCritical(exception, messageTemplate, propertyValues); - public void Fatal(Type reporting, Exception exception) - => Logger.Fatal(reporting, exception); + public void LogCritical(string messageTemplate, params object[] propertyValues) + => Logger.LogCritical(messageTemplate, propertyValues); - public void Fatal(Type reporting, string message) - => Logger.Fatal(reporting, message); + public void LogError(Exception exception, string messageTemplate, params object[] propertyValues) + => Logger.LogError(exception, messageTemplate, propertyValues); - public void Fatal(Type reporting, Exception exception, string messageTemplate, params object[] propertyValues) - => Logger.Fatal(reporting, exception, messageTemplate, propertyValues); + public void LogError(string messageTemplate, params object[] propertyValues) + => Logger.LogError(messageTemplate, propertyValues); - public void Fatal(Type reporting, string messageTemplate, params object[] propertyValues) - => Logger.Fatal(reporting, messageTemplate, propertyValues); + public void LogWarning(string messageTemplate, params object[] propertyValues) + => Logger.LogWarning(messageTemplate, propertyValues); - public void Error(Type reporting, Exception exception, string message) - => Logger.Error(reporting, exception, message); + public void LogWarning(Exception exception, string messageTemplate, params object[] propertyValues) + => Logger.LogWarning(exception, messageTemplate, propertyValues); - public void Error(Type reporting, Exception exception) - => Logger.Error(reporting, exception); + public void LogInformation(string messageTemplate, params object[] propertyValues) + => Logger.LogInformation(messageTemplate, propertyValues); - public void Error(Type reporting, string message) - => Logger.Error(reporting, message); + public void LogDebug(string messageTemplate, params object[] propertyValues) + => Logger.LogDebug(messageTemplate, propertyValues); - public void Error(Type reporting, Exception exception, string messageTemplate, params object[] propertyValues) - => Logger.Error(reporting, exception, messageTemplate, propertyValues); - - public void Error(Type reporting, string messageTemplate, params object[] propertyValues) - => Logger.Error(reporting, messageTemplate, propertyValues); - - public void Warn(Type reporting, string message) - => Logger.Warn(reporting, message); - - public void Warn(Type reporting, string messageTemplate, params object[] propertyValues) - => Logger.Warn(reporting, messageTemplate, propertyValues); - - public void Warn(Type reporting, Exception exception, string message) - => Logger.Warn(reporting, exception, message); - - public void Warn(Type reporting, Exception exception, string messageTemplate, params object[] propertyValues) - => Logger.Warn(reporting, exception, messageTemplate, propertyValues); - - public void Info(Type reporting, string message) - => Logger.Info(reporting, message); - - public void Info(Type reporting, string messageTemplate, params object[] propertyValues) - => Logger.Info(reporting, messageTemplate, propertyValues); - - public void Debug(Type reporting, string message) - => Logger.Debug(reporting, message); - - public void Debug(Type reporting, string messageTemplate, params object[] propertyValues) - => Logger.Debug(reporting, messageTemplate, propertyValues); - - public void Verbose(Type reporting, string message) - => Logger.Verbose(reporting, message); - - public void Verbose(Type reporting, string messageTemplate, params object[] propertyValues) - => Logger.Verbose(reporting, messageTemplate, propertyValues); + public void LogTrace(string messageTemplate, params object[] propertyValues) + => Logger.LogTrace(messageTemplate, propertyValues); #endregion } diff --git a/src/Umbraco.Core/Manifest/ManifestWatcher.cs b/src/Umbraco.Core/Manifest/ManifestWatcher.cs index 23caac3a1b..6bd893d298 100644 --- a/src/Umbraco.Core/Manifest/ManifestWatcher.cs +++ b/src/Umbraco.Core/Manifest/ManifestWatcher.cs @@ -2,8 +2,8 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core.Hosting; -using Umbraco.Core.Logging; using Umbraco.Net; namespace Umbraco.Core.Manifest @@ -13,11 +13,11 @@ namespace Umbraco.Core.Manifest private static readonly object Locker = new object(); private static volatile bool _isRestarting; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IUmbracoApplicationLifetime _umbracoApplicationLifetime; private readonly List _fws = new List(); - public ManifestWatcher(ILogger logger, IUmbracoApplicationLifetime umbracoApplicationLifetime) + public ManifestWatcher(ILogger logger, IUmbracoApplicationLifetime umbracoApplicationLifetime) { _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _umbracoApplicationLifetime = umbracoApplicationLifetime; @@ -57,7 +57,7 @@ namespace Umbraco.Core.Manifest if (_isRestarting) return; _isRestarting = true; - _logger.Info("Manifest has changed, app pool is restarting ({Path})", e.FullPath); + _logger.LogInformation("Manifest has changed, app pool is restarting ({Path})", e.FullPath); _umbracoApplicationLifetime.Restart(); Dispose(); // uh? if the app restarts then this should be disposed anyways? } diff --git a/src/Umbraco.Core/Models/Mapping/ContentPropertyBasicMapper.cs b/src/Umbraco.Core/Models/Mapping/ContentPropertyBasicMapper.cs index a46a0b0d86..9742753b47 100644 --- a/src/Umbraco.Core/Models/Mapping/ContentPropertyBasicMapper.cs +++ b/src/Umbraco.Core/Models/Mapping/ContentPropertyBasicMapper.cs @@ -1,7 +1,7 @@ using System; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core; -using Umbraco.Core.Logging; using Umbraco.Core.Mapping; using Umbraco.Core.Models; using Umbraco.Core.PropertyEditors; @@ -17,11 +17,11 @@ namespace Umbraco.Web.Models.Mapping where TDestination : ContentPropertyBasic, new() { private readonly IEntityService _entityService; - private readonly ILogger _logger; + private readonly ILogger> _logger; private readonly PropertyEditorCollection _propertyEditors; protected IDataTypeService DataTypeService { get; } - public ContentPropertyBasicMapper(IDataTypeService dataTypeService, IEntityService entityService, ILogger logger, PropertyEditorCollection propertyEditors) + public ContentPropertyBasicMapper(IDataTypeService dataTypeService, IEntityService entityService, ILogger> logger, PropertyEditorCollection propertyEditors) { _logger = logger; _propertyEditors = propertyEditors; @@ -38,7 +38,7 @@ namespace Umbraco.Web.Models.Mapping var editor = _propertyEditors[property.PropertyType.PropertyEditorAlias]; if (editor == null) { - _logger.Error>( + _logger.LogError( new NullReferenceException("The property editor with alias " + property.PropertyType.PropertyEditorAlias + " does not exist"), "No property editor '{PropertyEditorAlias}' found, converting to a Label", property.PropertyType.PropertyEditorAlias); diff --git a/src/Umbraco.Core/Models/Mapping/ContentPropertyDisplayMapper.cs b/src/Umbraco.Core/Models/Mapping/ContentPropertyDisplayMapper.cs index 2bde6d72b1..a7771015a0 100644 --- a/src/Umbraco.Core/Models/Mapping/ContentPropertyDisplayMapper.cs +++ b/src/Umbraco.Core/Models/Mapping/ContentPropertyDisplayMapper.cs @@ -1,5 +1,5 @@ -using Umbraco.Core.Dictionary; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; +using Umbraco.Core.Dictionary; using Umbraco.Core.Mapping; using Umbraco.Core.Models; using Umbraco.Core.PropertyEditors; @@ -16,7 +16,7 @@ namespace Umbraco.Web.Models.Mapping private readonly ICultureDictionary _cultureDictionary; private readonly ILocalizedTextService _textService; - public ContentPropertyDisplayMapper(ICultureDictionary cultureDictionary, IDataTypeService dataTypeService, IEntityService entityService, ILocalizedTextService textService, ILogger logger, PropertyEditorCollection propertyEditors) + public ContentPropertyDisplayMapper(ICultureDictionary cultureDictionary, IDataTypeService dataTypeService, IEntityService entityService, ILocalizedTextService textService, ILogger logger, PropertyEditorCollection propertyEditors) : base(dataTypeService, entityService, logger, propertyEditors) { _cultureDictionary = cultureDictionary; diff --git a/src/Umbraco.Core/Models/Mapping/ContentPropertyDtoMapper.cs b/src/Umbraco.Core/Models/Mapping/ContentPropertyDtoMapper.cs index bc37bf6e2b..e431614afc 100644 --- a/src/Umbraco.Core/Models/Mapping/ContentPropertyDtoMapper.cs +++ b/src/Umbraco.Core/Models/Mapping/ContentPropertyDtoMapper.cs @@ -1,4 +1,4 @@ -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Core.Mapping; using Umbraco.Core.Models; using Umbraco.Core.PropertyEditors; @@ -12,7 +12,7 @@ namespace Umbraco.Web.Models.Mapping /// internal class ContentPropertyDtoMapper : ContentPropertyBasicMapper { - public ContentPropertyDtoMapper(IDataTypeService dataTypeService, IEntityService entityService, ILogger logger, PropertyEditorCollection propertyEditors) + public ContentPropertyDtoMapper(IDataTypeService dataTypeService, IEntityService entityService, ILogger logger, PropertyEditorCollection propertyEditors) : base(dataTypeService, entityService, logger, propertyEditors) { } diff --git a/src/Umbraco.Core/Models/Mapping/ContentPropertyMapDefinition.cs b/src/Umbraco.Core/Models/Mapping/ContentPropertyMapDefinition.cs index c5b989e39c..a74b0467e2 100644 --- a/src/Umbraco.Core/Models/Mapping/ContentPropertyMapDefinition.cs +++ b/src/Umbraco.Core/Models/Mapping/ContentPropertyMapDefinition.cs @@ -1,5 +1,5 @@ -using Umbraco.Core.Dictionary; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; +using Umbraco.Core.Dictionary; using Umbraco.Core.Mapping; using Umbraco.Core.Models; using Umbraco.Core.PropertyEditors; @@ -18,11 +18,11 @@ namespace Umbraco.Web.Models.Mapping private readonly ContentPropertyDtoMapper _contentPropertyDtoConverter; private readonly ContentPropertyDisplayMapper _contentPropertyDisplayMapper; - public ContentPropertyMapDefinition(ICultureDictionary cultureDictionary, IDataTypeService dataTypeService, IEntityService entityService, ILocalizedTextService textService, ILogger logger, PropertyEditorCollection propertyEditors) + public ContentPropertyMapDefinition(ICultureDictionary cultureDictionary, IDataTypeService dataTypeService, IEntityService entityService, ILocalizedTextService textService, ILoggerFactory loggerFactory, PropertyEditorCollection propertyEditors) { - _contentPropertyBasicConverter = new ContentPropertyBasicMapper(dataTypeService, entityService, logger, propertyEditors); - _contentPropertyDtoConverter = new ContentPropertyDtoMapper(dataTypeService, entityService, logger, propertyEditors); - _contentPropertyDisplayMapper = new ContentPropertyDisplayMapper(cultureDictionary, dataTypeService, entityService, textService, logger, propertyEditors); + _contentPropertyBasicConverter = new ContentPropertyBasicMapper(dataTypeService, entityService, loggerFactory.CreateLogger>(), propertyEditors); + _contentPropertyDtoConverter = new ContentPropertyDtoMapper(dataTypeService, entityService, loggerFactory.CreateLogger(), propertyEditors); + _contentPropertyDisplayMapper = new ContentPropertyDisplayMapper(cultureDictionary, dataTypeService, entityService, textService, loggerFactory.CreateLogger(), propertyEditors); } public void DefineMaps(UmbracoMapper mapper) diff --git a/src/Umbraco.Core/Models/Member.cs b/src/Umbraco.Core/Models/Member.cs index 706729b71a..d155db8b7c 100644 --- a/src/Umbraco.Core/Models/Member.cs +++ b/src/Umbraco.Core/Models/Member.cs @@ -2,8 +2,9 @@ using System.Collections.Generic; using System.ComponentModel; using System.Runtime.Serialization; +using Microsoft.Extensions.Logging; using Umbraco.Composing; -using Umbraco.Core.Logging; + namespace Umbraco.Core.Models { @@ -414,7 +415,7 @@ namespace Umbraco.Core.Models public virtual string ContentTypeAlias => ContentType.Alias; /// - /// Internal/Experimental - only used for mapping queries. + /// Internal/Experimental - only used for mapping queries. /// /// /// Adding these to have first level properties instead of the Properties collection. @@ -423,7 +424,7 @@ namespace Umbraco.Core.Models [EditorBrowsable(EditorBrowsableState.Never)] public string LongStringPropertyValue { get; set; } /// - /// Internal/Experimental - only used for mapping queries. + /// Internal/Experimental - only used for mapping queries. /// /// /// Adding these to have first level properties instead of the Properties collection. @@ -432,7 +433,7 @@ namespace Umbraco.Core.Models [EditorBrowsable(EditorBrowsableState.Never)] public string ShortStringPropertyValue { get; set; } /// - /// Internal/Experimental - only used for mapping queries. + /// Internal/Experimental - only used for mapping queries. /// /// /// Adding these to have first level properties instead of the Properties collection. @@ -441,7 +442,7 @@ namespace Umbraco.Core.Models [EditorBrowsable(EditorBrowsableState.Never)] public int IntegerPropertyValue { get; set; } /// - /// Internal/Experimental - only used for mapping queries. + /// Internal/Experimental - only used for mapping queries. /// /// /// Adding these to have first level properties instead of the Properties collection. @@ -450,7 +451,7 @@ namespace Umbraco.Core.Models [EditorBrowsable(EditorBrowsableState.Never)] public bool BoolPropertyValue { get; set; } /// - /// Internal/Experimental - only used for mapping queries. + /// Internal/Experimental - only used for mapping queries. /// /// /// Adding these to have first level properties instead of the Properties collection. @@ -459,7 +460,7 @@ namespace Umbraco.Core.Models [EditorBrowsable(EditorBrowsableState.Never)] public DateTime DateTimePropertyValue { get; set; } /// - /// Internal/Experimental - only used for mapping queries. + /// Internal/Experimental - only used for mapping queries. /// /// /// Adding these to have first level properties instead of the Properties collection. @@ -472,7 +473,7 @@ namespace Umbraco.Core.Models { void DoLog(string logPropertyAlias, string logPropertyName) { - Current.Logger.Warn("Trying to access the '{PropertyName}' property on '{MemberType}' " + + Current.Logger.LogWarning("Trying to access the '{PropertyName}' property on '{MemberType}' " + "but the {PropertyAlias} property does not exist on the member type so a default value is returned. " + "Ensure that you have a property type with alias: {PropertyAlias} configured on your member type in order to use the '{PropertyName}' property on the model correctly.", logPropertyName, @@ -497,7 +498,7 @@ namespace Umbraco.Core.Models { void DoLog(string logPropertyAlias, string logPropertyName) { - Current.Logger.Warn("An attempt was made to set a value on the property '{PropertyName}' on type '{MemberType}' but the " + + Current.Logger.LogWarning("An attempt was made to set a value on the property '{PropertyName}' on type '{MemberType}' but the " + "property type {PropertyAlias} does not exist on the member type, ensure that this property type exists so that setting this property works correctly.", logPropertyName, typeof(Member), @@ -524,6 +525,6 @@ namespace Umbraco.Core.Models /// [IgnoreDataMember] - public bool HasAdditionalData => _additionalData != null; + public bool HasAdditionalData => _additionalData != null; } } diff --git a/src/Umbraco.Core/Packaging/PackageActionRunner.cs b/src/Umbraco.Core/Packaging/PackageActionRunner.cs index 42a1a7042d..138feadf29 100644 --- a/src/Umbraco.Core/Packaging/PackageActionRunner.cs +++ b/src/Umbraco.Core/Packaging/PackageActionRunner.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; using System.Xml.Linq; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Core.PackageActions; namespace Umbraco.Core.Packaging @@ -11,10 +11,10 @@ namespace Umbraco.Core.Packaging /// public class PackageActionRunner : IPackageActionRunner { - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly PackageActionCollection _packageActions; - public PackageActionRunner(ILogger logger, PackageActionCollection packageActions) + public PackageActionRunner(ILogger logger, PackageActionCollection packageActions) { _logger = logger; _packageActions = packageActions; @@ -34,7 +34,7 @@ namespace Umbraco.Core.Packaging catch (Exception ex) { e.Add($"{ipa.Alias()} - {ex.Message}"); - _logger.Error(ex, "Error loading package action '{PackageActionAlias}' for package {PackageName}", ipa.Alias(), packageName); + _logger.LogError(ex, "Error loading package action '{PackageActionAlias}' for package {PackageName}", ipa.Alias(), packageName); } } @@ -56,7 +56,7 @@ namespace Umbraco.Core.Packaging catch (Exception ex) { e.Add($"{ipa.Alias()} - {ex.Message}"); - _logger.Error(ex, "Error undoing package action '{PackageActionAlias}' for package {PackageName}", ipa.Alias(), packageName); + _logger.LogError(ex, "Error undoing package action '{PackageActionAlias}' for package {PackageName}", ipa.Alias(), packageName); } } errors = e; diff --git a/src/Umbraco.Core/Packaging/PackageDefinitionXmlParser.cs b/src/Umbraco.Core/Packaging/PackageDefinitionXmlParser.cs index d28ee828c5..a9516d7e25 100644 --- a/src/Umbraco.Core/Packaging/PackageDefinitionXmlParser.cs +++ b/src/Umbraco.Core/Packaging/PackageDefinitionXmlParser.cs @@ -2,8 +2,8 @@ using System.Collections.Generic; using System.Linq; using System.Xml.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core.Configuration; -using Umbraco.Core.Logging; using Umbraco.Core.Models.Packaging; namespace Umbraco.Core.Packaging @@ -13,10 +13,10 @@ namespace Umbraco.Core.Packaging /// public class PackageDefinitionXmlParser { - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IUmbracoVersion _umbracoVersion; - public PackageDefinitionXmlParser(ILogger logger, IUmbracoVersion umbracoVersion) + public PackageDefinitionXmlParser(ILogger logger, IUmbracoVersion umbracoVersion) { _logger = logger; _umbracoVersion = umbracoVersion; @@ -68,7 +68,7 @@ namespace Umbraco.Core.Packaging } catch (Exception e) { - _logger.Warn(e, "Could not add package actions to the package xml definition, the xml did not parse"); + _logger.LogWarning(e, "Could not add package actions to the package xml definition, the xml did not parse"); } var packageXml = new XElement("package", diff --git a/src/Umbraco.Core/Packaging/PackagesRepository.cs b/src/Umbraco.Core/Packaging/PackagesRepository.cs index 7e57fe25f4..59741ab1ce 100644 --- a/src/Umbraco.Core/Packaging/PackagesRepository.cs +++ b/src/Umbraco.Core/Packaging/PackagesRepository.cs @@ -6,10 +6,10 @@ using System.IO.Compression; using System.Linq; using System.Xml.Linq; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Hosting; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Packaging; using Umbraco.Core.Services; @@ -29,7 +29,8 @@ namespace Umbraco.Core.Packaging private readonly IMacroService _macroService; private readonly ILocalizationService _languageService; private readonly IEntityXmlSerializer _serializer; - private readonly ILogger _logger; + private readonly ILoggerFactory _loggerFactory; + private readonly ILogger _logger; private readonly IHostingEnvironment _hostingEnvironment; private readonly string _packageRepositoryFileName; private readonly string _mediaFolderPath; @@ -60,7 +61,8 @@ namespace Umbraco.Core.Packaging IDataTypeService dataTypeService, IFileService fileService, IMacroService macroService, ILocalizationService languageService, IHostingEnvironment hostingEnvironment, - IEntityXmlSerializer serializer, ILogger logger, + IEntityXmlSerializer serializer, + ILoggerFactory loggerFactory, IUmbracoVersion umbracoVersion, IOptions globalSettings, string packageRepositoryFileName, @@ -74,7 +76,8 @@ namespace Umbraco.Core.Packaging _macroService = macroService; _languageService = languageService; _serializer = serializer; - _logger = logger; + _loggerFactory = loggerFactory; + _logger = _loggerFactory.CreateLogger(); _hostingEnvironment = hostingEnvironment; _packageRepositoryFileName = packageRepositoryFileName; @@ -82,7 +85,7 @@ namespace Umbraco.Core.Packaging _packagesFolderPath = packagesFolderPath ?? Constants.SystemDirectories.Packages; _mediaFolderPath = mediaFolderPath ?? globalSettings.Value.UmbracoMediaPath + "/created-packages"; - _parser = new PackageDefinitionXmlParser(logger, umbracoVersion); + _parser = new PackageDefinitionXmlParser(_loggerFactory.CreateLogger(), umbracoVersion); _umbracoVersion = umbracoVersion; } @@ -214,7 +217,7 @@ namespace Umbraco.Core.Packaging } catch (Exception e) { - _logger.Warn(e, "Could not add package actions to the package, the xml did not parse"); + _logger.LogWarning(e, "Could not add package actions to the package, the xml did not parse"); } } diff --git a/src/Umbraco.Core/Routing/ContentFinderByIdPath.cs b/src/Umbraco.Core/Routing/ContentFinderByIdPath.cs index a9d67c24fb..856b91e36f 100644 --- a/src/Umbraco.Core/Routing/ContentFinderByIdPath.cs +++ b/src/Umbraco.Core/Routing/ContentFinderByIdPath.cs @@ -1,4 +1,3 @@ -using Umbraco.Core.Logging; using Umbraco.Core; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.UmbracoSettings; @@ -6,6 +5,7 @@ using Umbraco.Core.Models.PublishedContent; using System.Globalization; using Umbraco.Core.Configuration.Models; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; namespace Umbraco.Web.Routing { @@ -17,11 +17,11 @@ namespace Umbraco.Web.Routing /// public class ContentFinderByIdPath : IContentFinder { - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IRequestAccessor _requestAccessor; private readonly WebRoutingSettings _webRoutingSettings; - public ContentFinderByIdPath(IOptions webRoutingSettings, ILogger logger, IRequestAccessor requestAccessor) + public ContentFinderByIdPath(IOptions webRoutingSettings, ILogger logger, IRequestAccessor requestAccessor) { _webRoutingSettings = webRoutingSettings.Value ?? throw new System.ArgumentNullException(nameof(webRoutingSettings)); _logger = logger ?? throw new System.ArgumentNullException(nameof(logger)); @@ -53,7 +53,7 @@ namespace Umbraco.Web.Routing if (nodeId > 0) { - _logger.Debug("Id={NodeId}", nodeId); + _logger.LogDebug("Id={NodeId}", nodeId); node = frequest.UmbracoContext.Content.GetById(nodeId); if (node != null) @@ -69,7 +69,7 @@ namespace Umbraco.Web.Routing } frequest.PublishedContent = node; - _logger.Debug("Found node with id={PublishedContentId}", frequest.PublishedContent.Id); + _logger.LogDebug("Found node with id={PublishedContentId}", frequest.PublishedContent.Id); } else { @@ -79,7 +79,7 @@ namespace Umbraco.Web.Routing } if (nodeId == -1) - _logger.Debug("Not a node id"); + _logger.LogDebug("Not a node id"); return node != null; } diff --git a/src/Umbraco.Core/Routing/ContentFinderByRedirectUrl.cs b/src/Umbraco.Core/Routing/ContentFinderByRedirectUrl.cs index 4e67779c1c..7a58b1c995 100644 --- a/src/Umbraco.Core/Routing/ContentFinderByRedirectUrl.cs +++ b/src/Umbraco.Core/Routing/ContentFinderByRedirectUrl.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; +using Microsoft.Extensions.Logging; using Umbraco.Core; -using Umbraco.Core.Logging; using Umbraco.Core.Services; namespace Umbraco.Web.Routing @@ -15,10 +15,10 @@ namespace Umbraco.Web.Routing public class ContentFinderByRedirectUrl : IContentFinder { private readonly IRedirectUrlService _redirectUrlService; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IPublishedUrlProvider _publishedUrlProvider; - public ContentFinderByRedirectUrl(IRedirectUrlService redirectUrlService, ILogger logger, IPublishedUrlProvider publishedUrlProvider) + public ContentFinderByRedirectUrl(IRedirectUrlService redirectUrlService, ILogger logger, IPublishedUrlProvider publishedUrlProvider) { _redirectUrlService = redirectUrlService; _logger = logger; @@ -41,7 +41,7 @@ namespace Umbraco.Web.Routing if (redirectUrl == null) { - _logger.Debug("No match for route: {Route}", route); + _logger.LogDebug("No match for route: {Route}", route); return false; } @@ -49,14 +49,14 @@ namespace Umbraco.Web.Routing var url = content == null ? "#" : content.Url(_publishedUrlProvider, redirectUrl.Culture); if (url.StartsWith("#")) { - _logger.Debug("Route {Route} matches content {ContentId} which has no url.", route, redirectUrl.ContentId); + _logger.LogDebug("Route {Route} matches content {ContentId} which has no url.", route, redirectUrl.ContentId); return false; } // Appending any querystring from the incoming request to the redirect url. url = string.IsNullOrEmpty(frequest.Uri.Query) ? url : url + frequest.Uri.Query; - _logger.Debug("Route {Route} matches content {ContentId} with url '{Url}', redirecting.", route, content.Id, url); + _logger.LogDebug("Route {Route} matches content {ContentId} with url '{Url}', redirecting.", route, content.Id, url); frequest.SetRedirectPermanent(url); diff --git a/src/Umbraco.Core/Routing/ContentFinderByUrl.cs b/src/Umbraco.Core/Routing/ContentFinderByUrl.cs index 3fcffff842..85e8195c75 100644 --- a/src/Umbraco.Core/Routing/ContentFinderByUrl.cs +++ b/src/Umbraco.Core/Routing/ContentFinderByUrl.cs @@ -1,4 +1,4 @@ -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Models.PublishedContent; @@ -12,11 +12,11 @@ namespace Umbraco.Web.Routing /// public class ContentFinderByUrl : IContentFinder { - protected ILogger Logger { get; } + private readonly ILogger _logger; - public ContentFinderByUrl(ILogger logger) + public ContentFinderByUrl(ILogger logger) { - Logger = logger; + _logger = logger; } /// @@ -46,17 +46,17 @@ namespace Umbraco.Web.Routing { if (docreq == null) throw new System.ArgumentNullException(nameof(docreq)); - Logger.Debug("Test route {Route}", route); + _logger.LogDebug("Test route {Route}", route); var node = docreq.UmbracoContext.Content.GetByRoute(docreq.UmbracoContext.InPreviewMode, route, culture: docreq.Culture?.Name); if (node != null) { docreq.PublishedContent = node; - Logger.Debug("Got content, id={NodeId}", node.Id); + _logger.LogDebug("Got content, id={NodeId}", node.Id); } else { - Logger.Debug("No match."); + _logger.LogDebug("No match."); } return node; diff --git a/src/Umbraco.Core/Routing/ContentFinderByUrlAlias.cs b/src/Umbraco.Core/Routing/ContentFinderByUrlAlias.cs index 6bc1b329ed..cbb93aedb9 100644 --- a/src/Umbraco.Core/Routing/ContentFinderByUrlAlias.cs +++ b/src/Umbraco.Core/Routing/ContentFinderByUrlAlias.cs @@ -1,7 +1,7 @@ using System; using System.Text; using System.Linq; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Models.PublishedContent; using Umbraco.Core.Xml; @@ -20,13 +20,13 @@ namespace Umbraco.Web.Routing { private readonly IPublishedValueFallback _publishedValueFallback; private readonly IVariationContextAccessor _variationContextAccessor; - protected ILogger Logger { get; } + private readonly ILogger _logger; - public ContentFinderByUrlAlias(ILogger logger, IPublishedValueFallback publishedValueFallback, IVariationContextAccessor variationContextAccessor) + public ContentFinderByUrlAlias(ILogger logger, IPublishedValueFallback publishedValueFallback, IVariationContextAccessor variationContextAccessor) { _publishedValueFallback = publishedValueFallback; _variationContextAccessor = variationContextAccessor; - Logger = logger; + _logger = logger; } /// @@ -48,7 +48,7 @@ namespace Umbraco.Web.Routing if (node != null) { frequest.PublishedContent = node; - Logger.Debug("Path '{UriAbsolutePath}' is an alias for id={PublishedContentId}", frequest.Uri.AbsolutePath, frequest.PublishedContent.Id); + _logger.LogDebug("Path '{UriAbsolutePath}' is an alias for id={PublishedContentId}", frequest.Uri.AbsolutePath, frequest.PublishedContent.Id); } } diff --git a/src/Umbraco.Core/Routing/ContentFinderByUrlAndTemplate.cs b/src/Umbraco.Core/Routing/ContentFinderByUrlAndTemplate.cs index b6a01c0c51..dc2f46b7cf 100644 --- a/src/Umbraco.Core/Routing/ContentFinderByUrlAndTemplate.cs +++ b/src/Umbraco.Core/Routing/ContentFinderByUrlAndTemplate.cs @@ -1,10 +1,10 @@ -using Umbraco.Core.Logging; using Umbraco.Core; using Umbraco.Core.Configuration.UmbracoSettings; using Umbraco.Core.Models.PublishedContent; using Umbraco.Core.Services; using Umbraco.Core.Configuration.Models; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; namespace Umbraco.Web.Routing { @@ -18,14 +18,16 @@ namespace Umbraco.Web.Routing /// public class ContentFinderByUrlAndTemplate : ContentFinderByUrl { + private readonly ILogger _logger; private readonly IFileService _fileService; private readonly IContentTypeService _contentTypeService; private readonly WebRoutingSettings _webRoutingSettings; - public ContentFinderByUrlAndTemplate(ILogger logger, IFileService fileService, IContentTypeService contentTypeService, IOptions webRoutingSettings) + public ContentFinderByUrlAndTemplate(ILogger logger, IFileService fileService, IContentTypeService contentTypeService, IOptions webRoutingSettings) : base(logger) { + _logger = logger; _fileService = fileService; _contentTypeService = contentTypeService; _webRoutingSettings = webRoutingSettings.Value; @@ -48,7 +50,7 @@ namespace Umbraco.Web.Routing // no template if "/" if (path == "/") { - Logger.Debug("No template in path '/'"); + _logger.LogDebug("No template in path '/'"); return false; } @@ -61,11 +63,11 @@ namespace Umbraco.Web.Routing if (template == null) { - Logger.Debug("Not a valid template: '{TemplateAlias}'", templateAlias); + _logger.LogDebug("Not a valid template: '{TemplateAlias}'", templateAlias); return false; } - Logger.Debug("Valid template: '{TemplateAlias}'", templateAlias); + _logger.LogDebug("Valid template: '{TemplateAlias}'", templateAlias); // look for node corresponding to the rest of the route var route = frequest.HasDomain ? (frequest.Domain.ContentId + path) : path; @@ -73,14 +75,14 @@ namespace Umbraco.Web.Routing if (node == null) { - Logger.Debug("Not a valid route to node: '{Route}'", route); + _logger.LogDebug("Not a valid route to node: '{Route}'", route); return false; } // IsAllowedTemplate deals both with DisableAlternativeTemplates and ValidateAlternativeTemplates settings if (!node.IsAllowedTemplate(_contentTypeService, _webRoutingSettings, template.Id)) { - Logger.Warn("Alternative template '{TemplateAlias}' is not allowed on node {NodeId}.", template.Alias, node.Id); + _logger.LogWarning("Alternative template '{TemplateAlias}' is not allowed on node {NodeId}.", template.Alias, node.Id); frequest.PublishedContent = null; // clear return false; } diff --git a/src/Umbraco.Core/Routing/DefaultUrlProvider.cs b/src/Umbraco.Core/Routing/DefaultUrlProvider.cs index 2af36465dd..5c85bfe68d 100644 --- a/src/Umbraco.Core/Routing/DefaultUrlProvider.cs +++ b/src/Umbraco.Core/Routing/DefaultUrlProvider.cs @@ -1,10 +1,10 @@ using System; using System.Collections.Generic; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Configuration.UmbracoSettings; -using Umbraco.Core.Logging; using Umbraco.Core.Models.PublishedContent; namespace Umbraco.Web.Routing @@ -15,13 +15,13 @@ namespace Umbraco.Web.Routing public class DefaultUrlProvider : IUrlProvider { private readonly RequestHandlerSettings _requestSettings; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly GlobalSettings _globalSettings; private readonly ISiteDomainHelper _siteDomainHelper; private readonly IUmbracoContextAccessor _umbracoContextAccessor; private readonly UriUtility _uriUtility; - public DefaultUrlProvider(IOptions requestSettings, ILogger logger, IOptions globalSettings, ISiteDomainHelper siteDomainHelper, IUmbracoContextAccessor umbracoContextAccessor, UriUtility uriUtility) + public DefaultUrlProvider(IOptions requestSettings, ILogger logger, IOptions globalSettings, ISiteDomainHelper siteDomainHelper, IUmbracoContextAccessor umbracoContextAccessor, UriUtility uriUtility) { _requestSettings = requestSettings.Value; _logger = logger; @@ -49,7 +49,7 @@ namespace Umbraco.Web.Routing { if (string.IsNullOrWhiteSpace(route)) { - _logger.Debug("Couldn't find any page with nodeId={NodeId}. This is most likely caused by the page not being published.", id); + _logger.LogDebug("Couldn't find any page with nodeId={NodeId}. This is most likely caused by the page not being published.", id); return null; } diff --git a/src/Umbraco.Core/Routing/PublishedRouter.cs b/src/Umbraco.Core/Routing/PublishedRouter.cs index 6de64800c3..21f760f5a0 100644 --- a/src/Umbraco.Core/Routing/PublishedRouter.cs +++ b/src/Umbraco.Core/Routing/PublishedRouter.cs @@ -3,6 +3,7 @@ using System.Linq; using System.Threading; using System.Globalization; using System.IO; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Configuration.UmbracoSettings; using Umbraco.Core.Logging; @@ -25,7 +26,7 @@ namespace Umbraco.Web.Routing private readonly IContentLastChanceFinder _contentLastChanceFinder; private readonly IProfilingLogger _profilingLogger; private readonly IVariationContextAccessor _variationContextAccessor; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IPublishedUrlProvider _publishedUrlProvider; private readonly IRequestAccessor _requestAccessor; private readonly IPublishedValueFallback _publishedValueFallback; @@ -43,6 +44,7 @@ namespace Umbraco.Web.Routing IContentLastChanceFinder contentLastChanceFinder, IVariationContextAccessor variationContextAccessor, IProfilingLogger proflog, + ILogger logger, IPublishedUrlProvider publishedUrlProvider, IRequestAccessor requestAccessor, IPublishedValueFallback publishedValueFallback, @@ -56,7 +58,7 @@ namespace Umbraco.Web.Routing _contentLastChanceFinder = contentLastChanceFinder ?? throw new ArgumentNullException(nameof(contentLastChanceFinder)); _profilingLogger = proflog ?? throw new ArgumentNullException(nameof(proflog)); _variationContextAccessor = variationContextAccessor ?? throw new ArgumentNullException(nameof(variationContextAccessor)); - _logger = proflog; + _logger = logger; _publishedUrlProvider = publishedUrlProvider; _requestAccessor = requestAccessor; _publishedValueFallback = publishedValueFallback; @@ -249,7 +251,7 @@ namespace Umbraco.Web.Routing // note - we are not handling schemes nor ports here. - _logger.Debug("{TracePrefix}Uri={RequestUri}", tracePrefix, request.Uri); + _logger.LogDebug("{TracePrefix}Uri={RequestUri}", tracePrefix, request.Uri); var domainsCache = request.UmbracoContext.PublishedSnapshot.Domains; var domains = domainsCache.GetAll(includeWildcards: false).ToList(); @@ -286,7 +288,7 @@ namespace Umbraco.Web.Routing if (domainAndUri != null) { // matching an existing domain - _logger.Debug("{TracePrefix}Matches domain={Domain}, rootId={RootContentId}, culture={Culture}", tracePrefix, domainAndUri.Name, domainAndUri.ContentId, domainAndUri.Culture); + _logger.LogDebug("{TracePrefix}Matches domain={Domain}, rootId={RootContentId}, culture={Culture}", tracePrefix, domainAndUri.Name, domainAndUri.ContentId, domainAndUri.Culture); request.Domain = domainAndUri; request.Culture = domainAndUri.Culture; @@ -301,12 +303,12 @@ namespace Umbraco.Web.Routing else { // not matching any existing domain - _logger.Debug("{TracePrefix}Matches no domain", tracePrefix); + _logger.LogDebug("{TracePrefix}Matches no domain", tracePrefix); request.Culture = defaultCulture == null ? CultureInfo.CurrentUICulture : new CultureInfo(defaultCulture); } - _logger.Debug("{TracePrefix}Culture={CultureName}", tracePrefix, request.Culture.Name); + _logger.LogDebug("{TracePrefix}Culture={CultureName}", tracePrefix, request.Culture.Name); return request.Domain != null; } @@ -322,7 +324,7 @@ namespace Umbraco.Web.Routing return; var nodePath = request.PublishedContent.Path; - _logger.Debug("{TracePrefix}Path={NodePath}", tracePrefix, nodePath); + _logger.LogDebug("{TracePrefix}Path={NodePath}", tracePrefix, nodePath); var rootNodeId = request.HasDomain ? request.Domain.ContentId : (int?)null; var domain = DomainUtilities.FindWildcardDomainInPath(request.UmbracoContext.PublishedSnapshot.Domains.GetAll(true), nodePath, rootNodeId); @@ -330,11 +332,11 @@ namespace Umbraco.Web.Routing if (domain != null) { request.Culture = domain.Culture; - _logger.Debug("{TracePrefix}Got domain on node {DomainContentId}, set culture to {CultureName}", tracePrefix, domain.ContentId, request.Culture.Name); + _logger.LogDebug("{TracePrefix}Got domain on node {DomainContentId}, set culture to {CultureName}", tracePrefix, domain.ContentId, request.Culture.Name); } else { - _logger.Debug("{TracePrefix}No match.", tracePrefix); + _logger.LogDebug("{TracePrefix}No match.", tracePrefix); } } @@ -376,7 +378,7 @@ namespace Umbraco.Web.Routing /// A value indicating whether a document and template were found. private void FindPublishedContentAndTemplate(IPublishedRequest request) { - _logger.Debug("FindPublishedContentAndTemplate: Path={UriAbsolutePath}", request.Uri.AbsolutePath); + _logger.LogDebug("FindPublishedContentAndTemplate: Path={UriAbsolutePath}", request.Uri.AbsolutePath); // run the document finders FindPublishedContent(request); @@ -419,7 +421,7 @@ namespace Umbraco.Web.Routing //iterate but return on first one that finds it var found = _contentFinders.Any(finder => { - _logger.Debug("Finder {ContentFinderType}", finder.GetType().FullName); + _logger.LogDebug("Finder {ContentFinderType}", finder.GetType().FullName); return finder.TryFindContent(request); }); } @@ -443,22 +445,22 @@ namespace Umbraco.Web.Routing const int maxLoop = 8; do { - _logger.Debug("HandlePublishedContent: Loop {LoopCounter}", i); + _logger.LogDebug("HandlePublishedContent: Loop {LoopCounter}", i); // handle not found if (request.HasPublishedContent == false) { request.Is404 = true; - _logger.Debug("HandlePublishedContent: No document, try last chance lookup"); + _logger.LogDebug("HandlePublishedContent: No document, try last chance lookup"); // if it fails then give up, there isn't much more that we can do if (_contentLastChanceFinder.TryFindContent(request) == false) { - _logger.Debug("HandlePublishedContent: Failed to find a document, give up"); + _logger.LogDebug("HandlePublishedContent: Failed to find a document, give up"); break; } - _logger.Debug("HandlePublishedContent: Found a document"); + _logger.LogDebug("HandlePublishedContent: Found a document"); } // follow internal redirects as long as it's not running out of control ie infinite loop of some sort @@ -480,11 +482,11 @@ namespace Umbraco.Web.Routing if (i == maxLoop || j == maxLoop) { - _logger.Debug("HandlePublishedContent: Looks like we are running into an infinite loop, abort"); + _logger.LogDebug("HandlePublishedContent: Looks like we are running into an infinite loop, abort"); request.PublishedContent = null; } - _logger.Debug("HandlePublishedContent: End"); + _logger.LogDebug("HandlePublishedContent: End"); } /// @@ -529,25 +531,25 @@ namespace Umbraco.Web.Routing if (valid == false) { // bad redirect - log and display the current page (legacy behavior) - _logger.Debug("FollowInternalRedirects: Failed to redirect to id={InternalRedirectId}: value is not an int nor a GuidUdi.", + _logger.LogDebug("FollowInternalRedirects: Failed to redirect to id={InternalRedirectId}: value is not an int nor a GuidUdi.", request.PublishedContent.GetProperty(Constants.Conventions.Content.InternalRedirectId).GetSourceValue()); } if (internalRedirectNode == null) { - _logger.Debug("FollowInternalRedirects: Failed to redirect to id={InternalRedirectId}: no such published document.", + _logger.LogDebug("FollowInternalRedirects: Failed to redirect to id={InternalRedirectId}: no such published document.", request.PublishedContent.GetProperty(Constants.Conventions.Content.InternalRedirectId).GetSourceValue()); } else if (internalRedirectId == request.PublishedContent.Id) { // redirect to self - _logger.Debug("FollowInternalRedirects: Redirecting to self, ignore"); + _logger.LogDebug("FollowInternalRedirects: Redirecting to self, ignore"); } else { request.SetInternalRedirectPublishedContent(internalRedirectNode); // don't use .PublishedContent here redirect = true; - _logger.Debug("FollowInternalRedirects: Redirecting to id={InternalRedirectId}", internalRedirectId); + _logger.LogDebug("FollowInternalRedirects: Redirecting to id={InternalRedirectId}", internalRedirectId); } return redirect; @@ -568,35 +570,35 @@ namespace Umbraco.Web.Routing if (publicAccessAttempt) { - _logger.Debug("EnsurePublishedContentAccess: Page is protected, check for access"); + _logger.LogDebug("EnsurePublishedContentAccess: Page is protected, check for access"); var status = _publicAccessChecker.HasMemberAccessToContent(request.PublishedContent.Id); switch (status) { case PublicAccessStatus.NotLoggedIn: - _logger.Debug("EnsurePublishedContentAccess: Not logged in, redirect to login page"); + _logger.LogDebug("EnsurePublishedContentAccess: Not logged in, redirect to login page"); SetPublishedContentAsOtherPage(request, publicAccessAttempt.Result.LoginNodeId); break; case PublicAccessStatus.AccessDenied: - _logger.Debug("EnsurePublishedContentAccess: Current member has not access, redirect to error page"); + _logger.LogDebug("EnsurePublishedContentAccess: Current member has not access, redirect to error page"); SetPublishedContentAsOtherPage(request, publicAccessAttempt.Result.NoAccessNodeId); break; case PublicAccessStatus.LockedOut: - _logger.Debug("Current member is locked out, redirect to error page"); + _logger.LogDebug("Current member is locked out, redirect to error page"); SetPublishedContentAsOtherPage(request, publicAccessAttempt.Result.NoAccessNodeId); break; case PublicAccessStatus.NotApproved: - _logger.Debug("Current member is unapproved, redirect to error page"); + _logger.LogDebug("Current member is unapproved, redirect to error page"); SetPublishedContentAsOtherPage(request, publicAccessAttempt.Result.NoAccessNodeId); break; case PublicAccessStatus.AccessAccepted: - _logger.Debug("Current member has access"); + _logger.LogDebug("Current member has access"); break; } } else { - _logger.Debug("EnsurePublishedContentAccess: Page is not protected"); + _logger.LogDebug("EnsurePublishedContentAccess: Page is not protected"); } } @@ -639,7 +641,7 @@ namespace Umbraco.Web.Routing if (request.HasTemplate) { - _logger.Debug("FindTemplate: Has a template already, and no alternate template."); + _logger.LogDebug("FindTemplate: Has a template already, and no alternate template."); return; } @@ -661,8 +663,8 @@ namespace Umbraco.Web.Routing // ignore if the alias does not match - just trace if (request.HasTemplate) - _logger.Debug("FindTemplate: Has a template already, but also an alternative template."); - _logger.Debug("FindTemplate: Look for alternative template alias={AltTemplate}", altTemplate); + _logger.LogDebug("FindTemplate: Has a template already, but also an alternative template."); + _logger.LogDebug("FindTemplate: Look for alternative template alias={AltTemplate}", altTemplate); // IsAllowedTemplate deals both with DisableAlternativeTemplates and ValidateAlternativeTemplates settings if (request.PublishedContent.IsAllowedTemplate( @@ -678,16 +680,16 @@ namespace Umbraco.Web.Routing if (template != null) { request.TemplateModel = template; - _logger.Debug("FindTemplate: Got alternative template id={TemplateId} alias={TemplateAlias}", template.Id, template.Alias); + _logger.LogDebug("FindTemplate: Got alternative template id={TemplateId} alias={TemplateAlias}", template.Id, template.Alias); } else { - _logger.Debug("FindTemplate: The alternative template with alias={AltTemplate} does not exist, ignoring.", altTemplate); + _logger.LogDebug("FindTemplate: The alternative template with alias={AltTemplate} does not exist, ignoring.", altTemplate); } } else { - _logger.Warn("FindTemplate: Alternative template {TemplateAlias} is not allowed on node {NodeId}, ignoring.", altTemplate, request.PublishedContent.Id); + _logger.LogWarning("FindTemplate: Alternative template {TemplateAlias} is not allowed on node {NodeId}, ignoring.", altTemplate, request.PublishedContent.Id); // no allowed, back to default var templateId = request.PublishedContent.TemplateId; @@ -697,7 +699,7 @@ namespace Umbraco.Web.Routing if (request.HasTemplate == false) { - _logger.Debug("FindTemplate: No template was found."); + _logger.LogDebug("FindTemplate: No template was found."); // initial idea was: if we're not already 404 and UmbracoSettings.HandleMissingTemplateAs404 is true // then reset _pcr.Document to null to force a 404. @@ -710,7 +712,7 @@ namespace Umbraco.Web.Routing } else { - _logger.Debug("FindTemplate: Running with template id={TemplateId} alias={TemplateAlias}", request.TemplateModel.Id, request.TemplateModel.Alias); + _logger.LogDebug("FindTemplate: Running with template id={TemplateId} alias={TemplateAlias}", request.TemplateModel.Id, request.TemplateModel.Alias); } } @@ -718,11 +720,11 @@ namespace Umbraco.Web.Routing { if (templateId.HasValue == false || templateId.Value == default) { - _logger.Debug("GetTemplateModel: No template."); + _logger.LogDebug("GetTemplateModel: No template."); return null; } - _logger.Debug("GetTemplateModel: Get template id={TemplateId}", templateId); + _logger.LogDebug("GetTemplateModel: Get template id={TemplateId}", templateId); if (templateId == null) throw new InvalidOperationException("The template is not set, the page cannot render."); @@ -730,7 +732,7 @@ namespace Umbraco.Web.Routing var template = _fileService.GetTemplate(templateId.Value); if (template == null) throw new InvalidOperationException("The template with Id " + templateId + " does not exist, the page cannot render."); - _logger.Debug("GetTemplateModel: Got template id={TemplateId} alias={TemplateAlias}", template.Id, template.Alias); + _logger.LogDebug("GetTemplateModel: Got template id={TemplateId} alias={TemplateAlias}", template.Id, template.Alias); return template; } diff --git a/src/Umbraco.Core/Routing/UrlProviderExtensions.cs b/src/Umbraco.Core/Routing/UrlProviderExtensions.cs index 352209b987..1dc48be96e 100644 --- a/src/Umbraco.Core/Routing/UrlProviderExtensions.cs +++ b/src/Umbraco.Core/Routing/UrlProviderExtensions.cs @@ -1,10 +1,10 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core.Models; using Umbraco.Core.Services; using Umbraco.Core; -using Umbraco.Core.Logging; using Umbraco.Core.Models.PublishedContent; namespace Umbraco.Web.Routing @@ -25,7 +25,7 @@ namespace Umbraco.Web.Routing ILocalizedTextService textService, IContentService contentService, IVariationContextAccessor variationContextAccessor, - ILogger logger, + ILogger logger, UriUtility uriUtility, IPublishedUrlProvider publishedUrlProvider) { @@ -123,7 +123,7 @@ namespace Umbraco.Web.Routing } catch (Exception ex) { - logger.Error(ex, "GetUrl exception."); + logger.LogError(ex, "GetUrl exception."); url = "#ex"; } diff --git a/src/Umbraco.Core/Runtime/MainDom.cs b/src/Umbraco.Core/Runtime/MainDom.cs index 81db1b700d..797dfa36e1 100644 --- a/src/Umbraco.Core/Runtime/MainDom.cs +++ b/src/Umbraco.Core/Runtime/MainDom.cs @@ -3,8 +3,8 @@ using System.Collections.Generic; using System.Linq; using System.Security.Cryptography; using System.Threading; +using Microsoft.Extensions.Logging; using Umbraco.Core.Hosting; -using Umbraco.Core.Logging; namespace Umbraco.Core.Runtime { @@ -20,7 +20,7 @@ namespace Umbraco.Core.Runtime { #region Vars - private readonly ILogger _logger; + private readonly ILogger _logger; private IApplicationShutdownRegistry _hostingEnvironment; private readonly IMainDomLock _mainDomLock; @@ -42,7 +42,7 @@ namespace Umbraco.Core.Runtime #region Ctor // initializes a new instance of MainDom - public MainDom(ILogger logger, IMainDomLock systemLock) + public MainDom(ILogger logger, IMainDomLock systemLock) { _logger = logger; _mainDomLock = systemLock; @@ -86,7 +86,7 @@ namespace Umbraco.Core.Runtime if (_signaled) return false; if (_isMainDom == false) { - _logger.Warn("Register called when MainDom has not been acquired"); + _logger.LogWarning("Register called when MainDom has not been acquired"); return false; } @@ -105,14 +105,14 @@ namespace Umbraco.Core.Runtime lock (_locko) { - _logger.Debug("Signaled ({Signaled}) ({SignalSource})", _signaled ? "again" : "first", source); + _logger.LogDebug("Signaled ({Signaled}) ({SignalSource})", _signaled ? "again" : "first", source); if (_signaled) return; if (_isMainDom == false) return; // probably not needed _signaled = true; try { - _logger.Info("Stopping ({SignalSource})", source); + _logger.LogInformation("Stopping ({SignalSource})", source); foreach (var callback in _callbacks.OrderBy(x => x.Key).Select(x => x.Value)) { try @@ -121,19 +121,19 @@ namespace Umbraco.Core.Runtime } catch (Exception e) { - _logger.Error(e, "Error while running callback"); + _logger.LogError(e, "Error while running callback"); continue; } } - _logger.Debug("Stopped ({SignalSource})", source); + _logger.LogDebug("Stopped ({SignalSource})", source); } finally { // in any case... _isMainDom = false; _mainDomLock.Dispose(); - _logger.Info("Released ({SignalSource})", source); + _logger.LogInformation("Released ({SignalSource})", source); } } @@ -146,18 +146,18 @@ namespace Umbraco.Core.Runtime // the handler is not installed so that would be the hosting environment if (_signaled) { - _logger.Info("Cannot acquire (signaled)."); + _logger.LogInformation("Cannot acquire (signaled)."); return false; } - _logger.Info("Acquiring."); + _logger.LogInformation("Acquiring."); // Get the lock var acquired = _mainDomLock.AcquireLockAsync(LockTimeoutMilliseconds).GetAwaiter().GetResult(); if (!acquired) { - _logger.Info("Cannot acquire (timeout)."); + _logger.LogInformation("Cannot acquire (timeout)."); // In previous versions we'd let a TimeoutException be thrown // and the appdomain would not start. We have the opportunity to allow it to @@ -177,10 +177,10 @@ namespace Umbraco.Core.Runtime catch (OperationCanceledException ex) { // the waiting task could be canceled if this appdomain is naturally shutting down, we'll just swallow this exception - _logger.Warn(ex, ex.Message); + _logger.LogWarning(ex, ex.Message); } - _logger.Info("Acquired."); + _logger.LogInformation("Acquired."); return true; } diff --git a/src/Umbraco.Core/Scheduling/KeepAlive.cs b/src/Umbraco.Core/Scheduling/KeepAlive.cs index 98c6268e69..9b09a81cc3 100644 --- a/src/Umbraco.Core/Scheduling/KeepAlive.cs +++ b/src/Umbraco.Core/Scheduling/KeepAlive.cs @@ -7,6 +7,7 @@ using Umbraco.Core; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Logging; using Umbraco.Core.Sync; +using Microsoft.Extensions.Logging; namespace Umbraco.Web.Scheduling { @@ -15,18 +16,20 @@ namespace Umbraco.Web.Scheduling private readonly IRequestAccessor _requestAccessor; private readonly IMainDom _mainDom; private readonly KeepAliveSettings _keepAliveSettings; - private readonly IProfilingLogger _logger; + private readonly 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, IOptions keepAliveSettings, IProfilingLogger logger, IServerRegistrar serverRegistrar) + IRequestAccessor requestAccessor, IMainDom mainDom, IOptions keepAliveSettings, ILogger logger, IProfilingLogger profilingLogger, IServerRegistrar serverRegistrar) : base(runner, delayMilliseconds, periodMilliseconds) { _requestAccessor = requestAccessor; _mainDom = mainDom; _keepAliveSettings = keepAliveSettings.Value; _logger = logger; + _profilingLogger = profilingLogger; _serverRegistrar = serverRegistrar; if (_httpClient == null) { @@ -40,21 +43,21 @@ 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; // role may 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; // role may 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 } - using (_logger.DebugDuration("Keep alive executing", "Keep alive complete")) + using (_profilingLogger.DebugDuration("Keep alive executing", "Keep alive complete")) { var keepAlivePingUrl = _keepAliveSettings.KeepAlivePingUrl; try @@ -64,7 +67,7 @@ namespace Umbraco.Web.Scheduling var umbracoAppUrl = _requestAccessor.GetApplicationUrl().ToString(); if (umbracoAppUrl.IsNullOrWhiteSpace()) { - _logger.Warn("No umbracoApplicationUrl for service (yet), skip."); + _logger.LogWarning("No umbracoApplicationUrl for service (yet), skip."); return true; // repeat } @@ -76,7 +79,7 @@ namespace Umbraco.Web.Scheduling } catch (Exception ex) { - _logger.Error(ex, "Keep alive failed (at '{keepAlivePingUrl}').", keepAlivePingUrl); + _logger.LogError(ex, "Keep alive failed (at '{keepAlivePingUrl}').", keepAlivePingUrl); } } diff --git a/src/Umbraco.Core/Scheduling/TempFileCleanup.cs b/src/Umbraco.Core/Scheduling/TempFileCleanup.cs index 6ac1ff61fe..1a8ece78d1 100644 --- a/src/Umbraco.Core/Scheduling/TempFileCleanup.cs +++ b/src/Umbraco.Core/Scheduling/TempFileCleanup.cs @@ -4,6 +4,7 @@ using System.IO; using System.Linq; using Umbraco.Core; using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; namespace Umbraco.Web.Scheduling { @@ -15,11 +16,12 @@ namespace Umbraco.Web.Scheduling private readonly DirectoryInfo[] _tempFolders; private readonly TimeSpan _age; private readonly IMainDom _mainDom; - private readonly IProfilingLogger _logger; + private readonly IProfilingLogger _profilingLogger; + private readonly ILogger _logger; public TempFileCleanup(IBackgroundTaskRunner runner, int delayMilliseconds, int periodMilliseconds, IEnumerable tempFolders, TimeSpan age, - IMainDom mainDom, IProfilingLogger logger) + IMainDom mainDom, IProfilingLogger profilingLogger, ILogger logger) : base(runner, delayMilliseconds, periodMilliseconds) { //SystemDirectories.TempFileUploads @@ -27,6 +29,7 @@ namespace Umbraco.Web.Scheduling _tempFolders = tempFolders.ToArray(); _age = age; _mainDom = mainDom; + _profilingLogger = profilingLogger; _logger = logger; } @@ -35,7 +38,7 @@ namespace Umbraco.Web.Scheduling // ensure we do not run if not main domain 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 } @@ -50,7 +53,7 @@ namespace Umbraco.Web.Scheduling dir.Refresh(); //in case it's changed during runtime if (!dir.Exists) { - _logger.Debug("The cleanup folder doesn't exist {Folder}", dir.FullName); + _logger.LogDebug("The cleanup folder doesn't exist {Folder}", dir.FullName); return; } @@ -66,7 +69,7 @@ namespace Umbraco.Web.Scheduling } catch (Exception ex) { - _logger.Error(ex, "Could not delete temp file {FileName}", file.FullName); + _logger.LogError(ex, "Could not delete temp file {FileName}", file.FullName); } } } diff --git a/src/Umbraco.Core/Templates/HtmlUrlParser.cs b/src/Umbraco.Core/Templates/HtmlUrlParser.cs index 60b6f829b0..7f7db6130c 100644 --- a/src/Umbraco.Core/Templates/HtmlUrlParser.cs +++ b/src/Umbraco.Core/Templates/HtmlUrlParser.cs @@ -1,5 +1,6 @@ using System.Text.RegularExpressions; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; using Umbraco.Core.Configuration.Models; using Umbraco.Core.IO; using Umbraco.Core.Logging; @@ -9,17 +10,19 @@ namespace Umbraco.Web.Templates public sealed class HtmlUrlParser { private readonly ContentSettings _contentSettings; + private readonly ILogger _logger; private readonly IIOHelper _ioHelper; - private readonly IProfilingLogger _logger; + private readonly IProfilingLogger _profilingLogger; private static readonly Regex ResolveUrlPattern = new Regex("(=[\"\']?)(\\W?\\~(?:.(?![\"\']?\\s+(?:\\S+)=|[>\"\']))+.)[\"\']?", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace); - public HtmlUrlParser(IOptions contentSettings, IProfilingLogger logger, IIOHelper ioHelper) + public HtmlUrlParser(IOptions contentSettings, ILogger logger ,IProfilingLogger profilingLogger, IIOHelper ioHelper) { _contentSettings = contentSettings.Value; - _ioHelper = ioHelper; _logger = logger; + _ioHelper = ioHelper; + _profilingLogger = profilingLogger; } /// @@ -35,11 +38,11 @@ namespace Umbraco.Web.Templates { if (_contentSettings.ResolveUrlsFromTextString == false) return text; - using (var timer = _logger.DebugDuration(typeof(IOHelper), "ResolveUrlsFromTextString starting", "ResolveUrlsFromTextString complete")) + using (var timer = _profilingLogger.DebugDuration(typeof(IOHelper), "ResolveUrlsFromTextString starting", "ResolveUrlsFromTextString complete")) { // find all relative urls (ie. urls that contain ~) var tags = ResolveUrlPattern.Matches(text); - _logger.Debug(typeof(IOHelper), "After regex: {Duration} matched: {TagsCount}", timer.Stopwatch.ElapsedMilliseconds, tags.Count); + _logger.LogDebug("After regex: {Duration} matched: {TagsCount}", timer.Stopwatch.ElapsedMilliseconds, tags.Count); foreach (Match tag in tags) { var url = ""; diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj index abe215a954..07dea8d299 100644 --- a/src/Umbraco.Core/Umbraco.Core.csproj +++ b/src/Umbraco.Core/Umbraco.Core.csproj @@ -15,6 +15,7 @@ + @@ -38,5 +39,8 @@ <_Parameter1>Umbraco.Tests.Integration + + <_Parameter1>DynamicProxyGenAssembly2 + diff --git a/src/Umbraco.Core/UriExtensions.cs b/src/Umbraco.Core/UriExtensions.cs index 9a49df7d95..446e60e18f 100644 --- a/src/Umbraco.Core/UriExtensions.cs +++ b/src/Umbraco.Core/UriExtensions.cs @@ -1,6 +1,7 @@ using System; using System.IO; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Composing; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; @@ -159,7 +160,7 @@ namespace Umbraco.Core } catch (ArgumentException) { - Current.Logger.Debug(typeof(UriExtensions), "Failed to determine if request was client side (invalid chars in path \"{Path}\"?)", url.LocalPath); + Current.Logger.LogDebug("Failed to determine if request was client side (invalid chars in path \"{Path}\"?)", url.LocalPath); return false; } } diff --git a/src/Umbraco.Examine.Lucene/ExamineExtensions.cs b/src/Umbraco.Examine.Lucene/ExamineExtensions.cs index d697bf6f0d..6f476ec79d 100644 --- a/src/Umbraco.Examine.Lucene/ExamineExtensions.cs +++ b/src/Umbraco.Examine.Lucene/ExamineExtensions.cs @@ -1,5 +1,6 @@ using System; using System.Linq; +using Microsoft.Extensions.Logging; using Examine; using Examine.LuceneEngine.Providers; using Lucene.Net.Analysis; @@ -8,7 +9,6 @@ using Lucene.Net.QueryParsers; using Lucene.Net.Search; using Umbraco.Core; using Version = Lucene.Net.Util.Version; -using Umbraco.Core.Logging; using System.Threading; namespace Umbraco.Examine @@ -29,7 +29,7 @@ namespace Umbraco.Examine /// /// Configures and unlocks all Lucene based indexes registered with the . /// - internal static void ConfigureIndexes(this IExamineManager examineManager, IMainDom mainDom, ILogger logger) + internal static void ConfigureIndexes(this IExamineManager examineManager, IMainDom mainDom, ILogger logger) { LazyInitializer.EnsureInitialized( ref _configuredInit, @@ -71,7 +71,7 @@ namespace Umbraco.Examine /// /// This is not thread safe, use with care /// - private static void ConfigureLuceneIndexes(this IExamineManager examineManager, ILogger logger, bool disableExamineIndexing) + private static void ConfigureLuceneIndexes(this IExamineManager examineManager, ILogger logger, bool disableExamineIndexing) { foreach (var luceneIndexer in examineManager.Indexes.OfType()) { @@ -87,7 +87,7 @@ namespace Umbraco.Examine var dir = luceneIndexer.GetLuceneDirectory(); if (IndexWriter.IsLocked(dir)) { - logger.Info(typeof(ExamineExtensions), "Forcing index {IndexerName} to be unlocked since it was left in a locked state", luceneIndexer.Name); + logger.LogDebug("Forcing index {IndexerName} to be unlocked since it was left in a locked state", luceneIndexer.Name); IndexWriter.Unlock(dir); } } diff --git a/src/Umbraco.Examine.Lucene/ExamineLuceneComponent.cs b/src/Umbraco.Examine.Lucene/ExamineLuceneComponent.cs index 0d701d388d..1bdb579e62 100644 --- a/src/Umbraco.Examine.Lucene/ExamineLuceneComponent.cs +++ b/src/Umbraco.Examine.Lucene/ExamineLuceneComponent.cs @@ -1,8 +1,8 @@ -using Examine; +using Microsoft.Extensions.Logging; +using Examine; using Examine.LuceneEngine.Directories; using Umbraco.Core; using Umbraco.Core.Composing; -using Umbraco.Core.Logging; namespace Umbraco.Examine { @@ -12,14 +12,14 @@ namespace Umbraco.Examine private readonly IndexRebuilder _indexRebuilder; private readonly IExamineManager _examineManager; private readonly IMainDom _mainDom; - private readonly ILogger _logger; + private readonly ILoggerFactory _loggerFactory; - public ExamineLuceneComponent(IndexRebuilder indexRebuilder, IExamineManager examineManager, IMainDom mainDom, ILogger logger) + public ExamineLuceneComponent(IndexRebuilder indexRebuilder, IExamineManager examineManager, IMainDom mainDom, ILoggerFactory loggerFactory) { _indexRebuilder = indexRebuilder; _examineManager = examineManager; _mainDom = mainDom; - _logger = logger; + _loggerFactory = loggerFactory; } public void Initialize() @@ -41,7 +41,7 @@ namespace Umbraco.Examine /// /// /// - private void IndexRebuilder_RebuildingIndexes(object sender, IndexRebuildingEventArgs e) => _examineManager.ConfigureIndexes(_mainDom, _logger); + private void IndexRebuilder_RebuildingIndexes(object sender, IndexRebuildingEventArgs e) => _examineManager.ConfigureIndexes(_mainDom, _loggerFactory.CreateLogger()); public void Terminate() { diff --git a/src/Umbraco.Examine.Lucene/ExamineLuceneFinalComponent.cs b/src/Umbraco.Examine.Lucene/ExamineLuceneFinalComponent.cs index e1e80ead2f..745a5fb583 100644 --- a/src/Umbraco.Examine.Lucene/ExamineLuceneFinalComponent.cs +++ b/src/Umbraco.Examine.Lucene/ExamineLuceneFinalComponent.cs @@ -1,19 +1,19 @@ -using Examine; +using Microsoft.Extensions.Logging; +using Examine; using Umbraco.Core; using Umbraco.Core.Composing; -using Umbraco.Core.Logging; namespace Umbraco.Examine { public class ExamineLuceneFinalComponent : IComponent { - private readonly IProfilingLogger _logger; + private readonly ILoggerFactory _loggerFactory; private readonly IExamineManager _examineManager; private readonly IMainDom _mainDom; - public ExamineLuceneFinalComponent(IProfilingLogger logger, IExamineManager examineManager, IMainDom mainDom) + public ExamineLuceneFinalComponent(ILoggerFactory loggerFactory, IExamineManager examineManager, IMainDom mainDom) { - _logger = logger; + _loggerFactory = loggerFactory; _examineManager = examineManager; _mainDom = mainDom; } @@ -23,7 +23,7 @@ namespace Umbraco.Examine if (!_mainDom.IsMainDom) return; // Ensures all lucene based indexes are unlocked and ready to go - _examineManager.ConfigureIndexes(_mainDom, _logger); + _examineManager.ConfigureIndexes(_mainDom, _loggerFactory.CreateLogger()); } public void Terminate() diff --git a/src/Umbraco.Examine.Lucene/LuceneIndexDiagnostics.cs b/src/Umbraco.Examine.Lucene/LuceneIndexDiagnostics.cs index 836d5f6e66..525f7372bf 100644 --- a/src/Umbraco.Examine.Lucene/LuceneIndexDiagnostics.cs +++ b/src/Umbraco.Examine.Lucene/LuceneIndexDiagnostics.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; +using Microsoft.Extensions.Logging; using Examine.LuceneEngine.Providers; using Umbraco.Core; -using Umbraco.Core.Logging; using Lucene.Net.Store; using Umbraco.Core.IO; using System.Linq; @@ -14,7 +14,7 @@ namespace Umbraco.Examine { private readonly IHostingEnvironment _hostingEnvironment; - public LuceneIndexDiagnostics(LuceneIndex index, ILogger logger, IHostingEnvironment hostingEnvironment) + public LuceneIndexDiagnostics(LuceneIndex index, ILogger logger, IHostingEnvironment hostingEnvironment) { _hostingEnvironment = hostingEnvironment; Index = index; @@ -22,7 +22,7 @@ namespace Umbraco.Examine } public LuceneIndex Index { get; } - public ILogger Logger { get; } + public ILogger Logger { get; } public int DocumentCount { @@ -34,7 +34,7 @@ namespace Umbraco.Examine } catch (AlreadyClosedException) { - Logger.Warn(typeof(UmbracoContentIndex), "Cannot get GetIndexDocumentCount, the writer is already closed"); + Logger.LogWarning("Cannot get GetIndexDocumentCount, the writer is already closed"); return 0; } } @@ -50,7 +50,7 @@ namespace Umbraco.Examine } catch (AlreadyClosedException) { - Logger.Warn(typeof(UmbracoContentIndex), "Cannot get GetIndexFieldCount, the writer is already closed"); + Logger.LogWarning("Cannot get GetIndexFieldCount, the writer is already closed"); return 0; } } diff --git a/src/Umbraco.Examine.Lucene/LuceneIndexDiagnosticsFactory.cs b/src/Umbraco.Examine.Lucene/LuceneIndexDiagnosticsFactory.cs index 9141f7f6dd..feeac4bf77 100644 --- a/src/Umbraco.Examine.Lucene/LuceneIndexDiagnosticsFactory.cs +++ b/src/Umbraco.Examine.Lucene/LuceneIndexDiagnosticsFactory.cs @@ -1,7 +1,7 @@ using Examine; using Examine.LuceneEngine.Providers; +using Microsoft.Extensions.Logging; using Umbraco.Core.Hosting; -using Umbraco.Core.Logging; using Umbraco.Core.IO; namespace Umbraco.Examine @@ -12,12 +12,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 +26,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(), _hostingEnvironment); else indexDiag = base.Create(index); } diff --git a/src/Umbraco.Examine.Lucene/UmbracoContentIndex.cs b/src/Umbraco.Examine.Lucene/UmbracoContentIndex.cs index 25413b5ea8..0dcf269902 100644 --- a/src/Umbraco.Examine.Lucene/UmbracoContentIndex.cs +++ b/src/Umbraco.Examine.Lucene/UmbracoContentIndex.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Collections.Specialized; using System.ComponentModel; using System.Linq; +using Microsoft.Extensions.Logging; using Examine; using Umbraco.Core; using Umbraco.Core.Services; @@ -21,6 +22,7 @@ namespace Umbraco.Examine /// public class UmbracoContentIndex : UmbracoExamineIndex, IUmbracoContentIndex, IDisposable { + private readonly ILogger _logger; protected ILocalizationService LanguageService { get; } #region Constructors @@ -33,6 +35,8 @@ namespace Umbraco.Examine /// /// /// + /// + /// /// /// /// @@ -44,14 +48,17 @@ namespace Umbraco.Examine FieldDefinitionCollection fieldDefinitions, Analyzer defaultAnalyzer, IProfilingLogger profilingLogger, + ILogger logger, + ILoggerFactory loggerFactory, IHostingEnvironment hostingEnvironment, IRuntimeState runtimeState, ILocalizationService languageService, IContentValueSetValidator validator, IReadOnlyDictionary indexValueTypes = null) - : base(name, luceneDirectory, fieldDefinitions, defaultAnalyzer, profilingLogger, hostingEnvironment, runtimeState, validator, indexValueTypes) + : base(name, luceneDirectory, fieldDefinitions, defaultAnalyzer, profilingLogger, logger, loggerFactory ,hostingEnvironment, runtimeState, validator, indexValueTypes) { if (validator == null) throw new ArgumentNullException(nameof(validator)); + _logger = logger; LanguageService = languageService ?? throw new ArgumentNullException(nameof(languageService)); if (validator is IContentValueSetValidator contentValueSetValidator) @@ -138,7 +145,8 @@ namespace Umbraco.Examine var filtered = c.NativeQuery(rawQuery); var results = filtered.Execute(); - ProfilingLogger.Debug(GetType(), "DeleteFromIndex with query: {Query} (found {TotalItems} results)", rawQuery, results.TotalItemCount); + _logger. + LogDebug("DeleteFromIndex with query: {Query} (found {TotalItems} results)", rawQuery, results.TotalItemCount); //need to queue a delete item for each one found QueueIndexOperation(results.Select(r => new IndexOperation(new ValueSet(r.Id), IndexOperationType.Delete))); diff --git a/src/Umbraco.Examine.Lucene/UmbracoExamineIndex.cs b/src/Umbraco.Examine.Lucene/UmbracoExamineIndex.cs index 696c6a58a5..ceec013eaa 100644 --- a/src/Umbraco.Examine.Lucene/UmbracoExamineIndex.cs +++ b/src/Umbraco.Examine.Lucene/UmbracoExamineIndex.cs @@ -13,6 +13,7 @@ using Umbraco.Core.Hosting; using Umbraco.Core.IO; using Umbraco.Core.Logging; using Directory = Lucene.Net.Store.Directory; +using Microsoft.Extensions.Logging; namespace Umbraco.Examine { @@ -22,6 +23,9 @@ namespace Umbraco.Examine /// public abstract class UmbracoExamineIndex : LuceneIndex, IUmbracoIndex, IIndexDiagnostics { + private readonly ILogger _logger; + private readonly ILoggerFactory _loggerFactory; + private readonly IRuntimeState _runtimeState; // note // wrapping all operations that end up calling base.SafelyProcessQueueItems in a safe call @@ -29,7 +33,6 @@ namespace Umbraco.Examine // call context (and the database it can contain)! ideally we should be able to override // SafelyProcessQueueItems but that's not possible in the current version of Examine. - /// /// Create a new @@ -39,6 +42,8 @@ namespace Umbraco.Examine /// /// /// + /// + /// /// /// /// @@ -49,12 +54,16 @@ namespace Umbraco.Examine FieldDefinitionCollection fieldDefinitions, Analyzer defaultAnalyzer, IProfilingLogger profilingLogger, + ILogger logger, + ILoggerFactory loggerFactory, IHostingEnvironment hostingEnvironment, IRuntimeState runtimeState, IValueSetValidator validator = null, IReadOnlyDictionary indexValueTypes = null) : base(name, luceneDirectory, fieldDefinitions, defaultAnalyzer, validator, indexValueTypes) { + _logger = logger; + _loggerFactory = loggerFactory; _runtimeState = runtimeState; ProfilingLogger = profilingLogger ?? throw new ArgumentNullException(nameof(profilingLogger)); @@ -62,7 +71,7 @@ namespace Umbraco.Examine if (luceneDirectory is FSDirectory fsDir) LuceneIndexFolder = fsDir.Directory; - _diagnostics = new UmbracoExamineIndexDiagnostics(this, ProfilingLogger, hostingEnvironment); + _diagnostics = new UmbracoExamineIndexDiagnostics(this, _loggerFactory.CreateLogger(), hostingEnvironment); } private readonly bool _configBased = false; @@ -118,7 +127,7 @@ namespace Umbraco.Examine /// protected override void OnIndexingError(IndexingErrorEventArgs ex) { - ProfilingLogger.Error(GetType(), ex.InnerException, ex.Message); + _logger.LogError(ex.InnerException, ex.Message); base.OnIndexingError(ex); } @@ -154,8 +163,7 @@ namespace Umbraco.Examine /// protected override void AddDocument(Document doc, ValueSet valueSet, IndexWriter writer) { - ProfilingLogger.Debug(GetType(), - "Write lucene doc id:{DocumentId}, category:{DocumentCategory}, type:{DocumentItemType}", + _logger.LogDebug("Write lucene doc id:{DocumentId}, category:{DocumentCategory}, type:{DocumentItemType}", valueSet.Id, valueSet.Category, valueSet.ItemType); diff --git a/src/Umbraco.Examine.Lucene/UmbracoExamineIndexDiagnostics.cs b/src/Umbraco.Examine.Lucene/UmbracoExamineIndexDiagnostics.cs index 777b198232..5952f410fc 100644 --- a/src/Umbraco.Examine.Lucene/UmbracoExamineIndexDiagnostics.cs +++ b/src/Umbraco.Examine.Lucene/UmbracoExamineIndexDiagnostics.cs @@ -1,10 +1,10 @@ using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Lucene.Net.Store; using Umbraco.Core; using Umbraco.Core.Hosting; using Umbraco.Core.IO; -using Umbraco.Core.Logging; namespace Umbraco.Examine { @@ -12,7 +12,7 @@ namespace Umbraco.Examine { private readonly UmbracoExamineIndex _index; - public UmbracoExamineIndexDiagnostics(UmbracoExamineIndex index, ILogger logger, IHostingEnvironment hostingEnvironment) + public UmbracoExamineIndexDiagnostics(UmbracoExamineIndex index, ILogger logger, IHostingEnvironment hostingEnvironment) : base(index, logger, hostingEnvironment) { _index = index; diff --git a/src/Umbraco.Examine.Lucene/UmbracoIndexesCreator.cs b/src/Umbraco.Examine.Lucene/UmbracoIndexesCreator.cs index 39113b4f50..2184108b4a 100644 --- a/src/Umbraco.Examine.Lucene/UmbracoIndexesCreator.cs +++ b/src/Umbraco.Examine.Lucene/UmbracoIndexesCreator.cs @@ -11,6 +11,7 @@ using Umbraco.Core.Hosting; using Umbraco.Core.IO; using Umbraco.Core.Configuration.Models; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; namespace Umbraco.Examine { @@ -25,6 +26,7 @@ namespace Umbraco.Examine public UmbracoIndexesCreator( ITypeFinder typeFinder, IProfilingLogger profilingLogger, + ILoggerFactory loggerFactory, ILocalizationService languageService, IPublicAccessService publicAccessService, IMemberService memberService, @@ -35,6 +37,7 @@ namespace Umbraco.Examine ILuceneDirectoryFactory directoryFactory) : base(typeFinder, hostingEnvironment, settings) { ProfilingLogger = profilingLogger ?? throw new System.ArgumentNullException(nameof(profilingLogger)); + LoggerFactory = loggerFactory; LanguageService = languageService ?? throw new System.ArgumentNullException(nameof(languageService)); PublicAccessService = publicAccessService ?? throw new System.ArgumentNullException(nameof(publicAccessService)); MemberService = memberService ?? throw new System.ArgumentNullException(nameof(memberService)); @@ -45,6 +48,7 @@ namespace Umbraco.Examine } protected IProfilingLogger ProfilingLogger { get; } + protected ILoggerFactory LoggerFactory { get; } protected IHostingEnvironment HostingEnvironment { get; } protected IRuntimeState RuntimeState { get; } protected ILuceneDirectoryFactory DirectoryFactory { get; } @@ -75,6 +79,8 @@ namespace Umbraco.Examine new UmbracoFieldDefinitionCollection(), new CultureInvariantWhitespaceAnalyzer(), ProfilingLogger, + LoggerFactory.CreateLogger(), + LoggerFactory, HostingEnvironment, RuntimeState, LanguageService, @@ -91,6 +97,8 @@ namespace Umbraco.Examine new UmbracoFieldDefinitionCollection(), new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30), ProfilingLogger, + LoggerFactory.CreateLogger(), + LoggerFactory, HostingEnvironment, RuntimeState, LanguageService, @@ -106,6 +114,8 @@ namespace Umbraco.Examine DirectoryFactory.CreateDirectory(Constants.UmbracoIndexes.MembersIndexPath), new CultureInvariantWhitespaceAnalyzer(), ProfilingLogger, + LoggerFactory.CreateLogger(), + LoggerFactory, HostingEnvironment, RuntimeState, UmbracoIndexConfig.GetMemberValueSetValidator() diff --git a/src/Umbraco.Examine.Lucene/UmbracoMemberIndex.cs b/src/Umbraco.Examine.Lucene/UmbracoMemberIndex.cs index 12678fa00a..a753df15ee 100644 --- a/src/Umbraco.Examine.Lucene/UmbracoMemberIndex.cs +++ b/src/Umbraco.Examine.Lucene/UmbracoMemberIndex.cs @@ -1,5 +1,6 @@ using Examine; using Lucene.Net.Analysis; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Hosting; using Umbraco.Core.IO; @@ -31,10 +32,12 @@ namespace Umbraco.Examine Directory luceneDirectory, Analyzer analyzer, IProfilingLogger profilingLogger, + ILogger logger, + ILoggerFactory loggerFactory, IHostingEnvironment hostingEnvironment, IRuntimeState runtimeState, IValueSetValidator validator = null) : - base(name, luceneDirectory, fieldDefinitions, analyzer, profilingLogger, hostingEnvironment, runtimeState, validator) + base(name, luceneDirectory, fieldDefinitions, analyzer, profilingLogger, logger, loggerFactory, hostingEnvironment, runtimeState, validator) { } diff --git a/src/Umbraco.Infrastructure/BatchedDatabaseServerMessenger.cs b/src/Umbraco.Infrastructure/BatchedDatabaseServerMessenger.cs index fa76fb6f11..693246257a 100644 --- a/src/Umbraco.Infrastructure/BatchedDatabaseServerMessenger.cs +++ b/src/Umbraco.Infrastructure/BatchedDatabaseServerMessenger.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using Newtonsoft.Json; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Sync; @@ -32,13 +33,14 @@ namespace Umbraco.Web IScopeProvider scopeProvider, ISqlContext sqlContext, IProfilingLogger proflog, + ILogger logger, IServerRegistrar serverRegistrar, DatabaseServerMessengerOptions options, IHostingEnvironment hostingEnvironment, CacheRefresherCollection cacheRefreshers, IRequestCache requestCache, IRequestAccessor requestAccessor) - : base(mainDom, scopeProvider, sqlContext, proflog, serverRegistrar, true, options, hostingEnvironment, cacheRefreshers) + : base(mainDom, scopeProvider, sqlContext, proflog, logger, serverRegistrar, true, options, hostingEnvironment, cacheRefreshers) { _databaseFactory = databaseFactory; _requestCache = requestCache; @@ -52,7 +54,7 @@ namespace Umbraco.Web if (_databaseFactory.CanConnect == false) { - Logger.Warn("Cannot connect to the database, distributed calls will not be enabled for this server."); + Logger.LogWarning("Cannot connect to the database, distributed calls will not be enabled for this server."); } else { diff --git a/src/Umbraco.Infrastructure/Cache/DistributedCacheBinder.cs b/src/Umbraco.Infrastructure/Cache/DistributedCacheBinder.cs index 92ed7de881..f345f40bd7 100644 --- a/src/Umbraco.Infrastructure/Cache/DistributedCacheBinder.cs +++ b/src/Umbraco.Infrastructure/Cache/DistributedCacheBinder.cs @@ -3,9 +3,9 @@ using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Reflection; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Events; -using Umbraco.Core.Logging; namespace Umbraco.Web.Cache { @@ -17,12 +17,12 @@ namespace Umbraco.Web.Cache private static readonly ConcurrentDictionary FoundHandlers = new ConcurrentDictionary(); private readonly DistributedCache _distributedCache; private readonly IUmbracoContextFactory _umbracoContextFactory; - private readonly ILogger _logger; + private readonly ILogger _logger; /// /// Initializes a new instance of the class. /// - public DistributedCacheBinder(DistributedCache distributedCache, IUmbracoContextFactory umbracoContextFactory, ILogger logger) + public DistributedCacheBinder(DistributedCache distributedCache, IUmbracoContextFactory umbracoContextFactory, ILogger logger) { _distributedCache = distributedCache; _logger = logger; @@ -73,7 +73,7 @@ namespace Umbraco.Web.Cache { // TODO: should this be fatal (ie, an exception)? var name = e.Sender.GetType().Name + "_" + e.EventName; - _logger.Warn("Dropping event {EventName} because no corresponding handler was found.", name); + _logger.LogWarning("Dropping event {EventName} because no corresponding handler was found.", name); continue; } diff --git a/src/Umbraco.Infrastructure/Cache/DistributedCacheBinder_Handlers.cs b/src/Umbraco.Infrastructure/Cache/DistributedCacheBinder_Handlers.cs index c0200933ab..46968e81dc 100644 --- a/src/Umbraco.Infrastructure/Cache/DistributedCacheBinder_Handlers.cs +++ b/src/Umbraco.Infrastructure/Cache/DistributedCacheBinder_Handlers.cs @@ -1,8 +1,8 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core.Events; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Membership; using Umbraco.Core.Services; @@ -43,7 +43,7 @@ namespace Umbraco.Web.Cache if (supportUnbinding) _unbinders = new List(); - _logger.Info("Initializing Umbraco internal event handlers for cache refreshing."); + _logger.LogInformation("Initializing Umbraco internal event handlers for cache refreshing."); // bind to user and user group events Bind(() => UserService.SavedUserGroup += UserService_SavedUserGroup, diff --git a/src/Umbraco.Infrastructure/Compose/DatabaseServerRegistrarAndMessengerComponent.cs b/src/Umbraco.Infrastructure/Compose/DatabaseServerRegistrarAndMessengerComponent.cs index c8bc02f604..096c5d5686 100644 --- a/src/Umbraco.Infrastructure/Compose/DatabaseServerRegistrarAndMessengerComponent.cs +++ b/src/Umbraco.Infrastructure/Compose/DatabaseServerRegistrarAndMessengerComponent.cs @@ -1,9 +1,9 @@ using System; using System.Threading; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Composing; using Umbraco.Core.Hosting; -using Umbraco.Core.Logging; using Umbraco.Core.Services; using Umbraco.Core.Services.Changes; using Umbraco.Core.Sync; @@ -83,7 +83,8 @@ namespace Umbraco.Web.Compose private object _locker = new object(); private readonly DatabaseServerRegistrar _registrar; private readonly IBatchedDatabaseServerMessenger _messenger; - private readonly ILogger _logger; + private readonly ILogger _logger; + private readonly ILoggerFactory _loggerFactory; private readonly IServerRegistrationService _registrationService; private readonly BackgroundTaskRunner _touchTaskRunner; private readonly BackgroundTaskRunner _processTaskRunner; @@ -95,11 +96,13 @@ namespace Umbraco.Web.Compose IServerRegistrar serverRegistrar, IServerMessenger serverMessenger, IServerRegistrationService registrationService, - ILogger logger, + ILogger logger, + ILoggerFactory loggerFactory, IApplicationShutdownRegistry hostingEnvironment, IRequestAccessor requestAccessor) { _logger = logger; + _loggerFactory = loggerFactory; _registrationService = registrationService; _requestAccessor = requestAccessor; @@ -108,7 +111,7 @@ namespace Umbraco.Web.Compose if (_registrar != null) { _touchTaskRunner = new BackgroundTaskRunner("ServerRegistration", - new BackgroundTaskRunnerOptions { AutoStart = true }, logger, hostingEnvironment); + new BackgroundTaskRunnerOptions { AutoStart = true }, _loggerFactory.CreateLogger>(), hostingEnvironment); } // create task runner for BatchedDatabaseServerMessenger @@ -116,7 +119,7 @@ namespace Umbraco.Web.Compose if (_messenger != null) { _processTaskRunner = new BackgroundTaskRunner("ServerInstProcess", - new BackgroundTaskRunnerOptions { AutoStart = true }, logger, hostingEnvironment); + new BackgroundTaskRunnerOptions { AutoStart = true }, _loggerFactory.CreateLogger>(), hostingEnvironment); } } @@ -225,7 +228,7 @@ namespace Umbraco.Web.Compose } catch (Exception e) { - _logger.Error(e, "Failed (will repeat)."); + _logger.LogError(e, "Failed (will repeat)."); } return true; // repeat } @@ -268,7 +271,7 @@ namespace Umbraco.Web.Compose } catch (Exception ex) { - _logger.Error(ex, "Failed to update server record in database."); + _logger.LogError(ex, "Failed to update server record in database."); return false; // probably stop if we have an error } } diff --git a/src/Umbraco.Infrastructure/Compose/ManifestWatcherComponent.cs b/src/Umbraco.Infrastructure/Compose/ManifestWatcherComponent.cs index a2ee650595..c99d7c992e 100644 --- a/src/Umbraco.Infrastructure/Compose/ManifestWatcherComponent.cs +++ b/src/Umbraco.Infrastructure/Compose/ManifestWatcherComponent.cs @@ -1,8 +1,8 @@ using System.IO; +using Microsoft.Extensions.Logging; using Umbraco.Core.Composing; using Umbraco.Core.Hosting; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Manifest; using Umbraco.Net; @@ -11,7 +11,7 @@ namespace Umbraco.Core.Compose public sealed class ManifestWatcherComponent : IComponent { private readonly IHostingEnvironment _hosting; - private readonly ILogger _logger; + private readonly ILoggerFactory _loggerFactory; private readonly IIOHelper _ioHelper; private readonly IUmbracoApplicationLifetime _umbracoApplicationLifetime; @@ -19,10 +19,10 @@ namespace Umbraco.Core.Compose // package.manifest chances and restarts the application on any change private ManifestWatcher _mw; - public ManifestWatcherComponent(IHostingEnvironment hosting, ILogger logger, IIOHelper ioHelper, IUmbracoApplicationLifetime umbracoApplicationLifetime) + public ManifestWatcherComponent(IHostingEnvironment hosting, ILoggerFactory loggerFactory, IIOHelper ioHelper, IUmbracoApplicationLifetime umbracoApplicationLifetime) { _hosting = hosting; - _logger = logger; + _loggerFactory = loggerFactory; _ioHelper = ioHelper; _umbracoApplicationLifetime = umbracoApplicationLifetime; } @@ -37,7 +37,7 @@ namespace Umbraco.Core.Compose var appPlugins = _ioHelper.MapPath("~/App_Plugins/"); if (Directory.Exists(appPlugins) == false) return; - _mw = new ManifestWatcher(_logger, _umbracoApplicationLifetime); + _mw = new ManifestWatcher(_loggerFactory.CreateLogger(), _umbracoApplicationLifetime); _mw.Start(Directory.GetDirectories(appPlugins)); } diff --git a/src/Umbraco.Infrastructure/Compose/NotificationsComponent.cs b/src/Umbraco.Infrastructure/Compose/NotificationsComponent.cs index 2530ba3a08..81a41cf575 100644 --- a/src/Umbraco.Infrastructure/Compose/NotificationsComponent.cs +++ b/src/Umbraco.Infrastructure/Compose/NotificationsComponent.cs @@ -3,10 +3,10 @@ using System.Collections.Generic; using System.Globalization; using System.Linq; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Composing; using Umbraco.Core.Configuration.Models; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; using Umbraco.Core.Models.Membership; @@ -189,7 +189,7 @@ namespace Umbraco.Web.Compose private readonly IUserService _userService; private readonly ILocalizedTextService _textService; private readonly GlobalSettings _globalSettings; - private readonly ILogger _logger; + private readonly ILogger _logger; /// /// Constructor @@ -208,7 +208,7 @@ namespace Umbraco.Web.Compose IUserService userService, ILocalizedTextService textService, IOptions globalSettings, - ILogger logger) + ILogger logger) { _umbracoContextAccessor = umbracoContextAccessor; _requestAccessor = requestAccessor; @@ -226,11 +226,11 @@ namespace Umbraco.Web.Compose //if there is no current user, then use the admin if (user == null) { - _logger.Debug(typeof(Notifier), "There is no current Umbraco user logged in, the notifications will be sent from the administrator"); + _logger.LogDebug("There is no current Umbraco user logged in, the notifications will be sent from the administrator"); user = _userService.GetUserById(Constants.Security.SuperUserId); if (user == null) { - _logger.Warn(typeof(Notifier), "Notifications can not be sent, no admin user with id {SuperUserId} could be resolved", Constants.Security.SuperUserId); + _logger.LogWarning("Notifications can not be sent, no admin user with id {SuperUserId} could be resolved", Constants.Security.SuperUserId); return; } } @@ -243,7 +243,7 @@ namespace Umbraco.Web.Compose if (sender == null) throw new ArgumentNullException(nameof(sender)); if (siteUri == null) { - _logger.Warn(typeof(Notifier), "Notifications can not be sent, no site url is set (might be during boot process?)"); + _logger.LogWarning("Notifications can not be sent, no site url is set (might be during boot process?)"); return; } diff --git a/src/Umbraco.Infrastructure/Composing/CompositionExtensions/FileSystems.cs b/src/Umbraco.Infrastructure/Composing/CompositionExtensions/FileSystems.cs index 4b941727ca..d6b8288b88 100644 --- a/src/Umbraco.Infrastructure/Composing/CompositionExtensions/FileSystems.cs +++ b/src/Umbraco.Infrastructure/Composing/CompositionExtensions/FileSystems.cs @@ -1,10 +1,10 @@ -using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Hosting; using Umbraco.Core.IO; using Umbraco.Core.IO.MediaPathSchemes; -using Umbraco.Core.Logging; namespace Umbraco.Core.Composing.CompositionExtensions { @@ -98,7 +98,7 @@ namespace Umbraco.Core.Composing.CompositionExtensions { var ioHelper = factory.GetInstance(); var hostingEnvironment = factory.GetInstance(); - var logger = factory.GetInstance(); + var logger = factory.GetInstance>(); var globalSettings = factory.GetInstance>().Value; var rootPath = hostingEnvironment.MapPathWebRoot(globalSettings.UmbracoMediaPath); diff --git a/src/Umbraco.Infrastructure/Composing/CompositionExtensions/Services.cs b/src/Umbraco.Infrastructure/Composing/CompositionExtensions/Services.cs index ffd8b880f2..a4744d3d2d 100644 --- a/src/Umbraco.Infrastructure/Composing/CompositionExtensions/Services.cs +++ b/src/Umbraco.Infrastructure/Composing/CompositionExtensions/Services.cs @@ -2,13 +2,13 @@ using System.IO; using System.Linq; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; using Umbraco.Core.Cache; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Events; using Umbraco.Core.Hosting; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Packaging; using Umbraco.Core.Routing; using Umbraco.Core.Services; @@ -61,7 +61,7 @@ namespace Umbraco.Core.Composing.CompositionExtensions composition.Register(SourcesFactory); composition.RegisterUnique(factory => new LocalizedTextService( factory.GetInstance>(), - factory.GetInstance())); + factory.GetInstance>())); composition.RegisterUnique(); @@ -94,7 +94,7 @@ namespace Umbraco.Core.Composing.CompositionExtensions factory.GetInstance(), factory.GetInstance(), factory.GetInstance(), - factory.GetInstance(), + factory.GetInstance(), factory.GetInstance(), factory.GetInstance>(), packageRepoFileName); @@ -122,7 +122,7 @@ namespace Umbraco.Core.Composing.CompositionExtensions .Select(x => new LocalizedTextServiceSupplementaryFileSource(x, true)); return new LocalizedTextServiceFileSources( - container.GetInstance(), + container.GetInstance>(), container.GetInstance(), mainLangFolder, pluginLangFolders.Concat(userLangFolders)); diff --git a/src/Umbraco.Infrastructure/Composing/UmbracoServiceProviderFactory.cs b/src/Umbraco.Infrastructure/Composing/UmbracoServiceProviderFactory.cs index 6bd0d796ec..70737ab569 100644 --- a/src/Umbraco.Infrastructure/Composing/UmbracoServiceProviderFactory.cs +++ b/src/Umbraco.Infrastructure/Composing/UmbracoServiceProviderFactory.cs @@ -2,6 +2,7 @@ using LightInject.Microsoft.DependencyInjection; using Microsoft.Extensions.DependencyInjection; using System; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Umbraco.Composing; using Umbraco.Core.Composing.LightInject; @@ -87,7 +88,7 @@ namespace Umbraco.Core.Composing { // after cross wiring, configure "Current" Current.Initialize( - _container.GetInstance(), + _container.GetInstance>(), _container.GetInstance>().Value, _container.GetInstance>().Value, _container.GetInstance(), diff --git a/src/Umbraco.Infrastructure/CompositionExtensions_Essentials.cs b/src/Umbraco.Infrastructure/CompositionExtensions_Essentials.cs index b2ded07034..a7e7981daf 100644 --- a/src/Umbraco.Infrastructure/CompositionExtensions_Essentials.cs +++ b/src/Umbraco.Infrastructure/CompositionExtensions_Essentials.cs @@ -1,4 +1,5 @@ -using Umbraco.Core.Cache; +using Microsoft.Extensions.Logging; +using Umbraco.Core.Cache; using Umbraco.Core.Composing; using Umbraco.Core.Configuration; using Umbraco.Core.Hosting; @@ -24,21 +25,21 @@ namespace Umbraco.Core // then we pre-resolve them which means that the instance re-resolved later is different... BUT if we register that // pre-resolved instance here again, then it will be the same instance re-resolved later, just like we are doing with // IDbProviderFactoryCreator. - ILogger logger, IProfiler profiler, IProfilingLogger profilingLogger, + ILogger logger, ILoggerFactory loggerFactory, IProfiler profiler, IProfilingLogger profilingLogger, IMainDom mainDom, AppCaches appCaches, IUmbracoDatabaseFactory databaseFactory, TypeLoader typeLoader, IRuntimeState state, ITypeFinder typeFinder, - IIOHelper ioHelper, IUmbracoVersion umbracoVersion, IDbProviderFactoryCreator dbProviderFactoryCreator, IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo) - { + { composition.RegisterUnique(logger); + composition.RegisterUnique(loggerFactory); composition.RegisterUnique(profiler); composition.RegisterUnique(profilingLogger); composition.RegisterUnique(mainDom); diff --git a/src/Umbraco.Infrastructure/Examine/IndexRebuilder.cs b/src/Umbraco.Infrastructure/Examine/IndexRebuilder.cs index d9bef752a9..bafdfc72f4 100644 --- a/src/Umbraco.Infrastructure/Examine/IndexRebuilder.cs +++ b/src/Umbraco.Infrastructure/Examine/IndexRebuilder.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using System.Threading.Tasks; using Examine; using Umbraco.Core.Composing; @@ -14,12 +15,14 @@ namespace Umbraco.Examine /// public class IndexRebuilder { - private readonly IProfilingLogger _logger; + private readonly IProfilingLogger _profilingLogger; + private readonly ILogger _logger; private readonly IEnumerable _populators; public IExamineManager ExamineManager { get; } - public IndexRebuilder(IProfilingLogger logger, IExamineManager examineManager, IEnumerable populators) + public IndexRebuilder(IProfilingLogger profilingLogger , ILogger logger, IExamineManager examineManager, IEnumerable populators) { + _profilingLogger = profilingLogger ; _populators = populators; _logger = logger; ExamineManager = examineManager; @@ -65,7 +68,7 @@ namespace Umbraco.Examine } catch (Exception e) { - _logger.Error(e, "Index populating failed for populator {Populator}", populator.GetType()); + _logger.LogError(e, "Index populating failed for populator {Populator}", populator.GetType()); } } } diff --git a/src/Umbraco.Infrastructure/Examine/MediaValueSetBuilder.cs b/src/Umbraco.Infrastructure/Examine/MediaValueSetBuilder.cs index e9aa87a25c..73ad31e115 100644 --- a/src/Umbraco.Infrastructure/Examine/MediaValueSetBuilder.cs +++ b/src/Umbraco.Infrastructure/Examine/MediaValueSetBuilder.cs @@ -2,8 +2,8 @@ using Examine; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.PropertyEditors; using Umbraco.Core.PropertyEditors.ValueConverters; @@ -17,13 +17,13 @@ namespace Umbraco.Examine { private readonly UrlSegmentProviderCollection _urlSegmentProviders; private readonly IUserService _userService; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IShortStringHelper _shortStringHelper; private readonly IJsonSerializer _serializer; public MediaValueSetBuilder(PropertyEditorCollection propertyEditors, UrlSegmentProviderCollection urlSegmentProviders, - IUserService userService, ILogger logger, IShortStringHelper shortStringHelper, IJsonSerializer serializer) + IUserService userService, ILogger logger, IShortStringHelper shortStringHelper, IJsonSerializer serializer) : base(propertyEditors, false) { _urlSegmentProviders = urlSegmentProviders; @@ -55,7 +55,7 @@ namespace Umbraco.Examine } catch (Exception ex) { - _logger.Error(ex, $"Could not Deserialize ImageCropperValue for item with key {m.Key} "); + _logger.LogError(ex, $"Could not Deserialize ImageCropperValue for item with key {m.Key} "); } if (cropper != null) diff --git a/src/Umbraco.Infrastructure/HealthCheck/HealthCheckResults.cs b/src/Umbraco.Infrastructure/HealthCheck/HealthCheckResults.cs index 8f3c05f5bd..7eebf61b22 100644 --- a/src/Umbraco.Infrastructure/HealthCheck/HealthCheckResults.cs +++ b/src/Umbraco.Infrastructure/HealthCheck/HealthCheckResults.cs @@ -5,7 +5,7 @@ using System.Text; using HeyRed.MarkdownSharp; using Umbraco.Composing; using Umbraco.Core.Configuration.HealthChecks; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; namespace Umbraco.Web.HealthCheck { @@ -27,7 +27,7 @@ namespace Umbraco.Web.HealthCheck } catch (Exception ex) { - Logger.Error(ex, "Error running scheduled health check: {HealthCheckName}", t.Name); + Logger.LogError(ex, "Error running scheduled health check: {HealthCheckName}", t.Name); var message = $"Health check failed with exception: {ex.Message}. See logs for details."; return new List { @@ -54,7 +54,7 @@ namespace Umbraco.Web.HealthCheck public void LogResults() { - Logger.Info("Scheduled health check results:"); + Logger.LogInformation("Scheduled health check results:"); foreach (var result in _results) { var checkName = result.Key; @@ -62,16 +62,16 @@ namespace Umbraco.Web.HealthCheck var checkIsSuccess = result.Value.All(x => x.ResultType == StatusResultType.Success); if (checkIsSuccess) { - Logger.Info("Checks for '{HealthCheckName}' all completed successfully.", checkName); + Logger.LogInformation("Checks for '{HealthCheckName}' all completed successfully.", checkName); } else { - Logger.Warn("Checks for '{HealthCheckName}' completed with errors.", checkName); + Logger.LogWarning("Checks for '{HealthCheckName}' completed with errors.", checkName); } foreach (var checkResult in checkResults) { - Logger.Info("Result for {HealthCheckName}: {HealthCheckResult}, Message: '{HealthCheckMessage}'", checkName, checkResult.ResultType, checkResult.Message); + Logger.LogInformation("Result for {HealthCheckName}: {HealthCheckResult}, Message: '{HealthCheckMessage}'", checkName, checkResult.ResultType, checkResult.Message); } } } diff --git a/src/Umbraco.Infrastructure/Install/InstallHelper.cs b/src/Umbraco.Infrastructure/Install/InstallHelper.cs index 967e8cc087..1538187528 100644 --- a/src/Umbraco.Infrastructure/Install/InstallHelper.cs +++ b/src/Umbraco.Infrastructure/Install/InstallHelper.cs @@ -3,9 +3,9 @@ using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Threading.Tasks; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Configuration; -using Umbraco.Core.Logging; using Umbraco.Core.Migrations.Install; using Umbraco.Core.Models; using Umbraco.Net; @@ -22,7 +22,7 @@ namespace Umbraco.Web.Install { private static HttpClient _httpClient; private readonly DatabaseBuilder _databaseBuilder; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IUmbracoVersion _umbracoVersion; private readonly ConnectionStrings _connectionStrings; private readonly IInstallationService _installationService; @@ -33,7 +33,7 @@ namespace Umbraco.Web.Install private InstallationType? _installationType; public InstallHelper(DatabaseBuilder databaseBuilder, - ILogger logger, + ILogger logger, IUmbracoVersion umbracoVersion, IOptions connectionStrings, IInstallationService installationService, @@ -105,7 +105,7 @@ namespace Umbraco.Web.Install } catch (Exception ex) { - _logger.Error(ex, "An error occurred in InstallStatus trying to check upgrades"); + _logger.LogError(ex, "An error occurred in InstallStatus trying to check upgrades"); } } @@ -156,7 +156,7 @@ namespace Umbraco.Web.Install } catch (AggregateException ex) { - _logger.Error(ex, "Could not download list of available starter kits"); + _logger.LogError(ex, "Could not download list of available starter kits"); } return packages; diff --git a/src/Umbraco.Infrastructure/Install/InstallSteps/DatabaseConfigureStep.cs b/src/Umbraco.Infrastructure/Install/InstallSteps/DatabaseConfigureStep.cs index 74b5b68bfd..7727b6b760 100644 --- a/src/Umbraco.Infrastructure/Install/InstallSteps/DatabaseConfigureStep.cs +++ b/src/Umbraco.Infrastructure/Install/InstallSteps/DatabaseConfigureStep.cs @@ -1,8 +1,8 @@ using System; using System.Collections.Generic; using System.Threading.Tasks; +using Microsoft.Extensions.Logging; using Umbraco.Core; -using Umbraco.Core.Logging; using Umbraco.Core.Migrations.Install; using Umbraco.Web.Install.Models; using Umbraco.Core.Configuration.Models; @@ -16,13 +16,14 @@ namespace Umbraco.Web.Install.InstallSteps public class DatabaseConfigureStep : InstallSetupStep { private readonly DatabaseBuilder _databaseBuilder; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly ConnectionStrings _connectionStrings; - public DatabaseConfigureStep(DatabaseBuilder databaseBuilder, IOptions connectionStrings) + public DatabaseConfigureStep(DatabaseBuilder databaseBuilder, IOptions connectionStrings, ILogger logger) { _databaseBuilder = databaseBuilder; _connectionStrings = connectionStrings.Value ?? throw new ArgumentNullException(nameof(connectionStrings)); + _logger = logger; } public override Task ExecuteAsync(DatabaseModel database) @@ -120,7 +121,7 @@ namespace Umbraco.Web.Install.InstallSteps } catch (Exception ex) { - _logger.Error(ex, "An error occurred, reconfiguring..."); + _logger.LogError(ex, "An error occurred, reconfiguring..."); //something went wrong, could not connect so probably need to reconfigure return true; } diff --git a/src/Umbraco.Infrastructure/Install/InstallSteps/DatabaseUpgradeStep.cs b/src/Umbraco.Infrastructure/Install/InstallSteps/DatabaseUpgradeStep.cs index 476feba119..7258628b7d 100644 --- a/src/Umbraco.Infrastructure/Install/InstallSteps/DatabaseUpgradeStep.cs +++ b/src/Umbraco.Infrastructure/Install/InstallSteps/DatabaseUpgradeStep.cs @@ -2,11 +2,11 @@ using System.Linq; using System.Threading.Tasks; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Migrations.Install; using Umbraco.Core.Migrations.Upgrade; using Umbraco.Web.Install.Models; @@ -20,14 +20,14 @@ namespace Umbraco.Web.Install.InstallSteps { private readonly DatabaseBuilder _databaseBuilder; private readonly IRuntimeState _runtime; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IUmbracoVersion _umbracoVersion; private readonly ConnectionStrings _connectionStrings; public DatabaseUpgradeStep( DatabaseBuilder databaseBuilder, IRuntimeState runtime, - ILogger logger, + ILogger logger, IUmbracoVersion umbracoVersion, IOptions connectionStrings) { @@ -46,7 +46,7 @@ namespace Umbraco.Web.Install.InstallSteps if (upgrade) { - _logger.Info("Running 'Upgrade' service"); + _logger.LogInformation("Running 'Upgrade' service"); var plan = new UmbracoPlan(_umbracoVersion); plan.AddPostMigration(); // needed when running installer (back-office) diff --git a/src/Umbraco.Infrastructure/Logging/Serilog/SerilogLogger.cs b/src/Umbraco.Infrastructure/Logging/Serilog/SerilogLogger.cs index 7b8b83c59a..9e14a6407a 100644 --- a/src/Umbraco.Infrastructure/Logging/Serilog/SerilogLogger.cs +++ b/src/Umbraco.Infrastructure/Logging/Serilog/SerilogLogger.cs @@ -1,6 +1,7 @@ using System; using System.IO; using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Logging; using Serilog; using Serilog.Events; using Serilog.Extensions.Logging; @@ -12,7 +13,7 @@ namespace Umbraco.Core.Logging.Serilog /// /// Implements on top of Serilog. /// - public class SerilogLogger : ILogger, IDisposable + public class SerilogLogger : IDisposable { public global::Serilog.ILogger SerilogLog { get; } @@ -215,5 +216,6 @@ namespace Umbraco.Core.Logging.Serilog { SerilogLog.DisposeIfDisposable(); } + } } diff --git a/src/Umbraco.Infrastructure/Logging/Viewer/LogViewerComposer.cs b/src/Umbraco.Infrastructure/Logging/Viewer/LogViewerComposer.cs index d340bb817f..797e353fcf 100644 --- a/src/Umbraco.Infrastructure/Logging/Viewer/LogViewerComposer.cs +++ b/src/Umbraco.Infrastructure/Logging/Viewer/LogViewerComposer.cs @@ -1,4 +1,5 @@ using System.IO; +using Microsoft.Extensions.Logging; using Serilog; using Umbraco.Core.Composing; using Umbraco.Core.Hosting; @@ -16,7 +17,7 @@ namespace Umbraco.Core.Logging.Viewer composition.RegisterUnique(factory => { - return new SerilogJsonLogViewer(factory.GetInstance(), + return new SerilogJsonLogViewer(factory.GetInstance>(), factory.GetInstance(), factory.GetInstance(), Log.Logger); diff --git a/src/Umbraco.Infrastructure/Logging/Viewer/SerilogJsonLogViewer.cs b/src/Umbraco.Infrastructure/Logging/Viewer/SerilogJsonLogViewer.cs index 5bf079c1b4..8e74dbe194 100644 --- a/src/Umbraco.Infrastructure/Logging/Viewer/SerilogJsonLogViewer.cs +++ b/src/Umbraco.Infrastructure/Logging/Viewer/SerilogJsonLogViewer.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using Microsoft.Extensions.Logging; using Newtonsoft.Json; using Serilog.Events; using Serilog.Formatting.Compact.Reader; @@ -11,10 +12,10 @@ namespace Umbraco.Core.Logging.Viewer internal class SerilogJsonLogViewer : SerilogLogViewerSourceBase { private readonly string _logsPath; - private readonly ILogger _logger; + private readonly ILogger _logger; public SerilogJsonLogViewer( - ILogger logger, + ILogger logger, ILogViewerConfig logViewerConfig, ILoggingConfiguration loggingConfiguration, global::Serilog.ILogger serilogLog) @@ -128,7 +129,7 @@ namespace Umbraco.Core.Logging.Viewer { // As we are reading/streaming one line at a time in the JSON file // Thus we can not report the line number, as it will always be 1 - _logger.Error(ex, "Unable to parse a line in the JSON log file"); + _logger.LogError(ex, "Unable to parse a line in the JSON log file"); evt = null; return true; diff --git a/src/Umbraco.Infrastructure/Manifest/DataEditorConverter.cs b/src/Umbraco.Infrastructure/Manifest/DataEditorConverter.cs index 9a6b37a9bb..94b868f145 100644 --- a/src/Umbraco.Infrastructure/Manifest/DataEditorConverter.cs +++ b/src/Umbraco.Infrastructure/Manifest/DataEditorConverter.cs @@ -1,9 +1,9 @@ using System; +using Microsoft.Extensions.Logging; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Umbraco.Core.Composing; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Serialization; using Umbraco.Core.Services; @@ -16,7 +16,7 @@ namespace Umbraco.Core.Manifest /// internal class DataEditorConverter : JsonReadConverter { - private readonly ILogger _logger; + private readonly ILoggerFactory _loggerFactory; private readonly IIOHelper _ioHelper; private readonly IDataTypeService _dataTypeService; private readonly ILocalizationService _localizationService; @@ -26,9 +26,9 @@ namespace Umbraco.Core.Manifest /// /// Initializes a new instance of the class. /// - public DataEditorConverter(ILogger logger, IIOHelper ioHelper, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService textService, IShortStringHelper shortStringHelper) + public DataEditorConverter(ILoggerFactory loggerFactory, IIOHelper ioHelper, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService textService, IShortStringHelper shortStringHelper) { - _logger = logger; + _loggerFactory = loggerFactory; _ioHelper = ioHelper; _dataTypeService = dataTypeService; _localizationService = localizationService; @@ -61,7 +61,7 @@ namespace Umbraco.Core.Manifest type = EditorType.MacroParameter; } - return new DataEditor(_logger, _dataTypeService, _localizationService, _textService, _shortStringHelper, type); + return new DataEditor(_loggerFactory, _dataTypeService, _localizationService, _textService, _shortStringHelper, type); } /// diff --git a/src/Umbraco.Infrastructure/Manifest/ManifestParser.cs b/src/Umbraco.Infrastructure/Manifest/ManifestParser.cs index c6ffb9b6ef..7392506d2b 100644 --- a/src/Umbraco.Infrastructure/Manifest/ManifestParser.cs +++ b/src/Umbraco.Infrastructure/Manifest/ManifestParser.cs @@ -3,10 +3,10 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; +using Microsoft.Extensions.Logging; using Newtonsoft.Json; using Umbraco.Core.Cache; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Serialization; using Umbraco.Core.Services; @@ -19,13 +19,14 @@ namespace Umbraco.Core.Manifest /// public class ManifestParser : IManifestParser { + private readonly ILoggerFactory _loggerFactory; private readonly IJsonSerializer _jsonSerializer; private readonly ILocalizedTextService _localizedTextService; private readonly IShortStringHelper _shortStringHelper; private static readonly string Utf8Preamble = Encoding.UTF8.GetString(Encoding.UTF8.GetPreamble()); private readonly IAppPolicyCache _cache; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IIOHelper _ioHelper; private readonly IDataTypeService _dataTypeService; private readonly ILocalizationService _localizationService; @@ -41,15 +42,17 @@ namespace Umbraco.Core.Manifest AppCaches appCaches, ManifestValueValidatorCollection validators, ManifestFilterCollection filters, - ILogger logger, + ILogger logger, + ILoggerFactory loggerFactory, IIOHelper ioHelper, IDataTypeService dataTypeService, ILocalizationService localizationService, IJsonSerializer jsonSerializer, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper) - : this(appCaches, validators, filters, "~/App_Plugins", logger, ioHelper, dataTypeService, localizationService) + : this(appCaches, validators, filters, "~/App_Plugins", logger, loggerFactory, ioHelper, dataTypeService, localizationService) { + _loggerFactory = loggerFactory; _jsonSerializer = jsonSerializer; _localizedTextService = localizedTextService; _shortStringHelper = shortStringHelper; @@ -58,7 +61,7 @@ namespace Umbraco.Core.Manifest /// /// Initializes a new instance of the class. /// - private ManifestParser(AppCaches appCaches, ManifestValueValidatorCollection validators, ManifestFilterCollection filters, string path, ILogger logger, IIOHelper ioHelper, IDataTypeService dataTypeService, ILocalizationService localizationService) + private ManifestParser(AppCaches appCaches, ManifestValueValidatorCollection validators, ManifestFilterCollection filters, string path, ILogger logger, ILoggerFactory loggerFactory, IIOHelper ioHelper, IDataTypeService dataTypeService, ILocalizationService localizationService) { if (appCaches == null) throw new ArgumentNullException(nameof(appCaches)); _cache = appCaches.RuntimeCache; @@ -70,6 +73,7 @@ namespace Umbraco.Core.Manifest if (path == null) throw new ArgumentNullException(nameof(path)); if (string.IsNullOrWhiteSpace(path)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(path)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); + _loggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory)); _ioHelper = ioHelper; Path = path; @@ -115,7 +119,7 @@ namespace Umbraco.Core.Manifest } catch (Exception e) { - _logger.Error(e, "Failed to parse manifest at '{Path}', ignoring.", path); + _logger.LogError(e, "Failed to parse manifest at '{Path}', ignoring.", path); } } @@ -189,7 +193,7 @@ namespace Umbraco.Core.Manifest if (string.IsNullOrWhiteSpace(text)) throw new ArgumentException("Value can't be empty or consist only of white-space characters.", nameof(text)); var manifest = JsonConvert.DeserializeObject(text, - new DataEditorConverter(_logger, _ioHelper, _dataTypeService, _localizationService, _localizedTextService, _shortStringHelper), + new DataEditorConverter(_loggerFactory, _ioHelper, _dataTypeService, _localizationService, _localizedTextService, _shortStringHelper), new ValueValidatorConverter(_validators), new DashboardAccessRuleConverter()); diff --git a/src/Umbraco.Infrastructure/Media/UploadAutoFillProperties.cs b/src/Umbraco.Infrastructure/Media/UploadAutoFillProperties.cs index 482fa0a6b8..deeed7a07c 100644 --- a/src/Umbraco.Infrastructure/Media/UploadAutoFillProperties.cs +++ b/src/Umbraco.Infrastructure/Media/UploadAutoFillProperties.cs @@ -1,10 +1,10 @@ using System; using System.Drawing; using System.IO; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Configuration.Models; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Media; using Umbraco.Core.Models; @@ -16,12 +16,12 @@ namespace Umbraco.Web.Media public class UploadAutoFillProperties { private readonly IMediaFileSystem _mediaFileSystem; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IImageUrlGenerator _imageUrlGenerator; public UploadAutoFillProperties( IMediaFileSystem mediaFileSystem, - ILogger logger, + ILogger logger, IImageUrlGenerator imageUrlGenerator) { _mediaFileSystem = mediaFileSystem ?? throw new ArgumentNullException(nameof(mediaFileSystem)); @@ -77,7 +77,7 @@ namespace Umbraco.Web.Media } catch (Exception ex) { - _logger.Error(typeof(UploadAutoFillProperties), ex, "Could not populate upload auto-fill properties for file '{File}'.", filepath); + _logger.LogError(ex, "Could not populate upload auto-fill properties for file '{File}'.", filepath); ResetProperties(content, autoFillConfig, culture, segment); } } diff --git a/src/Umbraco.Infrastructure/Migrations/IMigrationContext.cs b/src/Umbraco.Infrastructure/Migrations/IMigrationContext.cs index c76de8dfb3..b276d5b171 100644 --- a/src/Umbraco.Infrastructure/Migrations/IMigrationContext.cs +++ b/src/Umbraco.Infrastructure/Migrations/IMigrationContext.cs @@ -1,6 +1,6 @@ using System; using System.Collections.Generic; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Core.Persistence; namespace Umbraco.Core.Migrations @@ -13,7 +13,7 @@ namespace Umbraco.Core.Migrations /// /// Gets the logger. /// - ILogger Logger { get; } + ILogger Logger { get; } /// /// Gets the database instance. diff --git a/src/Umbraco.Infrastructure/Migrations/Install/DatabaseBuilder.cs b/src/Umbraco.Infrastructure/Migrations/Install/DatabaseBuilder.cs index 678860809a..b27bc48c8e 100644 --- a/src/Umbraco.Infrastructure/Migrations/Install/DatabaseBuilder.cs +++ b/src/Umbraco.Infrastructure/Migrations/Install/DatabaseBuilder.cs @@ -2,12 +2,12 @@ using System.IO; using System.Linq; using System.Xml.Linq; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Hosting; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Migrations.Upgrade; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Dtos; @@ -27,7 +27,8 @@ namespace Umbraco.Core.Migrations.Install private readonly IMigrationBuilder _migrationBuilder; private readonly IKeyValueService _keyValueService; private readonly IHostingEnvironment _hostingEnvironment; - private readonly ILogger _logger; + private readonly ILogger _logger; + private readonly ILoggerFactory _loggerFactory; private readonly IUmbracoVersion _umbracoVersion; private readonly IDbProviderFactoryCreator _dbProviderFactoryCreator; private readonly IConfigManipulator _configManipulator; @@ -41,7 +42,8 @@ namespace Umbraco.Core.Migrations.Install IScopeProvider scopeProvider, IUmbracoDatabaseFactory databaseFactory, IRuntimeState runtime, - ILogger logger, + ILogger logger, + ILoggerFactory loggerFactory, IMigrationBuilder migrationBuilder, IKeyValueService keyValueService, IHostingEnvironment hostingEnvironment, @@ -53,6 +55,7 @@ namespace Umbraco.Core.Migrations.Install _databaseFactory = databaseFactory; _runtime = runtime; _logger = logger; + _loggerFactory = loggerFactory; _migrationBuilder = migrationBuilder; _keyValueService = keyValueService; _hostingEnvironment = hostingEnvironment; @@ -318,7 +321,7 @@ namespace Umbraco.Core.Migrations.Install return _databaseSchemaValidationResult; var database = scope.Database; - var dbSchema = new DatabaseSchemaCreator(database, _logger, _umbracoVersion); + var dbSchema = new DatabaseSchemaCreator(database, _loggerFactory.CreateLogger(), _loggerFactory, _umbracoVersion); _databaseSchemaValidationResult = dbSchema.ValidateSchema(); return _databaseSchemaValidationResult; } @@ -350,7 +353,7 @@ namespace Umbraco.Core.Migrations.Install return readyForInstall.Result; } - _logger.Info("Database configuration status: Started"); + _logger.LogInformation("Database configuration status: Started"); var database = scope.Database; @@ -366,18 +369,18 @@ namespace Umbraco.Core.Migrations.Install if (_runtime.Level == RuntimeLevel.Run) throw new Exception("Umbraco is already configured!"); - var creator = new DatabaseSchemaCreator(database, _logger, _umbracoVersion); + var creator = new DatabaseSchemaCreator(database, _loggerFactory.CreateLogger(), _loggerFactory, _umbracoVersion); creator.InitializeDatabaseSchema(); message = message + "

Installation completed!

"; //now that everything is done, we need to determine the version of SQL server that is executing - _logger.Info("Database configuration status: {DbConfigStatus}", message); + _logger.LogInformation("Database configuration status: {DbConfigStatus}", message); return new Result { Message = message, Success = true, Percentage = "100" }; } //we need to do an upgrade so return a new status message and it will need to be done during the next step - _logger.Info("Database requires upgrade"); + _logger.LogInformation("Database requires upgrade"); message = "

Upgrading database, this may take some time...

"; return new Result { @@ -411,17 +414,17 @@ namespace Umbraco.Core.Migrations.Install return readyForInstall.Result; } - _logger.Info("Database upgrade started"); + _logger.LogInformation("Database upgrade started"); // upgrade var upgrader = new Upgrader(plan); - upgrader.Execute(_scopeProvider, _migrationBuilder, _keyValueService, _logger); + upgrader.Execute(_scopeProvider, _migrationBuilder, _keyValueService, _loggerFactory.CreateLogger(), _loggerFactory); var message = "

Upgrade completed!

"; //now that everything is done, we need to determine the version of SQL server that is executing - _logger.Info("Database configuration status: {DbConfigStatus}", message); + _logger.LogInformation("Database configuration status: {DbConfigStatus}", message); return new Result { Message = message, Success = true, Percentage = "100" }; } @@ -448,11 +451,11 @@ namespace Umbraco.Core.Migrations.Install private Result HandleInstallException(Exception ex) { - _logger.Error(ex, "Database configuration failed"); + _logger.LogError(ex, "Database configuration failed"); if (_databaseSchemaValidationResult != null) { - _logger.Info("The database schema validation produced the following summary: {DbSchemaSummary}", _databaseSchemaValidationResult.GetSummary()); + _logger.LogInformation("The database schema validation produced the following summary: {DbSchemaSummary}", _databaseSchemaValidationResult.GetSummary()); } return new Result diff --git a/src/Umbraco.Infrastructure/Migrations/Install/DatabaseDataCreator.cs b/src/Umbraco.Infrastructure/Migrations/Install/DatabaseDataCreator.cs index 866f5230b0..1ade2f5153 100644 --- a/src/Umbraco.Infrastructure/Migrations/Install/DatabaseDataCreator.cs +++ b/src/Umbraco.Infrastructure/Migrations/Install/DatabaseDataCreator.cs @@ -1,8 +1,8 @@ using System; +using Microsoft.Extensions.Logging; using NPoco; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; -using Umbraco.Core.Logging; using Umbraco.Core.Migrations.Upgrade; using Umbraco.Core.Models; using Umbraco.Core.Persistence.Dtos; @@ -15,10 +15,10 @@ namespace Umbraco.Core.Migrations.Install internal class DatabaseDataCreator { private readonly IDatabase _database; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IUmbracoVersion _umbracoVersion; - public DatabaseDataCreator(IDatabase database, ILogger logger, IUmbracoVersion umbracoVersion) + public DatabaseDataCreator(IDatabase database, ILogger logger, IUmbracoVersion umbracoVersion) { _database = database; _logger = logger; @@ -32,7 +32,7 @@ namespace Umbraco.Core.Migrations.Install /// Name of the table to create base data for public void InitializeBaseData(string tableName) { - _logger.Info("Creating data in {TableName}", tableName); + _logger.LogInformation("Creating data in {TableName}", tableName); if (tableName.Equals(Constants.DatabaseSchema.Tables.Node)) CreateNodeData(); @@ -76,7 +76,7 @@ namespace Umbraco.Core.Migrations.Install if (tableName.Equals(Constants.DatabaseSchema.Tables.KeyValue)) CreateKeyValueData(); - _logger.Info("Done creating table {TableName} data.", tableName); + _logger.LogInformation("Done creating table {TableName} data.", tableName); } private void CreateNodeData() diff --git a/src/Umbraco.Infrastructure/Migrations/Install/DatabaseSchemaCreator.cs b/src/Umbraco.Infrastructure/Migrations/Install/DatabaseSchemaCreator.cs index bf30a520ca..5bca64e1e1 100644 --- a/src/Umbraco.Infrastructure/Migrations/Install/DatabaseSchemaCreator.cs +++ b/src/Umbraco.Infrastructure/Migrations/Install/DatabaseSchemaCreator.cs @@ -1,11 +1,11 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using NPoco; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Events; -using Umbraco.Core.Logging; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.DatabaseModelDefinitions; using Umbraco.Core.Persistence.Dtos; @@ -19,13 +19,15 @@ namespace Umbraco.Core.Migrations.Install public class DatabaseSchemaCreator { private readonly IUmbracoDatabase _database; - private readonly ILogger _logger; + private readonly ILogger _logger; + private readonly ILoggerFactory _loggerFactory; private readonly IUmbracoVersion _umbracoVersion; - public DatabaseSchemaCreator(IUmbracoDatabase database, ILogger logger, IUmbracoVersion umbracoVersion) + public DatabaseSchemaCreator(IUmbracoDatabase database, ILogger logger, ILoggerFactory loggerFactory, IUmbracoVersion umbracoVersion) { _database = database; _logger = logger; + _loggerFactory = loggerFactory; _umbracoVersion = umbracoVersion; } @@ -92,14 +94,14 @@ namespace Umbraco.Core.Migrations.Install ///
internal void UninstallDatabaseSchema() { - _logger.Info("Start UninstallDatabaseSchema"); + _logger.LogInformation("Start UninstallDatabaseSchema"); foreach (var table in OrderedTables.AsEnumerable().Reverse()) { var tableNameAttribute = table.FirstAttribute(); var tableName = tableNameAttribute == null ? table.Name : tableNameAttribute.Value; - _logger.Info("Uninstall {TableName}", tableName); + _logger.LogInformation("Uninstall {TableName}", tableName); try { @@ -110,7 +112,7 @@ namespace Umbraco.Core.Migrations.Install { //swallow this for now, not sure how best to handle this with diff databases... though this is internal // and only used for unit tests. If this fails its because the table doesn't exist... generally! - _logger.Error(ex, "Could not drop table {TableName}", tableName); + _logger.LogError(ex, "Could not drop table {TableName}", tableName); } } } @@ -129,7 +131,7 @@ namespace Umbraco.Core.Migrations.Install if (e.Cancel == false) { - var dataCreation = new DatabaseDataCreator(_database, _logger, _umbracoVersion); + var dataCreation = new DatabaseDataCreator(_database, _loggerFactory.CreateLogger(), _umbracoVersion); foreach (var table in OrderedTables) CreateTable(false, table, dataCreation); } @@ -399,7 +401,7 @@ namespace Umbraco.Core.Migrations.Install where T : new() { var tableType = typeof(T); - CreateTable(overwrite, tableType, new DatabaseDataCreator(_database, _logger, _umbracoVersion)); + CreateTable(overwrite, tableType, new DatabaseDataCreator(_database, _loggerFactory.CreateLogger(), _umbracoVersion)); } /// @@ -435,7 +437,7 @@ namespace Umbraco.Core.Migrations.Install var tableExist = TableExists(tableName); if (overwrite && tableExist) { - _logger.Info("Table {TableName} already exists, but will be recreated", tableName); + _logger.LogInformation("Table {TableName} already exists, but will be recreated", tableName); DropTable(tableName); tableExist = false; @@ -444,19 +446,19 @@ namespace Umbraco.Core.Migrations.Install if (tableExist) { // The table exists and was not recreated/overwritten. - _logger.Info("Table {TableName} already exists - no changes were made", tableName); + _logger.LogInformation("Table {TableName} already exists - no changes were made", tableName); return; } //Execute the Create Table sql var created = _database.Execute(new Sql(createSql)); - _logger.Info("Create Table {TableName} ({Created}): \n {Sql}", tableName, created, createSql); + _logger.LogInformation("Create Table {TableName} ({Created}): \n {Sql}", tableName, created, createSql); //If any statements exists for the primary key execute them here if (string.IsNullOrEmpty(createPrimaryKeySql) == false) { var createdPk = _database.Execute(new Sql(createPrimaryKeySql)); - _logger.Info("Create Primary Key ({CreatedPk}):\n {Sql}", createdPk, createPrimaryKeySql); + _logger.LogInformation("Create Primary Key ({CreatedPk}):\n {Sql}", createdPk, createPrimaryKeySql); } if (SqlSyntax.SupportsIdentityInsert() && tableDefinition.Columns.Any(x => x.IsIdentity)) @@ -474,23 +476,23 @@ namespace Umbraco.Core.Migrations.Install foreach (var sql in indexSql) { var createdIndex = _database.Execute(new Sql(sql)); - _logger.Info("Create Index ({CreatedIndex}):\n {Sql}", createdIndex, sql); + _logger.LogInformation("Create Index ({CreatedIndex}):\n {Sql}", createdIndex, sql); } //Loop through foreignkey statements and execute sql foreach (var sql in foreignSql) { var createdFk = _database.Execute(new Sql(sql)); - _logger.Info("Create Foreign Key ({CreatedFk}):\n {Sql}", createdFk, sql); + _logger.LogInformation("Create Foreign Key ({CreatedFk}):\n {Sql}", createdFk, sql); } if (overwrite) { - _logger.Info("Table {TableName} was recreated", tableName); + _logger.LogInformation("Table {TableName} was recreated", tableName); } else { - _logger.Info("New table {TableName} was created", tableName); + _logger.LogInformation("New table {TableName} was created", tableName); } } diff --git a/src/Umbraco.Infrastructure/Migrations/MigrationBase.cs b/src/Umbraco.Infrastructure/Migrations/MigrationBase.cs index 58edcae80a..b24313bebb 100644 --- a/src/Umbraco.Infrastructure/Migrations/MigrationBase.cs +++ b/src/Umbraco.Infrastructure/Migrations/MigrationBase.cs @@ -1,6 +1,6 @@ using System; using NPoco; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Core.Migrations.Expressions.Alter; using Umbraco.Core.Migrations.Expressions.Create; using Umbraco.Core.Migrations.Expressions.Delete; diff --git a/src/Umbraco.Infrastructure/Migrations/MigrationContext.cs b/src/Umbraco.Infrastructure/Migrations/MigrationContext.cs index 0bb2bc11ae..5c53c3cc46 100644 --- a/src/Umbraco.Infrastructure/Migrations/MigrationContext.cs +++ b/src/Umbraco.Infrastructure/Migrations/MigrationContext.cs @@ -1,6 +1,6 @@ using System; using System.Collections.Generic; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Core.Persistence; namespace Umbraco.Core.Migrations @@ -13,14 +13,14 @@ namespace Umbraco.Core.Migrations /// /// Initializes a new instance of the class. /// - public MigrationContext(IUmbracoDatabase database, ILogger logger) + public MigrationContext(IUmbracoDatabase database, ILogger logger) { Database = database ?? throw new ArgumentNullException(nameof(database)); Logger = logger ?? throw new ArgumentNullException(nameof(logger)); } /// - public ILogger Logger { get; } + public ILogger Logger { get; } /// public IUmbracoDatabase Database { get; } diff --git a/src/Umbraco.Infrastructure/Migrations/MigrationExpressionBase.cs b/src/Umbraco.Infrastructure/Migrations/MigrationExpressionBase.cs index be06a32ec7..56ba221205 100644 --- a/src/Umbraco.Infrastructure/Migrations/MigrationExpressionBase.cs +++ b/src/Umbraco.Infrastructure/Migrations/MigrationExpressionBase.cs @@ -2,8 +2,8 @@ using System.Collections.Generic; using System.IO; using System.Text; +using Microsoft.Extensions.Logging; using NPoco; -using Umbraco.Core.Logging; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.SqlSyntax; @@ -55,7 +55,7 @@ namespace Umbraco.Core.Migrations if (string.IsNullOrWhiteSpace(sql)) { - Logger.Info(GetType(), "SQL [{ContextIndex}]: ", Context.Index); + Logger.LogInformation("SQL [{ContextIndex}]: ", Context.Index); } else { @@ -96,11 +96,11 @@ namespace Umbraco.Core.Migrations if (sql == null) { - Logger.Info(GetType(), $"SQL [{Context.Index}]: "); + Logger.LogInformation($"SQL [{Context.Index}]: "); } else { - Logger.Info(GetType(), $"SQL [{Context.Index}]: {sql.ToText()}"); + Logger.LogInformation($"SQL [{Context.Index}]: {sql.ToText()}"); Database.Execute(sql); } @@ -116,7 +116,7 @@ namespace Umbraco.Core.Migrations private void ExecuteStatement(StringBuilder stmtBuilder) { var stmt = stmtBuilder.ToString(); - Logger.Info(GetType(), "SQL [{ContextIndex}]: {Sql}", Context.Index, stmt); + Logger.LogInformation("SQL [{ContextIndex}]: {Sql}", Context.Index, stmt); Database.Execute(stmt); stmtBuilder.Clear(); } diff --git a/src/Umbraco.Infrastructure/Migrations/MigrationPlan.cs b/src/Umbraco.Infrastructure/Migrations/MigrationPlan.cs index 89c3c809e8..67e5d0b41a 100644 --- a/src/Umbraco.Infrastructure/Migrations/MigrationPlan.cs +++ b/src/Umbraco.Infrastructure/Migrations/MigrationPlan.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Core.Scoping; using Type = System.Type; @@ -285,30 +285,31 @@ namespace Umbraco.Core.Migrations /// The state to start execution at. /// A migration builder. /// A logger. + /// /// The final state. /// The plan executes within the scope, which must then be completed. - public string Execute(IScope scope, string fromState, IMigrationBuilder migrationBuilder, ILogger logger) + public string Execute(IScope scope, string fromState, IMigrationBuilder migrationBuilder, ILogger logger, ILoggerFactory loggerFactory) { Validate(); if (migrationBuilder == null) throw new ArgumentNullException(nameof(migrationBuilder)); if (logger == null) throw new ArgumentNullException(nameof(logger)); - logger.Info("Starting '{MigrationName}'...", Name); + logger.LogInformation("Starting '{MigrationName}'...", Name); var origState = fromState ?? string.Empty; - logger.Info("At {OrigState}", string.IsNullOrWhiteSpace(origState) ? "origin": origState); + logger.LogInformation("At {OrigState}", string.IsNullOrWhiteSpace(origState) ? "origin": origState); if (!_transitions.TryGetValue(origState, out var transition)) ThrowOnUnknownInitialState(origState); - var context = new MigrationContext(scope.Database, logger); + var context = new MigrationContext(scope.Database, loggerFactory.CreateLogger()); context.PostMigrations.AddRange(_postMigrationTypes); while (transition != null) { - logger.Info("Execute {MigrationType}", transition.MigrationType.Name); + logger.LogInformation("Execute {MigrationType}", transition.MigrationType.Name); var migration = migrationBuilder.Build(transition.MigrationType, context); migration.Migrate(); @@ -316,7 +317,7 @@ namespace Umbraco.Core.Migrations var nextState = transition.TargetState; origState = nextState; - logger.Info("At {OrigState}", origState); + logger.LogInformation("At {OrigState}", origState); // throw a raw exception here: this should never happen as the plan has // been validated - this is just a paranoid safety test @@ -333,12 +334,12 @@ namespace Umbraco.Core.Migrations // run post-migrations foreach (var postMigrationType in postMigrationTypes) { - logger.Info($"PostMigration: {postMigrationType.FullName}."); + logger.LogInformation($"PostMigration: {postMigrationType.FullName}."); var postMigration = migrationBuilder.Build(postMigrationType, context); postMigration.Migrate(); } - logger.Info("Done (pending scope completion)."); + logger.LogInformation("Done (pending scope completion)."); // safety check - again, this should never happen as the plan has been validated, // and this is just a paranoid safety test diff --git a/src/Umbraco.Infrastructure/Migrations/Upgrade/Upgrader.cs b/src/Umbraco.Infrastructure/Migrations/Upgrade/Upgrader.cs index f6df52bc1e..9096a14146 100644 --- a/src/Umbraco.Infrastructure/Migrations/Upgrade/Upgrader.cs +++ b/src/Umbraco.Infrastructure/Migrations/Upgrade/Upgrader.cs @@ -1,5 +1,5 @@ using System; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Core.Scoping; using Umbraco.Core.Services; @@ -40,7 +40,8 @@ namespace Umbraco.Core.Migrations.Upgrade /// A migration builder. /// A key-value service. /// A logger. - public void Execute(IScopeProvider scopeProvider, IMigrationBuilder migrationBuilder, IKeyValueService keyValueService, ILogger logger) + /// A logger factory + public void Execute(IScopeProvider scopeProvider, IMigrationBuilder migrationBuilder, IKeyValueService keyValueService, ILogger logger, ILoggerFactory loggerFactory) { if (scopeProvider == null) throw new ArgumentNullException(nameof(scopeProvider)); if (migrationBuilder == null) throw new ArgumentNullException(nameof(migrationBuilder)); @@ -64,7 +65,7 @@ namespace Umbraco.Core.Migrations.Upgrade } // execute plan - var state = plan.Execute(scope, currentState, migrationBuilder, logger); + var state = plan.Execute(scope, currentState, migrationBuilder, loggerFactory.CreateLogger(), loggerFactory); if (string.IsNullOrWhiteSpace(state)) throw new Exception("Plan execution returned an invalid null or empty state."); @@ -83,13 +84,13 @@ namespace Umbraco.Core.Migrations.Upgrade /// /// Executes as part of the upgrade scope and before all migrations have executed. /// - public virtual void BeforeMigrations(IScope scope, ILogger logger) + public virtual void BeforeMigrations(IScope scope, ILogger logger) { } /// /// Executes as part of the upgrade scope and after all migrations have executed. /// - public virtual void AfterMigrations(IScope scope, ILogger logger) + public virtual void AfterMigrations(IScope scope, ILogger logger) { } } diff --git a/src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/DataTypeMigration.cs b/src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/DataTypeMigration.cs index 95b272dcb4..fcd3a98218 100644 --- a/src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/DataTypeMigration.cs +++ b/src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/DataTypeMigration.cs @@ -2,8 +2,8 @@ using System.Collections.Generic; using System.Linq; using Newtonsoft.Json; +using Microsoft.Extensions.Logging; using Umbraco.Core.Composing; -using Umbraco.Core.Logging; using Umbraco.Core.Migrations.Upgrade.V_8_0_0.DataTypes; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Dtos; @@ -17,7 +17,7 @@ namespace Umbraco.Core.Migrations.Upgrade.V_8_0_0 { private readonly PreValueMigratorCollection _preValueMigrators; private readonly PropertyEditorCollection _propertyEditors; - private readonly ILogger _logger; + private readonly ILogger _logger; private static readonly ISet LegacyAliases = new HashSet() { @@ -31,7 +31,7 @@ namespace Umbraco.Core.Migrations.Upgrade.V_8_0_0 Constants.PropertyEditors.Legacy.Aliases.MultiNodeTreePicker2, }; - public DataTypeMigration(IMigrationContext context, PreValueMigratorCollection preValueMigrators, PropertyEditorCollection propertyEditors, ILogger logger) + public DataTypeMigration(IMigrationContext context, PreValueMigratorCollection preValueMigrators, PropertyEditorCollection propertyEditors, ILogger logger) : base(context) { _preValueMigrators = preValueMigrators; @@ -94,7 +94,7 @@ namespace Umbraco.Core.Migrations.Upgrade.V_8_0_0 { if (!LegacyAliases.Contains(dataType.EditorAlias)) { - _logger.Warn( + _logger.LogWarning( "Skipping validation of configuration for data type {NodeId} : {EditorAlias}." + " Please ensure that the configuration is valid. The site may fail to start and / or load data types and run.", dataType.NodeId, dataType.EditorAlias); @@ -104,7 +104,7 @@ namespace Umbraco.Core.Migrations.Upgrade.V_8_0_0 { if (!LegacyAliases.Contains(newAlias)) { - _logger.Warn("Skipping validation of configuration for data type {NodeId} : {NewEditorAlias} (was: {EditorAlias})" + _logger.LogWarning("Skipping validation of configuration for data type {NodeId} : {NewEditorAlias} (was: {EditorAlias})" + " because no property editor with that alias was found." + " Please ensure that the configuration is valid. The site may fail to start and / or load data types and run.", dataType.NodeId, newAlias, dataType.EditorAlias); @@ -119,7 +119,7 @@ namespace Umbraco.Core.Migrations.Upgrade.V_8_0_0 } catch (Exception e) { - _logger.Warn(e, "Failed to validate configuration for data type {NodeId} : {NewEditorAlias} (was: {EditorAlias})." + _logger.LogWarning(e, "Failed to validate configuration for data type {NodeId} : {NewEditorAlias} (was: {EditorAlias})." + " Please fix the configuration and ensure it is valid. The site may fail to start and / or load data types and run.", dataType.NodeId, newAlias, dataType.EditorAlias); } diff --git a/src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/DataTypes/PreValueMigratorCollection.cs b/src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/DataTypes/PreValueMigratorCollection.cs index 06f5d45deb..fbe8e38688 100644 --- a/src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/DataTypes/PreValueMigratorCollection.cs +++ b/src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/DataTypes/PreValueMigratorCollection.cs @@ -1,25 +1,25 @@ using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core.Composing; -using Umbraco.Core.Logging; namespace Umbraco.Core.Migrations.Upgrade.V_8_0_0.DataTypes { public class PreValueMigratorCollection : BuilderCollectionBase { - private readonly ILogger _logger; + private readonly ILogger _logger; - public PreValueMigratorCollection(IEnumerable items, ILogger logger) + public PreValueMigratorCollection(IEnumerable items, ILogger logger) : base(items) { _logger = logger; - _logger.Debug(GetType(), "Migrators: " + string.Join(", ", items.Select(x => x.GetType().Name))); + _logger.LogDebug("Migrators: " + string.Join(", ", items.Select(x => x.GetType().Name))); } public IPreValueMigrator GetMigrator(string editorAlias) { var migrator = this.FirstOrDefault(x => x.CanMigrate(editorAlias)); - _logger.Debug(GetType(), "Getting migrator for \"{EditorAlias}\" = {MigratorType}", editorAlias, migrator == null ? "" : migrator.GetType().Name); + _logger.LogDebug("Getting migrator for \"{EditorAlias}\" = {MigratorType}", editorAlias, migrator == null ? "" : migrator.GetType().Name); return migrator; } } diff --git a/src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/DropDownPropertyEditorsMigration.cs b/src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/DropDownPropertyEditorsMigration.cs index 243446c5df..6b1d734bc8 100644 --- a/src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/DropDownPropertyEditorsMigration.cs +++ b/src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/DropDownPropertyEditorsMigration.cs @@ -1,11 +1,11 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core.IO; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Dtos; using Umbraco.Core.PropertyEditors; -using Umbraco.Core.Logging; using Umbraco.Core.Migrations.PostMigrations; using Umbraco.Core.Models; @@ -51,7 +51,7 @@ namespace Umbraco.Core.Migrations.Upgrade.V_8_0_0 } catch (Exception ex) { - Logger.Error( + Logger.LogError( ex, "Invalid configuration: \"{Configuration}\", cannot convert editor.", dataType.Configuration); diff --git a/src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/MergeDateAndDateTimePropertyEditor.cs b/src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/MergeDateAndDateTimePropertyEditor.cs index 4ab5d386b0..00092f3feb 100644 --- a/src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/MergeDateAndDateTimePropertyEditor.cs +++ b/src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/MergeDateAndDateTimePropertyEditor.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; +using Microsoft.Extensions.Logging; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Dtos; using Umbraco.Core.PropertyEditors; @@ -40,7 +40,7 @@ namespace Umbraco.Core.Migrations.Upgrade.V_8_0_0 } catch (Exception ex) { - Logger.Error( + Logger.LogError( ex, "Invalid property editor configuration detected: \"{Configuration}\", cannot convert editor, values will be cleared", dataType.Configuration); diff --git a/src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/PropertyEditorsMigrationBase.cs b/src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/PropertyEditorsMigrationBase.cs index 5ac92b7966..79bbcece0d 100644 --- a/src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/PropertyEditorsMigrationBase.cs +++ b/src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/PropertyEditorsMigrationBase.cs @@ -1,9 +1,9 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Newtonsoft.Json; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Dtos; using Umbraco.Core.PropertyEditors; @@ -78,7 +78,7 @@ namespace Umbraco.Core.Migrations.Upgrade.V_8_0_0 continue; } - Logger.Warn(GetType(), "Could not find PropertyData {PropertyDataId} value '{PropertyValue}' in the datatype configuration: {Values}.", + Logger.LogWarning("Could not find PropertyData {PropertyDataId} value '{PropertyValue}' in the datatype configuration: {Values}.", propData.Id, id, string.Join(", ", config.Items.Select(x => x.Id + ":" + x.Value))); canConvert = false; } diff --git a/src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/RadioAndCheckboxPropertyEditorsMigration.cs b/src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/RadioAndCheckboxPropertyEditorsMigration.cs index cdd330f190..20218dc2c6 100644 --- a/src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/RadioAndCheckboxPropertyEditorsMigration.cs +++ b/src/Umbraco.Infrastructure/Migrations/Upgrade/V_8_0_0/RadioAndCheckboxPropertyEditorsMigration.cs @@ -1,8 +1,8 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Migrations.PostMigrations; using Umbraco.Core.Models; using Umbraco.Core.Persistence; @@ -55,7 +55,7 @@ namespace Umbraco.Core.Migrations.Upgrade.V_8_0_0 } catch (Exception ex) { - Logger.Error( + Logger.LogError( ex, "Invalid configuration: \"{Configuration}\", cannot convert editor.", dataType.Configuration); diff --git a/src/Umbraco.Infrastructure/Models/Mapping/ContentTypeMapDefinition.cs b/src/Umbraco.Infrastructure/Models/Mapping/ContentTypeMapDefinition.cs index eb130ae13a..efe24a6efd 100644 --- a/src/Umbraco.Infrastructure/Models/Mapping/ContentTypeMapDefinition.cs +++ b/src/Umbraco.Infrastructure/Models/Mapping/ContentTypeMapDefinition.cs @@ -1,9 +1,9 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Configuration; -using Umbraco.Core.Logging; using Umbraco.Core.Mapping; using Umbraco.Core.Models; using Umbraco.Core.PropertyEditors; @@ -30,14 +30,15 @@ namespace Umbraco.Web.Models.Mapping private readonly IContentTypeService _contentTypeService; private readonly IMediaTypeService _mediaTypeService; private readonly IMemberTypeService _memberTypeService; - private readonly ILogger _logger; + private readonly ILoggerFactory _loggerFactory; + private readonly ILogger _logger; private readonly IShortStringHelper _shortStringHelper; private readonly GlobalSettings _globalSettings; private readonly IHostingEnvironment _hostingEnvironment; public ContentTypeMapDefinition(CommonMapper commonMapper, PropertyEditorCollection propertyEditors, IDataTypeService dataTypeService, IFileService fileService, IContentTypeService contentTypeService, IMediaTypeService mediaTypeService, IMemberTypeService memberTypeService, - ILogger logger, IShortStringHelper shortStringHelper, IOptions globalSettings, IHostingEnvironment hostingEnvironment) + ILoggerFactory loggerFactory, IShortStringHelper shortStringHelper, IOptions globalSettings, IHostingEnvironment hostingEnvironment) { _commonMapper = commonMapper; _propertyEditors = propertyEditors; @@ -46,7 +47,8 @@ namespace Umbraco.Web.Models.Mapping _contentTypeService = contentTypeService; _mediaTypeService = mediaTypeService; _memberTypeService = memberTypeService; - _logger = logger; + _loggerFactory = loggerFactory; + _logger = _loggerFactory.CreateLogger(); _shortStringHelper = shortStringHelper; _globalSettings = globalSettings.Value; _hostingEnvironment = hostingEnvironment; @@ -534,7 +536,7 @@ namespace Umbraco.Web.Models.Mapping { MapTypeToDisplayBase(source, target); - var groupsMapper = new PropertyTypeGroupMapper(_propertyEditors, _dataTypeService, _shortStringHelper, _logger); + var groupsMapper = new PropertyTypeGroupMapper(_propertyEditors, _dataTypeService, _shortStringHelper, _loggerFactory.CreateLogger>()); target.Groups = groupsMapper.Map(source); } diff --git a/src/Umbraco.Infrastructure/Models/Mapping/DataTypeMapDefinition.cs b/src/Umbraco.Infrastructure/Models/Mapping/DataTypeMapDefinition.cs index b55b18db46..0e403cd88b 100644 --- a/src/Umbraco.Infrastructure/Models/Mapping/DataTypeMapDefinition.cs +++ b/src/Umbraco.Infrastructure/Models/Mapping/DataTypeMapDefinition.cs @@ -2,9 +2,9 @@ using System.Collections.Generic; using System.Linq; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Configuration.Models; -using Umbraco.Core.Logging; using Umbraco.Core.Mapping; using Umbraco.Core.Models; using Umbraco.Core.PropertyEditors; @@ -15,10 +15,10 @@ namespace Umbraco.Web.Models.Mapping public class DataTypeMapDefinition : IMapDefinition { private readonly PropertyEditorCollection _propertyEditors; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly ContentSettings _contentSettings; - public DataTypeMapDefinition(PropertyEditorCollection propertyEditors, ILogger logger, IOptions contentSettings) + public DataTypeMapDefinition(PropertyEditorCollection propertyEditors, ILogger logger, IOptions contentSettings) { _propertyEditors = propertyEditors; _logger = logger; @@ -175,7 +175,7 @@ namespace Umbraco.Web.Models.Mapping else { // weird - just leave the field without a value - but warn - _logger.Warn("Could not find a value for configuration field '{ConfigField}'", field.Key); + _logger.LogWarning("Could not find a value for configuration field '{ConfigField}'", field.Key); } } } diff --git a/src/Umbraco.Infrastructure/Models/Mapping/MacroMapDefinition.cs b/src/Umbraco.Infrastructure/Models/Mapping/MacroMapDefinition.cs index d980958a91..9aef0e598c 100644 --- a/src/Umbraco.Infrastructure/Models/Mapping/MacroMapDefinition.cs +++ b/src/Umbraco.Infrastructure/Models/Mapping/MacroMapDefinition.cs @@ -1,8 +1,8 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core; -using Umbraco.Core.Logging; using Umbraco.Core.Mapping; using Umbraco.Core.Models; using Umbraco.Core.PropertyEditors; @@ -13,9 +13,9 @@ namespace Umbraco.Web.Models.Mapping public class MacroMapDefinition : IMapDefinition { private readonly ParameterEditorCollection _parameterEditors; - private readonly ILogger _logger; + private readonly ILogger _logger; - public MacroMapDefinition(ParameterEditorCollection parameterEditors, ILogger logger) + public MacroMapDefinition(ParameterEditorCollection parameterEditors, ILogger logger) { _parameterEditors = parameterEditors; _logger = logger; @@ -73,7 +73,7 @@ namespace Umbraco.Web.Models.Mapping { //we'll just map this to a text box paramEditor = _parameterEditors[Constants.PropertyEditors.Aliases.TextBox]; - _logger.Warn("Could not resolve a parameter editor with alias {PropertyEditorAlias}, a textbox will be rendered in it's place", source.EditorAlias); + _logger.LogWarning("Could not resolve a parameter editor with alias {PropertyEditorAlias}, a textbox will be rendered in it's place", source.EditorAlias); } target.View = paramEditor.GetValueEditor().View; diff --git a/src/Umbraco.Infrastructure/Models/Mapping/PropertyTypeGroupMapper.cs b/src/Umbraco.Infrastructure/Models/Mapping/PropertyTypeGroupMapper.cs index 32ea6fce3f..1bdac7618c 100644 --- a/src/Umbraco.Infrastructure/Models/Mapping/PropertyTypeGroupMapper.cs +++ b/src/Umbraco.Infrastructure/Models/Mapping/PropertyTypeGroupMapper.cs @@ -1,8 +1,8 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; @@ -17,9 +17,9 @@ namespace Umbraco.Web.Models.Mapping private readonly PropertyEditorCollection _propertyEditors; private readonly IDataTypeService _dataTypeService; private readonly IShortStringHelper _shortStringHelper; - private readonly ILogger _logger; + private readonly ILogger> _logger; - public PropertyTypeGroupMapper(PropertyEditorCollection propertyEditors, IDataTypeService dataTypeService, IShortStringHelper shortStringHelper, ILogger logger) + public PropertyTypeGroupMapper(PropertyEditorCollection propertyEditors, IDataTypeService dataTypeService, IShortStringHelper shortStringHelper, ILogger> logger) { _propertyEditors = propertyEditors; _dataTypeService = dataTypeService; @@ -210,8 +210,7 @@ namespace Umbraco.Web.Models.Mapping //fixme: Don't explode if we can't find this, log an error and change this to a label if (propertyEditor == null) { - _logger.Error(GetType(), - "No property editor could be resolved with the alias: {PropertyEditorAlias}, defaulting to label", p.PropertyEditorAlias); + _logger.LogError("No property editor could be resolved with the alias: {PropertyEditorAlias}, defaulting to label", p.PropertyEditorAlias); propertyEditorAlias = Constants.PropertyEditors.Aliases.Label; propertyEditor = _propertyEditors[propertyEditorAlias]; } diff --git a/src/Umbraco.Infrastructure/Models/PathValidationExtensions.cs b/src/Umbraco.Infrastructure/Models/PathValidationExtensions.cs index 2db954b316..f6ed96fb99 100644 --- a/src/Umbraco.Infrastructure/Models/PathValidationExtensions.cs +++ b/src/Umbraco.Infrastructure/Models/PathValidationExtensions.cs @@ -1,6 +1,6 @@ using System; using System.IO; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Core.Models.Entities; using Umbraco.Core.Persistence.Dtos; @@ -78,7 +78,7 @@ namespace Umbraco.Core.Models /// A callback specified to retrieve the parent entity of the entity /// A callback specified to update a fixed entity public static void EnsureValidPath(this T entity, - ILogger logger, + ILogger logger, Func getParent, Action update) where T: IUmbracoEntity @@ -88,7 +88,7 @@ namespace Umbraco.Core.Models if (entity.ValidatePath() == false) { - logger.Warn(typeof(PathValidationExtensions), "The content item {EntityId} has an invalid path: {EntityPath} with parentID: {EntityParentId}", entity.Id, entity.Path, entity.ParentId); + logger.LogWarning("The content item {EntityId} has an invalid path: {EntityPath} with parentID: {EntityParentId}", entity.Id, entity.Path, entity.ParentId); if (entity.ParentId == -1) { entity.Path = string.Concat("-1,", entity.Id); diff --git a/src/Umbraco.Infrastructure/Models/PropertyTagsExtensions.cs b/src/Umbraco.Infrastructure/Models/PropertyTagsExtensions.cs index b9e471d961..bea07879fb 100644 --- a/src/Umbraco.Infrastructure/Models/PropertyTagsExtensions.cs +++ b/src/Umbraco.Infrastructure/Models/PropertyTagsExtensions.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Umbraco.Composing; @@ -218,7 +219,7 @@ namespace Umbraco.Core.Models } catch (Exception ex) { - Current.Logger.Warn(typeof(PropertyTagsExtensions), ex, "Could not automatically convert stored json value to an enumerable string '{Json}'", value.ToString()); + Current.Logger.LogWarning(ex, "Could not automatically convert stored json value to an enumerable string '{Json}'", value.ToString()); } break; diff --git a/src/Umbraco.Infrastructure/Packaging/PackageDataInstallation.cs b/src/Umbraco.Infrastructure/Packaging/PackageDataInstallation.cs index 79f830bc51..16f4a8bc25 100644 --- a/src/Umbraco.Infrastructure/Packaging/PackageDataInstallation.cs +++ b/src/Umbraco.Infrastructure/Packaging/PackageDataInstallation.cs @@ -5,11 +5,11 @@ using System.Linq; using System.Net; using System.Xml.Linq; using System.Xml.XPath; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Umbraco.Core.Collections; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; using Umbraco.Core.Models.Packaging; @@ -23,7 +23,8 @@ namespace Umbraco.Core.Packaging { public class PackageDataInstallation { - private readonly ILogger _logger; + private readonly ILogger _logger; + private readonly ILoggerFactory _loggerFactory; private readonly IFileService _fileService; private readonly IMacroService _macroService; private readonly ILocalizationService _localizationService; @@ -37,12 +38,13 @@ namespace Umbraco.Core.Packaging private readonly IContentTypeService _contentTypeService; private readonly IContentService _contentService; - public PackageDataInstallation(ILogger logger, IFileService fileService, IMacroService macroService, ILocalizationService localizationService, + public PackageDataInstallation(ILogger logger, ILoggerFactory loggerFactory, IFileService fileService, IMacroService macroService, ILocalizationService localizationService, IDataTypeService dataTypeService, IEntityService entityService, IContentTypeService contentTypeService, IContentService contentService, PropertyEditorCollection propertyEditors, IScopeProvider scopeProvider, IShortStringHelper shortStringHelper, IOptions globalSettings, ILocalizedTextService localizedTextService) { _logger = logger; + _loggerFactory = loggerFactory; _fileService = fileService; _macroService = macroService; _localizationService = localizationService; @@ -541,7 +543,7 @@ namespace Umbraco.Core.Packaging var tryCreateFolder = _contentTypeService.CreateContainer(-1, rootFolder); if (tryCreateFolder == false) { - _logger.Error(tryCreateFolder.Exception, "Could not create folder: {FolderName}", rootFolder); + _logger.LogError(tryCreateFolder.Exception, "Could not create folder: {FolderName}", rootFolder); throw tryCreateFolder.Exception; } var rootFolderId = tryCreateFolder.Result.Entity.Id; @@ -575,7 +577,7 @@ namespace Umbraco.Core.Packaging var tryCreateFolder = _contentTypeService.CreateContainer(current.Id, folderName); if (tryCreateFolder == false) { - _logger.Error(tryCreateFolder.Exception, "Could not create folder: {FolderName}", folderName); + _logger.LogError(tryCreateFolder.Exception, "Could not create folder: {FolderName}", folderName); throw tryCreateFolder.Exception; } return _contentTypeService.GetContainer(tryCreateFolder.Result.Entity.Id); @@ -688,7 +690,7 @@ namespace Umbraco.Core.Packaging } else { - _logger.Warn("Packager: Error handling allowed templates. Template with alias '{TemplateAlias}' could not be found.", alias); + _logger.LogWarning("Packager: Error handling allowed templates. Template with alias '{TemplateAlias}' could not be found.", alias); } } @@ -704,7 +706,7 @@ namespace Umbraco.Core.Packaging } else { - _logger.Warn("Packager: Error handling default template. Default template with alias '{DefaultTemplateAlias}' could not be found.", defaultTemplateElement.Value); + _logger.LogWarning("Packager: Error handling default template. Default template with alias '{DefaultTemplateAlias}' could not be found.", defaultTemplateElement.Value); } } } @@ -776,7 +778,7 @@ namespace Umbraco.Core.Packaging if (dataTypeDefinition == null) { // TODO: We should expose this to the UI during install! - _logger.Warn("Packager: Error handling creation of PropertyType '{PropertyType}'. Could not find DataTypeDefintion with unique id '{DataTypeDefinitionId}' nor one referencing the DataType with a property editor alias (or legacy control id) '{PropertyEditorAlias}'. Did the package creator forget to package up custom datatypes? This property will be converted to a label/readonly editor if one exists.", + _logger.LogWarning("Packager: Error handling creation of PropertyType '{PropertyType}'. Could not find DataTypeDefintion with unique id '{DataTypeDefinitionId}' nor one referencing the DataType with a property editor alias (or legacy control id) '{PropertyEditorAlias}'. Did the package creator forget to package up custom datatypes? This property will be converted to a label/readonly editor if one exists.", property.Element("Name").Value, dataTypeDefinitionId, property.Element("Type").Value.Trim()); //convert to a label! @@ -833,7 +835,7 @@ namespace Umbraco.Core.Packaging var allowedChild = importedContentTypes.ContainsKey(alias) ? importedContentTypes[alias] : _contentTypeService.Get(alias); if (allowedChild == null) { - _logger.Warn( + _logger.LogWarning( "Packager: Error handling DocumentType structure. DocumentType with alias '{DoctypeAlias}' could not be found and was not added to the structure for '{DoctypeStructureAlias}'.", alias, contentType.Alias); continue; @@ -904,7 +906,7 @@ namespace Umbraco.Core.Packaging var editorAlias = dataTypeElement.Attribute("Id")?.Value?.Trim(); if (!_propertyEditors.TryGet(editorAlias, out var editor)) - editor = new VoidEditor(_logger, _dataTypeService, _localizationService, _localizedTextService, _shortStringHelper) { Alias = editorAlias }; + editor = new VoidEditor(_loggerFactory, _dataTypeService, _localizationService, _localizedTextService, _shortStringHelper) { Alias = editorAlias }; var dataType = new DataType(editor) { @@ -954,7 +956,7 @@ namespace Umbraco.Core.Packaging var tryCreateFolder = _dataTypeService.CreateContainer(-1, rootFolder); if (tryCreateFolder == false) { - _logger.Error(tryCreateFolder.Exception, "Could not create folder: {FolderName}", rootFolder); + _logger.LogError(tryCreateFolder.Exception, "Could not create folder: {FolderName}", rootFolder); throw tryCreateFolder.Exception; } current = _dataTypeService.GetContainer(tryCreateFolder.Result.Entity.Id); @@ -987,7 +989,7 @@ namespace Umbraco.Core.Packaging var tryCreateFolder = _dataTypeService.CreateContainer(current.Id, folderName); if (tryCreateFolder == false) { - _logger.Error(tryCreateFolder.Exception, "Could not create folder: {FolderName}", folderName); + _logger.LogError(tryCreateFolder.Exception, "Could not create folder: {FolderName}", folderName); throw tryCreateFolder.Exception; } return _dataTypeService.GetContainer(tryCreateFolder.Result.Entity.Id); @@ -1291,7 +1293,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/Persistence/DbConnectionExtensions.cs b/src/Umbraco.Infrastructure/Persistence/DbConnectionExtensions.cs index b79b1160b1..e00288d94c 100644 --- a/src/Umbraco.Infrastructure/Persistence/DbConnectionExtensions.cs +++ b/src/Umbraco.Infrastructure/Persistence/DbConnectionExtensions.cs @@ -3,9 +3,9 @@ using System.Data; using System.Data.Common; using System.Data.SqlClient; using System.Linq; +using Microsoft.Extensions.Logging; using StackExchange.Profiling.Data; using Umbraco.Composing; -using Umbraco.Core.Logging; using Umbraco.Core.Persistence.FaultHandling; namespace Umbraco.Core.Persistence @@ -53,7 +53,7 @@ namespace Umbraco.Core.Persistence catch (DbException e) { // Don't swallow this error, the exception is super handy for knowing "why" its not available - Current.Logger.Warn(e, "Configured database is reporting as not being available."); + Current.Logger.LogWarning(e, "Configured database is reporting as not being available."); return false; } diff --git a/src/Umbraco.Infrastructure/Persistence/Factories/DataTypeFactory.cs b/src/Umbraco.Infrastructure/Persistence/Factories/DataTypeFactory.cs index fa991d6679..77d8199775 100644 --- a/src/Umbraco.Infrastructure/Persistence/Factories/DataTypeFactory.cs +++ b/src/Umbraco.Infrastructure/Persistence/Factories/DataTypeFactory.cs @@ -1,5 +1,5 @@ using System; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence.Dtos; using Umbraco.Core.PropertyEditors; @@ -8,13 +8,13 @@ namespace Umbraco.Core.Persistence.Factories { internal static class DataTypeFactory { - public static IDataType BuildEntity(DataTypeDto dto, PropertyEditorCollection editors, ILogger logger) + public static IDataType BuildEntity(DataTypeDto dto, PropertyEditorCollection editors, ILogger logger) { // Check we have an editor for the data type. if (!editors.TryGet(dto.EditorAlias, out var editor)) { - logger.Warn(typeof(DataType), "Could not find an editor with alias {EditorAlias}, treating as Label. " + - "The site may fail to boot and/or load data types and run.", dto.EditorAlias); + logger.LogWarning("Could not find an editor with alias {EditorAlias}, treating as Label. " + + "The site may fail to boot and/or load data types and run.", dto.EditorAlias); // Create as special type, which downstream can be handled by converting to a LabelPropertyEditor to make clear // the situation to the user. diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/AuditEntryRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/AuditEntryRepository.cs index c3d34cc3e9..4031047970 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/AuditEntryRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/AuditEntryRepository.cs @@ -1,9 +1,9 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using NPoco; using Umbraco.Core.Cache; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; using Umbraco.Core.Persistence.Dtos; @@ -21,7 +21,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement /// /// Initializes a new instance of the class. /// - public AuditEntryRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) + public AuditEntryRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) : base(scopeAccessor, cache, logger) { } diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/AuditRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/AuditRepository.cs index 4cb533e86f..a42019e59f 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/AuditRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/AuditRepository.cs @@ -2,8 +2,8 @@ using System.Collections.Generic; using System.Linq; using NPoco; +using Microsoft.Extensions.Logging; using Umbraco.Core.Cache; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence.DatabaseModelDefinitions; using Umbraco.Core.Persistence.Dtos; @@ -14,7 +14,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement { internal class AuditRepository : NPocoRepositoryBase, IAuditRepository { - public AuditRepository(IScopeAccessor scopeAccessor, ILogger logger) + public AuditRepository(IScopeAccessor scopeAccessor, ILogger logger) : base(scopeAccessor, AppCaches.NoCache, logger) { } diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/ConsentRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/ConsentRepository.cs index 57d5dfa864..47ebddf698 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/ConsentRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/ConsentRepository.cs @@ -1,8 +1,8 @@ using System; using System.Collections.Generic; +using Microsoft.Extensions.Logging; using NPoco; using Umbraco.Core.Cache; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; using Umbraco.Core.Persistence.Querying; @@ -20,7 +20,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement /// /// Initializes a new instance of the class. /// - public ConsentRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) + public ConsentRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) : base(scopeAccessor, cache, logger) { } diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/ContentRepositoryBase.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/ContentRepositoryBase.cs index 6c216e938f..b8edbd051a 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/ContentRepositoryBase.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/ContentRepositoryBase.cs @@ -2,12 +2,12 @@ using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; +using Microsoft.Extensions.Logging; using Newtonsoft.Json; using NPoco; using Umbraco.Core.Cache; using Umbraco.Core.Composing; using Umbraco.Core.Events; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Editors; using Umbraco.Core.Models.Entities; @@ -49,8 +49,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement /// protected ContentRepositoryBase( IScopeAccessor scopeAccessor, - AppCaches cache - , ILogger logger, + AppCaches cache, + ILogger> logger, ILanguageRepository languageRepository, IRelationRepository relationRepository, IRelationTypeRepository relationTypeRepository, @@ -709,7 +709,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement { if (ContentRepositoryBase.ThrowOnWarning) throw new InvalidOperationException($"The query returned multiple property sets for content {temp.Id}, {temp.ContentType.Name}"); - Logger.Warn>("The query returned multiple property sets for content {ContentId}, {ContentTypeName}", temp.Id, temp.ContentType.Name); + Logger.LogWarning("The query returned multiple property sets for content {ContentId}, {ContentTypeName}", temp.Id, temp.ContentType.Name); } result[temp.VersionId] = new PropertyCollection(properties); diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/ContentTypeRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/ContentTypeRepository.cs index af0f58eb0e..d5243f5019 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/ContentTypeRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/ContentTypeRepository.cs @@ -1,10 +1,10 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using NPoco; using Umbraco.Core.Cache; using Umbraco.Core.Exceptions; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; using Umbraco.Core.Persistence.Dtos; @@ -20,7 +20,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement /// internal class ContentTypeRepository : ContentTypeRepositoryBase, IContentTypeRepository { - public ContentTypeRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger, IContentTypeCommonRepository commonRepository, ILanguageRepository languageRepository, IShortStringHelper shortStringHelper) + public ContentTypeRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger, IContentTypeCommonRepository commonRepository, ILanguageRepository languageRepository, IShortStringHelper shortStringHelper) : base(scopeAccessor, cache, logger, commonRepository, languageRepository, shortStringHelper) { } @@ -226,7 +226,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement if (string.IsNullOrWhiteSpace(entity.Alias)) { var ex = new Exception($"ContentType '{entity.Name}' cannot have an empty Alias. This is most likely due to invalid characters stripped from the Alias."); - Logger.Error("ContentType '{EntityName}' cannot have an empty Alias. This is most likely due to invalid characters stripped from the Alias.", entity.Name); + Logger.LogError("ContentType '{EntityName}' cannot have an empty Alias. This is most likely due to invalid characters stripped from the Alias.", entity.Name); throw ex; } diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/ContentTypeRepositoryBase.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/ContentTypeRepositoryBase.cs index 5bfbd86486..26596410bf 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/ContentTypeRepositoryBase.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/ContentTypeRepositoryBase.cs @@ -3,12 +3,12 @@ using System.Collections.Generic; using System.Data; using System.Globalization; using System.Linq; +using Microsoft.Extensions.Logging; using System.Threading.Tasks; using NPoco; using Umbraco.Core.Cache; using Umbraco.Core.Events; using Umbraco.Core.Exceptions; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence.Dtos; using Umbraco.Core.Persistence.Factories; @@ -29,7 +29,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement { private readonly IShortStringHelper _shortStringHelper; - protected ContentTypeRepositoryBase(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger, IContentTypeCommonRepository commonRepository, ILanguageRepository languageRepository, IShortStringHelper shortStringHelper) + protected ContentTypeRepositoryBase(IScopeAccessor scopeAccessor, AppCaches cache, ILogger> logger, IContentTypeCommonRepository commonRepository, ILanguageRepository languageRepository, IShortStringHelper shortStringHelper) : base(scopeAccessor, cache, logger) { _shortStringHelper = shortStringHelper; @@ -1216,7 +1216,7 @@ AND umbracoNode.id <> @id", { var ex = new InvalidOperationException($"Property Type '{pt.Name}' cannot have an empty Alias. This is most likely due to invalid characters stripped from the Alias."); - Logger.Error>("Property Type '{PropertyTypeName}' cannot have an empty Alias. This is most likely due to invalid characters stripped from the Alias.", + Logger.LogError("Property Type '{PropertyTypeName}' cannot have an empty Alias. This is most likely due to invalid characters stripped from the Alias.", pt.Name); throw ex; @@ -1229,7 +1229,7 @@ AND umbracoNode.id <> @id", { var ex = new InvalidOperationException($"{typeof(TEntity).Name} '{entity.Name}' cannot have an empty Alias. This is most likely due to invalid characters stripped from the Alias."); - Logger.Error>("{EntityTypeName} '{EntityName}' cannot have an empty Alias. This is most likely due to invalid characters stripped from the Alias.", + Logger.LogError("{EntityTypeName} '{EntityName}' cannot have an empty Alias. This is most likely due to invalid characters stripped from the Alias.", typeof(TEntity).Name, entity.Name); @@ -1261,7 +1261,7 @@ AND umbracoNode.id <> @id", } else { - Logger.Warn>("Could not assign a data type for the property type {PropertyTypeAlias} since no data type was found with a property editor {PropertyEditorAlias}", propertyType.Alias, propertyType.PropertyEditorAlias); + Logger.LogWarning("Could not assign a data type for the property type {PropertyTypeAlias} since no data type was found with a property editor {PropertyEditorAlias}", propertyType.Alias, propertyType.PropertyEditorAlias); } } } diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DataTypeContainerRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DataTypeContainerRepository.cs index f36b60484a..7ac72b0cb3 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DataTypeContainerRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DataTypeContainerRepository.cs @@ -1,12 +1,12 @@ -using Umbraco.Core.Cache; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; +using Umbraco.Core.Cache; using Umbraco.Core.Scoping; namespace Umbraco.Core.Persistence.Repositories.Implement { internal class DataTypeContainerRepository : EntityContainerRepository, IDataTypeContainerRepository { - public DataTypeContainerRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) + public DataTypeContainerRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) : base(scopeAccessor, cache, logger, Constants.ObjectTypes.DataTypeContainer) { } } diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DataTypeRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DataTypeRepository.cs index 42a89384d7..853e0da181 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DataTypeRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DataTypeRepository.cs @@ -3,11 +3,11 @@ using System.Collections.Generic; using System.Data; using System.Globalization; using System.Linq; +using Microsoft.Extensions.Logging; using NPoco; using Umbraco.Core.Cache; using Umbraco.Core.Events; using Umbraco.Core.Exceptions; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; using Umbraco.Core.Persistence.Dtos; @@ -26,11 +26,13 @@ namespace Umbraco.Core.Persistence.Repositories.Implement internal class DataTypeRepository : NPocoRepositoryBase, IDataTypeRepository { private readonly Lazy _editors; + private readonly ILogger _dataTypeLogger; - public DataTypeRepository(IScopeAccessor scopeAccessor, AppCaches cache, Lazy editors, ILogger logger) + public DataTypeRepository(IScopeAccessor scopeAccessor, AppCaches cache, Lazy editors, ILogger logger, ILoggerFactory loggerFactory) : base(scopeAccessor, cache, logger) { _editors = editors; + _dataTypeLogger = loggerFactory.CreateLogger(); } #region Overrides of RepositoryBase @@ -54,7 +56,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement } var dtos = Database.Fetch(dataTypeSql); - return dtos.Select(x => DataTypeFactory.BuildEntity(x, _editors.Value, Logger)).ToArray(); + return dtos.Select(x => DataTypeFactory.BuildEntity(x, _editors.Value, _dataTypeLogger)).ToArray(); } protected override IEnumerable PerformGetByQuery(IQuery query) @@ -65,7 +67,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement var dtos = Database.Fetch(sql); - return dtos.Select(x => DataTypeFactory.BuildEntity(x, _editors.Value, Logger)).ToArray(); + return dtos.Select(x => DataTypeFactory.BuildEntity(x, _editors.Value, _dataTypeLogger)).ToArray(); } #endregion diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DictionaryRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DictionaryRepository.cs index 0b58663952..0c58d26a2a 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DictionaryRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DictionaryRepository.cs @@ -1,9 +1,9 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using NPoco; using Umbraco.Core.Cache; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; using Umbraco.Core.Persistence.Dtos; @@ -18,9 +18,13 @@ namespace Umbraco.Core.Persistence.Repositories.Implement /// internal class DictionaryRepository : NPocoRepositoryBase, IDictionaryRepository { - public DictionaryRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) + private readonly ILoggerFactory _loggerFactory; + + public DictionaryRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger, ILoggerFactory loggerFactory) : base(scopeAccessor, cache, logger) - { } + { + _loggerFactory = loggerFactory; + } protected override IRepositoryCachePolicy CreateCachePolicy() { @@ -130,7 +134,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement foreach (var translation in dictionaryItem.Translations) translation.Value = translation.Value.ToValidXmlString(); - + var dto = DictionaryItemFactory.BuildDto(dictionaryItem); var id = Convert.ToInt32(Database.Insert(dto)); @@ -152,7 +156,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement foreach (var translation in entity.Translations) translation.Value = translation.Value.ToValidXmlString(); - + var dto = DictionaryItemFactory.BuildDto(entity); Database.Update(dto); @@ -224,13 +228,13 @@ namespace Umbraco.Core.Persistence.Repositories.Implement public IDictionaryItem Get(Guid uniqueId) { - var uniqueIdRepo = new DictionaryByUniqueIdRepository(this, ScopeAccessor, AppCaches, Logger); + var uniqueIdRepo = new DictionaryByUniqueIdRepository(this, ScopeAccessor, AppCaches, _loggerFactory.CreateLogger()); return uniqueIdRepo.Get(uniqueId); } public IDictionaryItem Get(string key) { - var keyRepo = new DictionaryByKeyRepository(this, ScopeAccessor, AppCaches, Logger); + var keyRepo = new DictionaryByKeyRepository(this, ScopeAccessor, AppCaches, _loggerFactory.CreateLogger()); return keyRepo.Get(key); } @@ -290,7 +294,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement { private readonly DictionaryRepository _dictionaryRepository; - public DictionaryByUniqueIdRepository(DictionaryRepository dictionaryRepository, IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) + public DictionaryByUniqueIdRepository(DictionaryRepository dictionaryRepository, IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) : base(scopeAccessor, cache, logger) { _dictionaryRepository = dictionaryRepository; @@ -343,7 +347,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement { private readonly DictionaryRepository _dictionaryRepository; - public DictionaryByKeyRepository(DictionaryRepository dictionaryRepository, IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) + public DictionaryByKeyRepository(DictionaryRepository dictionaryRepository, IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) : base(scopeAccessor, cache, logger) { _dictionaryRepository = dictionaryRepository; diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DocumentBlueprintRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DocumentBlueprintRepository.cs index 7e3592ac09..32553a8fd4 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DocumentBlueprintRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DocumentBlueprintRepository.cs @@ -1,7 +1,7 @@ using System; +using Microsoft.Extensions.Logging; using Umbraco.Core.Cache; using Umbraco.Core.Configuration.UmbracoSettings; -using Umbraco.Core.Logging; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Scoping; using Umbraco.Core.Services; @@ -22,7 +22,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement public DocumentBlueprintRepository( IScopeAccessor scopeAccessor, AppCaches appCaches, - ILogger logger, + ILogger logger, + ILoggerFactory loggerFactory, IContentTypeRepository contentTypeRepository, ITemplateRepository templateRepository, ITagRepository tagRepository, @@ -32,7 +33,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement Lazy propertyEditorCollection, IDataTypeService dataTypeService, DataValueReferenceFactoryCollection dataValueReferenceFactories) - : base(scopeAccessor, appCaches, logger, contentTypeRepository, templateRepository, tagRepository, languageRepository, relationRepository, relationTypeRepository, propertyEditorCollection, dataValueReferenceFactories, dataTypeService) + : base(scopeAccessor, appCaches, logger, loggerFactory, contentTypeRepository, templateRepository, tagRepository, languageRepository, relationRepository, relationTypeRepository, propertyEditorCollection, dataValueReferenceFactories, dataTypeService) { } diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DocumentRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DocumentRepository.cs index 97d3dbcd50..27606fa5dd 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DocumentRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DocumentRepository.cs @@ -1,9 +1,9 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using NPoco; using Umbraco.Core.Cache; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; using Umbraco.Core.Models.Membership; @@ -26,6 +26,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement private readonly ITemplateRepository _templateRepository; private readonly ITagRepository _tagRepository; private readonly AppCaches _appCaches; + private readonly ILoggerFactory _loggerFactory; private PermissionRepository _permissionRepository; private readonly ContentByGuidReadRepository _contentByGuidReadRepository; private readonly IScopeAccessor _scopeAccessor; @@ -36,6 +37,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement /// /// /// + /// /// /// /// @@ -46,7 +48,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement public DocumentRepository( IScopeAccessor scopeAccessor, AppCaches appCaches, - ILogger logger, + ILogger logger, + ILoggerFactory loggerFactory, IContentTypeRepository contentTypeRepository, ITemplateRepository templateRepository, ITagRepository tagRepository, @@ -62,8 +65,9 @@ namespace Umbraco.Core.Persistence.Repositories.Implement _templateRepository = templateRepository ?? throw new ArgumentNullException(nameof(templateRepository)); _tagRepository = tagRepository ?? throw new ArgumentNullException(nameof(tagRepository)); _appCaches = appCaches; + _loggerFactory = loggerFactory; _scopeAccessor = scopeAccessor; - _contentByGuidReadRepository = new ContentByGuidReadRepository(this, scopeAccessor, appCaches, logger); + _contentByGuidReadRepository = new ContentByGuidReadRepository(this, scopeAccessor, appCaches, loggerFactory.CreateLogger()); } protected override DocumentRepository This => this; @@ -75,7 +79,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement // note: is ok to 'new' the repo here as it's a sub-repo really private PermissionRepository PermissionRepository => _permissionRepository - ?? (_permissionRepository = new PermissionRepository(_scopeAccessor, _appCaches, Logger)); + ?? (_permissionRepository = new PermissionRepository(_scopeAccessor, _appCaches, _loggerFactory.CreateLogger>())); #region Repository Base @@ -953,7 +957,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement { private readonly DocumentRepository _outerRepo; - public ContentByGuidReadRepository(DocumentRepository outerRepo, IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) + public ContentByGuidReadRepository(DocumentRepository outerRepo, IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) : base(scopeAccessor, cache, logger) { _outerRepo = outerRepo; diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DocumentTypeContainerRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DocumentTypeContainerRepository.cs index 4b5fe8817b..a79247d17d 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DocumentTypeContainerRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DocumentTypeContainerRepository.cs @@ -1,12 +1,12 @@ -using Umbraco.Core.Cache; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; +using Umbraco.Core.Cache; using Umbraco.Core.Scoping; namespace Umbraco.Core.Persistence.Repositories.Implement { internal class DocumentTypeContainerRepository : EntityContainerRepository, IDocumentTypeContainerRepository { - public DocumentTypeContainerRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) + public DocumentTypeContainerRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) : base(scopeAccessor, cache, logger, Constants.ObjectTypes.DocumentTypeContainer) { } } diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DomainRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DomainRepository.cs index 9aa28fb18a..f0315f747c 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DomainRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DomainRepository.cs @@ -2,9 +2,9 @@ using System.Collections.Generic; using System.Data; using System.Linq; +using Microsoft.Extensions.Logging; using NPoco; using Umbraco.Core.Cache; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; using Umbraco.Core.Persistence.Dtos; @@ -17,7 +17,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement internal class DomainRepository : NPocoRepositoryBase, IDomainRepository { - public DomainRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) + public DomainRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) : base(scopeAccessor, cache, logger) { } diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/EntityContainerRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/EntityContainerRepository.cs index 505cbfc816..36213b089f 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/EntityContainerRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/EntityContainerRepository.cs @@ -1,9 +1,9 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using NPoco; using Umbraco.Core.Cache; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence.Dtos; using Umbraco.Core.Persistence.Querying; @@ -18,7 +18,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement { private readonly Guid _containerObjectType; - public EntityContainerRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger, Guid containerObjectType) + public EntityContainerRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger, Guid containerObjectType) : base(scopeAccessor, cache, logger) { var allowedContainers = new[] { Constants.ObjectTypes.DocumentTypeContainer, Constants.ObjectTypes.MediaTypeContainer, Constants.ObjectTypes.DataTypeContainer }; diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/ExternalLoginRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/ExternalLoginRepository.cs index 6d6a654d4e..b984085bdb 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/ExternalLoginRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/ExternalLoginRepository.cs @@ -1,9 +1,9 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using NPoco; using Umbraco.Core.Cache; -using Umbraco.Core.Logging; using Umbraco.Core.Models.Entities; using Umbraco.Core.Models.Identity; using Umbraco.Core.Persistence.Dtos; @@ -15,7 +15,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement { internal class ExternalLoginRepository : NPocoRepositoryBase, IExternalLoginRepository { - public ExternalLoginRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) + public ExternalLoginRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) : base(scopeAccessor, cache, logger) { } diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/KeyValueRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/KeyValueRepository.cs index 3c2da4d5b7..eb55b476c7 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/KeyValueRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/KeyValueRepository.cs @@ -1,9 +1,9 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using NPoco; using Umbraco.Core.Cache; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Dtos; @@ -14,7 +14,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement { internal class KeyValueRepository : NPocoRepositoryBase, IKeyValueRepository { - public KeyValueRepository(IScopeAccessor scopeAccessor, ILogger logger) + public KeyValueRepository(IScopeAccessor scopeAccessor, ILogger logger) : base(scopeAccessor, AppCaches.NoCache, logger) { } @@ -111,8 +111,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement Value = dto.Value, UpdateDate = dto.UpdateDate, }; - } + } - #endregion + #endregion } } diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/LanguageRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/LanguageRepository.cs index 80a83ce909..fd791fe01f 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/LanguageRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/LanguageRepository.cs @@ -1,12 +1,12 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using NPoco; using Umbraco.Core.Cache; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; using Umbraco.Core.Persistence.Dtos; @@ -25,7 +25,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement private readonly Dictionary _codeIdMap = new Dictionary(StringComparer.OrdinalIgnoreCase); private readonly Dictionary _idCodeMap = new Dictionary(); - public LanguageRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger, IOptions globalSettings) + public LanguageRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger, IOptions globalSettings) : base(scopeAccessor, cache, logger) { _globalSettings = globalSettings.Value; @@ -319,7 +319,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement if (language != null) return language; // this is an anomaly, the service/repo should ensure it cannot happen - Logger.Warn("There is no default language. Fix this anomaly by editing the language table in database and setting one language as the default language."); + Logger.LogWarning("There is no default language. Fix this anomaly by editing the language table in database and setting one language as the default language."); // still, don't kill the site, and return "something" diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MacroRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MacroRepository.cs index ef5a41b21d..61dad47378 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MacroRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MacroRepository.cs @@ -1,9 +1,9 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using NPoco; using Umbraco.Core.Cache; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; using Umbraco.Core.Persistence.Dtos; @@ -18,7 +18,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement { private readonly IShortStringHelper _shortStringHelper; - public MacroRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger, IShortStringHelper shortStringHelper) + public MacroRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger, IShortStringHelper shortStringHelper) : base(scopeAccessor, cache, logger) { _shortStringHelper = shortStringHelper; diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MediaRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MediaRepository.cs index 83088de9bd..9f47fd2f6b 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MediaRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MediaRepository.cs @@ -2,10 +2,10 @@ using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; +using Microsoft.Extensions.Logging; using NPoco; using Umbraco.Core.Cache; using Umbraco.Core.Exceptions; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; using Umbraco.Core.Persistence.Dtos; @@ -31,7 +31,8 @@ namespace Umbraco.Core.Persistence.Repositories.Implement public MediaRepository( IScopeAccessor scopeAccessor, AppCaches cache, - ILogger logger, + ILogger logger, + ILoggerFactory loggerFactory, IMediaTypeRepository mediaTypeRepository, ITagRepository tagRepository, ILanguageRepository languageRepository, @@ -46,7 +47,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement _mediaTypeRepository = mediaTypeRepository ?? throw new ArgumentNullException(nameof(mediaTypeRepository)); _tagRepository = tagRepository ?? throw new ArgumentNullException(nameof(tagRepository)); _mediaUrlGenerators = mediaUrlGenerators; - _mediaByGuidReadRepository = new MediaByGuidReadRepository(this, scopeAccessor, cache, logger); + _mediaByGuidReadRepository = new MediaByGuidReadRepository(this, scopeAccessor, cache, loggerFactory.CreateLogger()); } protected override MediaRepository This => this; @@ -417,7 +418,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement { private readonly MediaRepository _outerRepo; - public MediaByGuidReadRepository(MediaRepository outerRepo, IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) + public MediaByGuidReadRepository(MediaRepository outerRepo, IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) : base(scopeAccessor, cache, logger) { _outerRepo = outerRepo; diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MediaTypeContainerRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MediaTypeContainerRepository.cs index 68b33e989d..d660ebb0b0 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MediaTypeContainerRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MediaTypeContainerRepository.cs @@ -1,12 +1,12 @@ -using Umbraco.Core.Cache; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; +using Umbraco.Core.Cache; using Umbraco.Core.Scoping; namespace Umbraco.Core.Persistence.Repositories.Implement { class MediaTypeContainerRepository : EntityContainerRepository, IMediaTypeContainerRepository { - public MediaTypeContainerRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) + public MediaTypeContainerRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) : base(scopeAccessor, cache, logger, Constants.ObjectTypes.MediaTypeContainer) { } } diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MediaTypeRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MediaTypeRepository.cs index 818b5c9f21..fdb4817aeb 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MediaTypeRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MediaTypeRepository.cs @@ -1,10 +1,10 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using NPoco; using Umbraco.Core.Cache; using Umbraco.Core.Exceptions; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; using Umbraco.Core.Persistence.Dtos; @@ -19,7 +19,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement /// internal class MediaTypeRepository : ContentTypeRepositoryBase, IMediaTypeRepository { - public MediaTypeRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger, IContentTypeCommonRepository commonRepository, ILanguageRepository languageRepository, IShortStringHelper shortStringHelper) + public MediaTypeRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger, IContentTypeCommonRepository commonRepository, ILanguageRepository languageRepository, IShortStringHelper shortStringHelper) : base(scopeAccessor, cache, logger, commonRepository, languageRepository, shortStringHelper) { } diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MemberGroupRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MemberGroupRepository.cs index edd6dc0ebb..482a0e627f 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MemberGroupRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MemberGroupRepository.cs @@ -1,10 +1,10 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using NPoco; using Umbraco.Core.Cache; using Umbraco.Core.Events; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; using Umbraco.Core.Persistence.Dtos; @@ -16,7 +16,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement { internal class MemberGroupRepository : NPocoRepositoryBase, IMemberGroupRepository { - public MemberGroupRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) + public MemberGroupRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) : base(scopeAccessor, cache, logger) { } diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MemberRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MemberRepository.cs index 8c3c2b3b11..5b1aba12ca 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MemberRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MemberRepository.cs @@ -1,9 +1,9 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using NPoco; using Umbraco.Core.Cache; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; using Umbraco.Core.Persistence.Dtos; @@ -28,7 +28,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement private readonly IMemberGroupRepository _memberGroupRepository; private readonly IRepositoryCachePolicy _memberByUsernameCachePolicy; - public MemberRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger, + public MemberRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger, IMemberTypeRepository memberTypeRepository, IMemberGroupRepository memberGroupRepository, ITagRepository tagRepository, ILanguageRepository languageRepository, IRelationRepository relationRepository, IRelationTypeRepository relationTypeRepository, IPasswordHasher passwordHasher, Lazy propertyEditors, diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MemberTypeRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MemberTypeRepository.cs index 059035a9bc..28b364129d 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MemberTypeRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MemberTypeRepository.cs @@ -1,10 +1,10 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using NPoco; using Umbraco.Core.Cache; using Umbraco.Core.Exceptions; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; using Umbraco.Core.Persistence.Dtos; @@ -22,7 +22,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement { private readonly IShortStringHelper _shortStringHelper; - public MemberTypeRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger, IContentTypeCommonRepository commonRepository, ILanguageRepository languageRepository, IShortStringHelper shortStringHelper) + public MemberTypeRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger, IContentTypeCommonRepository commonRepository, ILanguageRepository languageRepository, IShortStringHelper shortStringHelper) : base(scopeAccessor, cache, logger, commonRepository, languageRepository, shortStringHelper) { _shortStringHelper = shortStringHelper; diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/NPocoRepositoryBase.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/NPocoRepositoryBase.cs index d72eb9de9b..392e7bdf1f 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/NPocoRepositoryBase.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/NPocoRepositoryBase.cs @@ -1,8 +1,8 @@ using System; using System.Collections.Generic; using NPoco; +using Microsoft.Extensions.Logging; using Umbraco.Core.Cache; -using Umbraco.Core.Logging; using Umbraco.Core.Models.Entities; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Persistence.SqlSyntax; @@ -21,7 +21,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement /// /// Initializes a new instance of the class. /// - protected NPocoRepositoryBase(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) + protected NPocoRepositoryBase(IScopeAccessor scopeAccessor, AppCaches cache, ILogger> logger) : base(scopeAccessor, cache, logger) { } diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/PermissionRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/PermissionRepository.cs index 259f0b89c0..279a7075ea 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/PermissionRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/PermissionRepository.cs @@ -5,12 +5,12 @@ using System.Linq; using NPoco; using Umbraco.Core.Cache; using Umbraco.Core.Exceptions; -using Umbraco.Core.Logging; using Umbraco.Core.Models.Entities; using Umbraco.Core.Models.Membership; using Umbraco.Core.Persistence.Dtos; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Scoping; +using Microsoft.Extensions.Logging; namespace Umbraco.Core.Persistence.Repositories.Implement { @@ -25,7 +25,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement internal class PermissionRepository : NPocoRepositoryBase where TEntity : class, IEntity { - public PermissionRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) + public PermissionRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger> logger) : base(scopeAccessor, cache, logger) { } diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/PublicAccessRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/PublicAccessRepository.cs index 1dc7aa478d..6d2f95bb4d 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/PublicAccessRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/PublicAccessRepository.cs @@ -1,9 +1,9 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using NPoco; using Umbraco.Core.Cache; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; using Umbraco.Core.Persistence.Dtos; @@ -15,7 +15,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement { internal class PublicAccessRepository : NPocoRepositoryBase, IPublicAccessRepository { - public PublicAccessRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) + public PublicAccessRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) : base(scopeAccessor, cache, logger) { } @@ -40,7 +40,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement } sql.OrderBy(x => x.NodeId); - + var dtos = Database.FetchOneToMany(x => x.Rules, sql); return dtos.Select(PublicAccessEntryFactory.BuildEntity); } @@ -50,7 +50,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement var sqlClause = GetBaseQuery(false); var translator = new SqlTranslator(sqlClause, query); var sql = translator.Translate(); - + var dtos = Database.FetchOneToMany(x => x.Rules, sql); return dtos.Select(PublicAccessEntryFactory.BuildEntity); } @@ -86,7 +86,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement entity.AddingEntity(); foreach (var rule in entity.Rules) rule.AddingEntity(); - + var dto = PublicAccessEntryFactory.BuildDto(entity); Database.Insert(dto); @@ -116,7 +116,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement else rule.AddingEntity(); } - + var dto = PublicAccessEntryFactory.BuildDto(entity); Database.Update(dto); diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/RedirectUrlRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/RedirectUrlRepository.cs index acf6bb7df2..5df508e5ef 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/RedirectUrlRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/RedirectUrlRepository.cs @@ -2,9 +2,9 @@ using System.Collections.Generic; using System.Linq; using System.Security.Cryptography; +using Microsoft.Extensions.Logging; using NPoco; using Umbraco.Core.Cache; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence.Dtos; using Umbraco.Core.Persistence.Querying; @@ -14,7 +14,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement { internal class RedirectUrlRepository : NPocoRepositoryBase, IRedirectUrlRepository { - public RedirectUrlRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) + public RedirectUrlRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) : base(scopeAccessor, cache, logger) { } diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/RelationRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/RelationRepository.cs index 667e997953..3767fa354c 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/RelationRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/RelationRepository.cs @@ -1,9 +1,9 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using NPoco; using Umbraco.Core.Cache; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; using Umbraco.Core.Persistence.Dtos; @@ -24,7 +24,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement private readonly IRelationTypeRepository _relationTypeRepository; private readonly IEntityRepository _entityRepository; - public RelationRepository(IScopeAccessor scopeAccessor, ILogger logger, IRelationTypeRepository relationTypeRepository, IEntityRepository entityRepository) + public RelationRepository(IScopeAccessor scopeAccessor, ILogger logger, IRelationTypeRepository relationTypeRepository, IEntityRepository entityRepository) : base(scopeAccessor, AppCaches.NoCache, logger) { _relationTypeRepository = relationTypeRepository; diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/RelationTypeRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/RelationTypeRepository.cs index 623b55b6f8..bbaebbc9a9 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/RelationTypeRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/RelationTypeRepository.cs @@ -1,9 +1,9 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using NPoco; using Umbraco.Core.Cache; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; using Umbraco.Core.Persistence.Dtos; @@ -18,7 +18,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement /// internal class RelationTypeRepository : NPocoRepositoryBase, IRelationTypeRepository { - public RelationTypeRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) + public RelationTypeRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) : base(scopeAccessor, cache, logger) { } @@ -55,7 +55,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement throw new NotImplementedException(); var dtos = Database.Fetch(sql); - + return dtos.Select(x => DtoToEntity(x)); } @@ -75,7 +75,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement var sql = translator.Translate(); var dtos = Database.Fetch(sql); - + return dtos.Select(x => DtoToEntity(x)); } diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/RepositoryBaseOfTIdTEntity.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/RepositoryBaseOfTIdTEntity.cs index 6985bf78da..a9e8f4bb16 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/RepositoryBaseOfTIdTEntity.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/RepositoryBaseOfTIdTEntity.cs @@ -1,8 +1,8 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core.Cache; -using Umbraco.Core.Logging; using Umbraco.Core.Models.Entities; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Scoping; @@ -19,14 +19,14 @@ namespace Umbraco.Core.Persistence.Repositories.Implement { private IRepositoryCachePolicy _cachePolicy; - protected RepositoryBase(IScopeAccessor scopeAccessor, AppCaches appCaches, ILogger logger) + protected RepositoryBase(IScopeAccessor scopeAccessor, AppCaches appCaches, ILogger> logger) { ScopeAccessor = scopeAccessor ?? throw new ArgumentNullException(nameof(scopeAccessor)); Logger = logger ?? throw new ArgumentNullException(nameof(logger)); AppCaches = appCaches ?? throw new ArgumentNullException(nameof(appCaches)); } - protected ILogger Logger { get; } + protected ILogger> Logger { get; } protected AppCaches AppCaches { get; } diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/ServerRegistrationRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/ServerRegistrationRepository.cs index 1497c2857c..f215a8997b 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/ServerRegistrationRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/ServerRegistrationRepository.cs @@ -1,9 +1,9 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using NPoco; using Umbraco.Core.Cache; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; using Umbraco.Core.Persistence.Dtos; @@ -15,7 +15,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement { internal class ServerRegistrationRepository : NPocoRepositoryBase, IServerRegistrationRepository { - public ServerRegistrationRepository(IScopeAccessor scopeAccessor, ILogger logger) + public ServerRegistrationRepository(IScopeAccessor scopeAccessor, ILogger logger) : base(scopeAccessor, AppCaches.NoCache, logger) { } @@ -110,7 +110,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement protected override void PersistUpdatedItem(IServerRegistration entity) { entity.UpdatingEntity(); - + var dto = ServerRegistrationFactory.BuildDto(entity); Database.Update(dto); diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/SimpleGetRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/SimpleGetRepository.cs index d327fba67f..bbe751d2c6 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/SimpleGetRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/SimpleGetRepository.cs @@ -1,10 +1,10 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using NPoco; using Umbraco.Core.Cache; using Umbraco.Core.Exceptions; -using Umbraco.Core.Logging; using Umbraco.Core.Models.Entities; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Scoping; @@ -20,7 +20,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement where TEntity : class, IEntity where TDto: class { - protected SimpleGetRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) + protected SimpleGetRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger> logger) : base(scopeAccessor, cache, logger) { } diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/TagRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/TagRepository.cs index 87564b9ac9..dcd9464ae0 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/TagRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/TagRepository.cs @@ -2,9 +2,9 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using Microsoft.Extensions.Logging; using NPoco; using Umbraco.Core.Cache; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; using Umbraco.Core.Persistence.Dtos; @@ -17,7 +17,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement { internal class TagRepository : NPocoRepositoryBase, ITagRepository { - public TagRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) + public TagRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) : base(scopeAccessor, cache, logger) { } diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/TemplateRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/TemplateRepository.cs index c02329aac4..b36474d688 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/TemplateRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/TemplateRepository.cs @@ -3,10 +3,10 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; +using Microsoft.Extensions.Logging; using NPoco; using Umbraco.Core.Cache; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; using Umbraco.Core.Persistence.Dtos; @@ -27,7 +27,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement private readonly IFileSystem _viewsFileSystem; private readonly ViewHelper _viewHelper; - public TemplateRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger, IFileSystems fileSystems, IIOHelper ioHelper, IShortStringHelper shortStringHelper) + public TemplateRepository(IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger, IFileSystems fileSystems, IIOHelper ioHelper, IShortStringHelper shortStringHelper) : base(scopeAccessor, cache, logger) { _ioHelper = ioHelper; diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/UserGroupRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/UserGroupRepository.cs index 863f3dc455..30b9b29416 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/UserGroupRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/UserGroupRepository.cs @@ -1,9 +1,9 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using NPoco; using Umbraco.Core.Cache; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; using Umbraco.Core.Models.Membership; @@ -24,12 +24,12 @@ namespace Umbraco.Core.Persistence.Repositories.Implement private readonly UserGroupWithUsersRepository _userGroupWithUsersRepository; private readonly PermissionRepository _permissionRepository; - public UserGroupRepository(IScopeAccessor scopeAccessor, AppCaches appCaches, ILogger logger, IShortStringHelper shortStringHelper) + public UserGroupRepository(IScopeAccessor scopeAccessor, AppCaches appCaches, ILogger logger, ILoggerFactory loggerFactory, IShortStringHelper shortStringHelper) : base(scopeAccessor, appCaches, logger) { _shortStringHelper = shortStringHelper; - _userGroupWithUsersRepository = new UserGroupWithUsersRepository(this, scopeAccessor, appCaches, logger); - _permissionRepository = new PermissionRepository(scopeAccessor, appCaches, logger); + _userGroupWithUsersRepository = new UserGroupWithUsersRepository(this, scopeAccessor, appCaches, loggerFactory.CreateLogger()); + _permissionRepository = new PermissionRepository(scopeAccessor, appCaches, loggerFactory.CreateLogger>()); } @@ -362,7 +362,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement { private readonly UserGroupRepository _userGroupRepo; - public UserGroupWithUsersRepository(UserGroupRepository userGroupRepo, IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) + public UserGroupWithUsersRepository(UserGroupRepository userGroupRepo, IScopeAccessor scopeAccessor, AppCaches cache, ILogger logger) : base(scopeAccessor, cache, logger) { _userGroupRepo = userGroupRepo; diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/UserRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/UserRepository.cs index 219957bd34..51000dbe70 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/UserRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/UserRepository.cs @@ -3,12 +3,12 @@ using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using NPoco; using Umbraco.Core.Cache; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; -using Umbraco.Core.Logging; using Umbraco.Core.Models.Entities; using Umbraco.Core.Models.Membership; using Umbraco.Core.Persistence.Dtos; @@ -45,7 +45,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement public UserRepository( IScopeAccessor scopeAccessor, AppCaches appCaches, - ILogger logger, + ILogger logger, IMapperCollection mapperCollection, IOptions globalSettings, IOptions passwordConfiguration, diff --git a/src/Umbraco.Infrastructure/Persistence/SqlSyntax/SqlServerSyntaxProvider.cs b/src/Umbraco.Infrastructure/Persistence/SqlSyntax/SqlServerSyntaxProvider.cs index ec4cfca498..c24aaf3f7a 100644 --- a/src/Umbraco.Infrastructure/Persistence/SqlSyntax/SqlServerSyntaxProvider.cs +++ b/src/Umbraco.Infrastructure/Persistence/SqlSyntax/SqlServerSyntaxProvider.cs @@ -4,6 +4,7 @@ using System.Data; using System.Data.Common; using System.Data.SqlClient; using System.Linq; +using Microsoft.Extensions.Logging; using NPoco; using Umbraco.Core.Logging; using Umbraco.Core.Persistence.DatabaseModelDefinitions; @@ -161,7 +162,7 @@ namespace Umbraco.Core.Persistence.SqlSyntax } catch (Exception e) { - logger.Error(e, "Failed to detected SqlServer version."); + logger.LogError(e, "Failed to detected SqlServer version."); version = new ServerVersionInfo(); // all unknown } } diff --git a/src/Umbraco.Infrastructure/Persistence/UmbracoDatabase.cs b/src/Umbraco.Infrastructure/Persistence/UmbracoDatabase.cs index a4b4afbe25..37c47da50d 100644 --- a/src/Umbraco.Infrastructure/Persistence/UmbracoDatabase.cs +++ b/src/Umbraco.Infrastructure/Persistence/UmbracoDatabase.cs @@ -5,9 +5,9 @@ using System.Data.Common; using System.Data.SqlClient; using System.Linq; using System.Text; +using Microsoft.Extensions.Logging; using NPoco; using StackExchange.Profiling; -using Umbraco.Core.Logging; using Umbraco.Core.Persistence.FaultHandling; using Umbraco.Core.Persistence.SqlSyntax; @@ -23,7 +23,7 @@ namespace Umbraco.Core.Persistence /// public class UmbracoDatabase : Database, IUmbracoDatabase { - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IBulkSqlInsertProvider _bulkSqlInsertProvider; private readonly RetryPolicy _connectionRetryPolicy; private readonly RetryPolicy _commandRetryPolicy; @@ -39,7 +39,7 @@ namespace Umbraco.Core.Persistence /// Used by UmbracoDatabaseFactory to create databases. /// Also used by DatabaseBuilder for creating databases and installing/upgrading. /// - public UmbracoDatabase(string connectionString, ISqlContext sqlContext, DbProviderFactory provider, ILogger logger, IBulkSqlInsertProvider bulkSqlInsertProvider, RetryPolicy connectionRetryPolicy = null, RetryPolicy commandRetryPolicy = null) + public UmbracoDatabase(string connectionString, ISqlContext sqlContext, DbProviderFactory provider, ILogger logger, IBulkSqlInsertProvider bulkSqlInsertProvider, RetryPolicy connectionRetryPolicy = null, RetryPolicy commandRetryPolicy = null) : base(connectionString, sqlContext.DatabaseType, provider, sqlContext.SqlSyntax.DefaultIsolationLevel) { SqlContext = sqlContext; @@ -58,7 +58,7 @@ namespace Umbraco.Core.Persistence /// Initializes a new instance of the class. /// /// Internal for unit tests only. - internal UmbracoDatabase(DbConnection connection, ISqlContext sqlContext, ILogger logger, IBulkSqlInsertProvider bulkSqlInsertProvider) + internal UmbracoDatabase(DbConnection connection, ISqlContext sqlContext, ILogger logger, IBulkSqlInsertProvider bulkSqlInsertProvider) : base(connection, sqlContext.DatabaseType, sqlContext.SqlSyntax.DefaultIsolationLevel) { SqlContext = sqlContext; @@ -226,10 +226,10 @@ namespace Umbraco.Core.Persistence protected override void OnException(Exception ex) { - _logger.Error(ex, "Exception ({InstanceId}).", InstanceId); - _logger.Debug("At:\r\n{StackTrace}", Environment.StackTrace); + _logger.LogError(ex, "Exception ({InstanceId}).", InstanceId); + _logger.LogDebug("At:\r\n{StackTrace}", Environment.StackTrace); if (EnableSqlTrace == false) - _logger.Debug("Sql:\r\n{Sql}", CommandToString(LastSQL, LastArgs)); + _logger.LogDebug("Sql:\r\n{Sql}", CommandToString(LastSQL, LastArgs)); base.OnException(ex); } @@ -242,13 +242,13 @@ namespace Umbraco.Core.Persistence cmd.CommandTimeout = cmd.Connection.ConnectionTimeout; if (EnableSqlTrace) - _logger.Debug("SQL Trace:\r\n{Sql}", CommandToString(cmd).Replace("{", "{{").Replace("}", "}}")); // TODO: these escapes should be builtin + _logger.LogDebug("SQL Trace:\r\n{Sql}", CommandToString(cmd).Replace("{", "{{").Replace("}", "}}")); // TODO: these escapes should be builtin #if DEBUG_DATABASES // detects whether the command is already in use (eg still has an open reader...) DatabaseDebugHelper.SetCommand(cmd, InstanceId + " [T" + System.Threading.Thread.CurrentThread.ManagedThreadId + "]"); var refsobj = DatabaseDebugHelper.GetReferencedObjects(cmd.Connection); - if (refsobj != null) _logger.Debug("Oops!" + Environment.NewLine + refsobj); + if (refsobj != null) _logger.LogDebug("Oops!" + Environment.NewLine + refsobj); #endif _cmd = cmd; diff --git a/src/Umbraco.Infrastructure/Persistence/UmbracoDatabaseFactory.cs b/src/Umbraco.Infrastructure/Persistence/UmbracoDatabaseFactory.cs index c092cc8b0e..65933399a3 100644 --- a/src/Umbraco.Infrastructure/Persistence/UmbracoDatabaseFactory.cs +++ b/src/Umbraco.Infrastructure/Persistence/UmbracoDatabaseFactory.cs @@ -1,11 +1,11 @@ using System; using System.Data.Common; using System.Threading; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using NPoco; using NPoco.FluentMappings; using Umbraco.Core.Configuration.Models; -using Umbraco.Core.Logging; using Umbraco.Core.Persistence.FaultHandling; using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.SqlSyntax; @@ -29,7 +29,8 @@ namespace Umbraco.Core.Persistence private readonly IDbProviderFactoryCreator _dbProviderFactoryCreator; private readonly GlobalSettings _globalSettings; private readonly Lazy _mappers; - private readonly ILogger _logger; + private readonly ILogger _logger; + private readonly ILoggerFactory _loggerFactory; private object _lock = new object(); @@ -69,8 +70,8 @@ namespace Umbraco.Core.Persistence /// Initializes a new instance of the . /// /// Used by core runtime. - public UmbracoDatabaseFactory(ILogger logger, IOptions globalSettings, IOptions connectionStrings, Lazy mappers,IDbProviderFactoryCreator dbProviderFactoryCreator) - : this(logger, globalSettings.Value, connectionStrings.Value, mappers, dbProviderFactoryCreator) + public UmbracoDatabaseFactory(ILogger logger, ILoggerFactory loggerFactory, IOptions globalSettings, IOptions connectionStrings, Lazy mappers,IDbProviderFactoryCreator dbProviderFactoryCreator) + : this(logger, loggerFactory, globalSettings.Value, connectionStrings.Value, mappers, dbProviderFactoryCreator) { } @@ -79,19 +80,20 @@ namespace Umbraco.Core.Persistence /// Initializes a new instance of the . /// /// Used by the other ctor and in tests. - public UmbracoDatabaseFactory(ILogger logger, GlobalSettings globalSettings, ConnectionStrings connectionStrings, Lazy mappers, IDbProviderFactoryCreator dbProviderFactoryCreator) + public UmbracoDatabaseFactory(ILogger logger, ILoggerFactory loggerFactory, GlobalSettings globalSettings, ConnectionStrings connectionStrings, Lazy mappers, IDbProviderFactoryCreator dbProviderFactoryCreator) { _globalSettings = globalSettings; _mappers = mappers ?? throw new ArgumentNullException(nameof(mappers)); _dbProviderFactoryCreator = dbProviderFactoryCreator ?? throw new ArgumentNullException(nameof(dbProviderFactoryCreator)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); + _loggerFactory = loggerFactory; var settings = connectionStrings.UmbracoConnectionString; if (settings == null) { - logger.Debug("Missing connection string, defer configuration."); + logger.LogDebug("Missing connection string, defer configuration."); return; // not configured } @@ -101,7 +103,7 @@ namespace Umbraco.Core.Persistence var providerName = settings.ProviderName; if (string.IsNullOrWhiteSpace(connectionString) || string.IsNullOrWhiteSpace(providerName)) { - logger.Debug("Empty connection string or provider name, defer configuration."); + logger.LogDebug("Empty connection string or provider name, defer configuration."); return; // not configured } @@ -112,15 +114,16 @@ namespace Umbraco.Core.Persistence /// Initializes a new instance of the . /// /// Used in tests. - public UmbracoDatabaseFactory(ILogger logger, string connectionString, string providerName, Lazy mappers, IDbProviderFactoryCreator dbProviderFactoryCreator) + public UmbracoDatabaseFactory(ILogger logger, ILoggerFactory loggerFactory, string connectionString, string providerName, Lazy mappers, IDbProviderFactoryCreator dbProviderFactoryCreator) { _mappers = mappers ?? throw new ArgumentNullException(nameof(mappers)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); + _loggerFactory = loggerFactory; _dbProviderFactoryCreator = dbProviderFactoryCreator ?? throw new ArgumentNullException(nameof(dbProviderFactoryCreator)); if (string.IsNullOrWhiteSpace(connectionString) || string.IsNullOrWhiteSpace(providerName)) { - logger.Debug("Missing connection string or provider name, defer configuration."); + logger.LogDebug("Missing connection string or provider name, defer configuration."); return; // not configured } @@ -185,7 +188,7 @@ namespace Umbraco.Core.Persistence // else leave unchanged } - _logger.Debug("SqlServer {SqlServerVersion}, DatabaseType is {DatabaseType} ({Source}).", + _logger.LogDebug("SqlServer {SqlServerVersion}, DatabaseType is {DatabaseType} ({Source}).", versionName, _databaseType, fromSettings ? "settings" : "detected"); } @@ -242,7 +245,7 @@ namespace Umbraco.Core.Persistence private SqlContext Initialize() { - _logger.Debug("Initializing."); + _logger.LogDebug("Initializing."); if (ConnectionString.IsNullOrWhiteSpace()) throw new InvalidOperationException("The factory has not been configured with a proper connection string."); if (_providerName.IsNullOrWhiteSpace()) throw new InvalidOperationException("The factory has not been configured with a proper provider name."); @@ -287,7 +290,7 @@ namespace Umbraco.Core.Persistence if (_npocoDatabaseFactory == null) throw new NullReferenceException("The call to UmbracoDatabaseFactory.Config yielded a null UmbracoDatabaseFactory instance."); - _logger.Debug("Initialized."); + _logger.LogDebug("Initialized."); return new SqlContext(_sqlSyntax, _databaseType, _pocoDataFactory, _mappers); } @@ -309,7 +312,7 @@ namespace Umbraco.Core.Persistence // method used by NPoco's UmbracoDatabaseFactory to actually create the database instance private UmbracoDatabase CreateDatabaseInstance() { - return new UmbracoDatabase(ConnectionString, SqlContext, DbProviderFactory, _logger, _bulkSqlInsertProvider, _connectionRetryPolicy, _commandRetryPolicy); + return new UmbracoDatabase(ConnectionString, SqlContext, DbProviderFactory, _loggerFactory.CreateLogger(), _bulkSqlInsertProvider, _connectionRetryPolicy, _commandRetryPolicy); } protected override void DisposeResources() diff --git a/src/Umbraco.Infrastructure/PropertyEditors/BlockEditorPropertyEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/BlockEditorPropertyEditor.cs index b78cae7ac4..b1e5fb0199 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/BlockEditorPropertyEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/BlockEditorPropertyEditor.cs @@ -3,8 +3,8 @@ using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Blocks; using Umbraco.Core.Models.Editors; @@ -29,14 +29,14 @@ namespace Umbraco.Web.PropertyEditors private readonly IContentTypeService _contentTypeService; public BlockEditorPropertyEditor( - ILogger logger, + ILoggerFactory loggerFactory, Lazy propertyEditors, IDataTypeService dataTypeService, IContentTypeService contentTypeService, ILocalizedTextService localizedTextService, ILocalizationService localizationService, IShortStringHelper shortStringHelper) - : base(logger, dataTypeService,localizationService,localizedTextService, shortStringHelper) + : base(loggerFactory, dataTypeService,localizationService,localizedTextService, shortStringHelper) { _localizedTextService = localizedTextService; _propertyEditors = propertyEditors; @@ -49,16 +49,16 @@ namespace Umbraco.Web.PropertyEditors #region Value Editor - protected override IDataValueEditor CreateValueEditor() => new BlockEditorPropertyValueEditor(Attribute, PropertyEditors, _dataTypeService, _contentTypeService, _localizedTextService, Logger, LocalizationService,ShortStringHelper); + protected override IDataValueEditor CreateValueEditor() => new BlockEditorPropertyValueEditor(Attribute, PropertyEditors, _dataTypeService, _contentTypeService, _localizedTextService, LoggerFactory.CreateLogger(), LocalizationService,ShortStringHelper); internal class BlockEditorPropertyValueEditor : DataValueEditor, IDataValueReference { private readonly PropertyEditorCollection _propertyEditors; private readonly IDataTypeService _dataTypeService; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly BlockEditorValues _blockEditorValues; - public BlockEditorPropertyValueEditor(DataEditorAttribute attribute, PropertyEditorCollection propertyEditors, IDataTypeService dataTypeService, IContentTypeService contentTypeService, ILocalizedTextService textService, ILogger logger, ILocalizationService localizationService, IShortStringHelper shortStringHelper) + public BlockEditorPropertyValueEditor(DataEditorAttribute attribute, PropertyEditorCollection propertyEditors, IDataTypeService dataTypeService, IContentTypeService contentTypeService, ILocalizedTextService textService, ILogger logger, ILocalizationService localizationService, IShortStringHelper shortStringHelper) : base(dataTypeService, localizationService, textService, shortStringHelper, attribute) { _propertyEditors = propertyEditors; @@ -156,7 +156,7 @@ namespace Umbraco.Web.PropertyEditors { // deal with weird situations by ignoring them (no comment) row.PropertyValues.Remove(prop.Key); - _logger.Warn( + _logger.LogWarning( "ToEditor removed property value {PropertyKey} in row {RowId} for property type {PropertyTypeAlias}", prop.Key, row.Key, property.PropertyType.Alias); continue; @@ -405,7 +405,7 @@ namespace Umbraco.Web.PropertyEditors if (!propertyTypes.TryGetValue(prop.Key, out var propType)) { block.RawPropertyValues.Remove(prop.Key); - _logger.Warn("The property {PropertyKey} for block {BlockKey} was removed because the property type {PropertyTypeAlias} was not found on {ContentTypeAlias}", + _logger.LogWarning("The property {PropertyKey} for block {BlockKey} was removed because the property type {PropertyTypeAlias} was not found on {ContentTypeAlias}", prop.Key, block.Key, prop.Key, contentType.Alias); } else diff --git a/src/Umbraco.Infrastructure/PropertyEditors/BlockListPropertyEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/BlockListPropertyEditor.cs index 8426385813..6a23d0da00 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/BlockListPropertyEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/BlockListPropertyEditor.cs @@ -2,9 +2,9 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Models.Blocks; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; @@ -27,7 +27,7 @@ namespace Umbraco.Web.PropertyEditors private readonly IIOHelper _ioHelper; public BlockListPropertyEditor( - ILogger logger, + ILoggerFactory loggerFactory, Lazy propertyEditors, IDataTypeService dataTypeService, IContentTypeService contentTypeService, @@ -35,7 +35,7 @@ namespace Umbraco.Web.PropertyEditors IIOHelper ioHelper, ILocalizationService localizationService, IShortStringHelper shortStringHelper) - : base(logger, propertyEditors, dataTypeService, contentTypeService, localizedTextService, localizationService, shortStringHelper) + : base(loggerFactory, propertyEditors, dataTypeService, contentTypeService, localizedTextService, localizationService, shortStringHelper) { _ioHelper = ioHelper; } diff --git a/src/Umbraco.Infrastructure/PropertyEditors/CheckBoxListPropertyEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/CheckBoxListPropertyEditor.cs index 67f3dd61cd..09600d86ae 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/CheckBoxListPropertyEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/CheckBoxListPropertyEditor.cs @@ -1,6 +1,6 @@ -using Umbraco.Core; +using Microsoft.Extensions.Logging; +using Umbraco.Core; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; using Umbraco.Core.Strings; @@ -28,8 +28,8 @@ namespace Umbraco.Web.PropertyEditors /// /// The constructor will setup the property editor based on the attribute if one is found /// - public CheckBoxListPropertyEditor(ILogger logger, ILocalizedTextService textService, IDataTypeService dataTypeService, ILocalizationService localizationService, IShortStringHelper shortStringHelper, IIOHelper ioHelper, ILocalizedTextService localizedTextService) - : base(logger, dataTypeService, localizationService,localizedTextService, shortStringHelper) + public CheckBoxListPropertyEditor(ILoggerFactory loggerFactory, ILocalizedTextService textService, IDataTypeService dataTypeService, ILocalizationService localizationService, IShortStringHelper shortStringHelper, IIOHelper ioHelper, ILocalizedTextService localizedTextService) + : base(loggerFactory, dataTypeService, localizationService,localizedTextService, shortStringHelper) { _textService = textService; _dataTypeService = dataTypeService; @@ -43,6 +43,6 @@ namespace Umbraco.Web.PropertyEditors protected override IConfigurationEditor CreateConfigurationEditor() => new ValueListConfigurationEditor(_textService, _ioHelper); /// - protected override IDataValueEditor CreateValueEditor() => new MultipleValueEditor(Logger, _dataTypeService, _localizationService, _localizedTextService, _shortStringHelper, Attribute); + protected override IDataValueEditor CreateValueEditor() => new MultipleValueEditor(LoggerFactory.CreateLogger(), _dataTypeService, _localizationService, _localizedTextService, _shortStringHelper, Attribute); } } diff --git a/src/Umbraco.Infrastructure/PropertyEditors/ColorPickerPropertyEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/ColorPickerPropertyEditor.cs index 0f6996ddd4..575609a934 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/ColorPickerPropertyEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/ColorPickerPropertyEditor.cs @@ -1,6 +1,6 @@ -using Umbraco.Core; +using Microsoft.Extensions.Logging; +using Umbraco.Core; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; using Umbraco.Core.Strings; @@ -17,8 +17,8 @@ namespace Umbraco.Web.PropertyEditors { private readonly IIOHelper _ioHelper; - public ColorPickerPropertyEditor(ILogger logger, IDataTypeService dataTypeService, ILocalizationService localizationService, IIOHelper ioHelper, IShortStringHelper shortStringHelper, ILocalizedTextService localizedTextService) - : base(logger, dataTypeService, localizationService, localizedTextService, shortStringHelper) + public ColorPickerPropertyEditor(ILoggerFactory loggerFactory, IDataTypeService dataTypeService, ILocalizationService localizationService, IIOHelper ioHelper, IShortStringHelper shortStringHelper, ILocalizedTextService localizedTextService) + : base(loggerFactory, dataTypeService, localizationService, localizedTextService, shortStringHelper) { _ioHelper = ioHelper; } diff --git a/src/Umbraco.Infrastructure/PropertyEditors/ContentPickerPropertyEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/ContentPickerPropertyEditor.cs index 4c996fd4fc..4c172ccb2e 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/ContentPickerPropertyEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/ContentPickerPropertyEditor.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Models.Editors; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; @@ -30,10 +30,10 @@ namespace Umbraco.Web.PropertyEditors IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, - ILogger logger, + ILoggerFactory loggerFactory, IIOHelper ioHelper, IShortStringHelper shortStringHelper) - : base(logger, dataTypeService,localizationService,localizedTextService, shortStringHelper) + : base(loggerFactory, dataTypeService,localizationService,localizedTextService, shortStringHelper) { _dataTypeService = dataTypeService; _localizationService = localizationService; diff --git a/src/Umbraco.Infrastructure/PropertyEditors/DataEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/DataEditor.cs index 1c52a007dd..ebac6a763d 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/DataEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/DataEditor.cs @@ -2,9 +2,9 @@ using System.Collections.Generic; using System.Diagnostics; using System.Runtime.Serialization; +using Microsoft.Extensions.Logging; using Umbraco.Composing; using Umbraco.Core.Composing; -using Umbraco.Core.Logging; using Umbraco.Core.Services; using Umbraco.Core.Strings; @@ -27,9 +27,9 @@ namespace Umbraco.Core.PropertyEditors /// /// Initializes a new instance of the class. /// - public DataEditor(ILogger logger, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper, EditorType type = EditorType.PropertyValue) + public DataEditor(ILoggerFactory loggerFactory, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper, EditorType type = EditorType.PropertyValue) { - Logger = logger ?? throw new ArgumentNullException(nameof(logger)); + LoggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory)); DataTypeService = dataTypeService ?? throw new ArgumentNullException(nameof(dataTypeService)); LocalizationService = localizationService ?? throw new ArgumentNullException(nameof(localizationService)); LocalizedTextService = localizedTextService ?? throw new ArgumentNullException(nameof(localizedTextService)); @@ -61,13 +61,9 @@ namespace Umbraco.Core.PropertyEditors protected IShortStringHelper ShortStringHelper { get; } protected ILocalizedTextService LocalizedTextService { get; } protected ILocalizationService LocalizationService { get; } + protected ILoggerFactory LoggerFactory { get; } protected IDataTypeService DataTypeService { get; } - /// - /// Gets a logger. - /// - protected ILogger Logger { get; } - /// [DataMember(Name = "alias", IsRequired = true)] public string Alias { get; internal set; } diff --git a/src/Umbraco.Infrastructure/PropertyEditors/DataValueEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/DataValueEditor.cs index 9765038adf..df9a06515c 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/DataValueEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/DataValueEditor.cs @@ -4,11 +4,11 @@ using System.ComponentModel.DataAnnotations; using System.Globalization; using System.Linq; using System.Xml.Linq; +using Microsoft.Extensions.Logging; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Umbraco.Composing; using Umbraco.Core.Composing; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Editors; using Umbraco.Core.PropertyEditors.Validators; @@ -217,7 +217,7 @@ namespace Umbraco.Core.PropertyEditors var result = TryConvertValueToCrlType(editorValue.Value); if (result.Success == false) { - Current.Logger.Warn("The value {EditorValue} cannot be converted to the type {StorageTypeValue}", editorValue.Value, ValueTypes.ToStorageType(ValueType)); + Current.Logger.LogWarning("The value {EditorValue} cannot be converted to the type {StorageTypeValue}", editorValue.Value, ValueTypes.ToStorageType(ValueType)); return null; } return result.Result; diff --git a/src/Umbraco.Infrastructure/PropertyEditors/DateTimePropertyEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/DateTimePropertyEditor.cs index d2a08c3a2b..db4c6734a8 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/DateTimePropertyEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/DateTimePropertyEditor.cs @@ -1,6 +1,6 @@ -using Umbraco.Core; +using Microsoft.Extensions.Logging; +using Umbraco.Core; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; using Umbraco.Core.Strings; @@ -23,9 +23,9 @@ namespace Umbraco.Web.PropertyEditors /// /// Initializes a new instance of the class. /// - /// - public DateTimePropertyEditor(ILogger logger, IIOHelper ioHelper, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper) - : base(logger, dataTypeService, localizationService,localizedTextService, shortStringHelper) + /// + public DateTimePropertyEditor(ILoggerFactory loggerFactory, IIOHelper ioHelper, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper) + : base(loggerFactory, dataTypeService, localizationService,localizedTextService, shortStringHelper) { _ioHelper = ioHelper; } diff --git a/src/Umbraco.Infrastructure/PropertyEditors/DecimalPropertyEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/DecimalPropertyEditor.cs index e5ca56878f..8d2280b23b 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/DecimalPropertyEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/DecimalPropertyEditor.cs @@ -1,5 +1,5 @@ -using Umbraco.Core; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; +using Umbraco.Core; using Umbraco.Core.PropertyEditors; using Umbraco.Core.PropertyEditors.Validators; using Umbraco.Core.Services; @@ -21,12 +21,13 @@ namespace Umbraco.Web.PropertyEditors /// /// Initializes a new instance of the class. /// - public DecimalPropertyEditor(ILogger logger, + public DecimalPropertyEditor( + ILoggerFactory loggerFactory, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper) - : base(logger, dataTypeService, localizationService, localizedTextService, shortStringHelper) + : base(loggerFactory, dataTypeService, localizationService, localizedTextService, shortStringHelper) { } /// diff --git a/src/Umbraco.Infrastructure/PropertyEditors/DropDownFlexiblePropertyEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/DropDownFlexiblePropertyEditor.cs index 73ce726257..66f605bc36 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/DropDownFlexiblePropertyEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/DropDownFlexiblePropertyEditor.cs @@ -1,6 +1,6 @@ -using Umbraco.Core; +using Microsoft.Extensions.Logging; +using Umbraco.Core; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; using Umbraco.Core.Strings; @@ -21,8 +21,8 @@ namespace Umbraco.Web.PropertyEditors private readonly IShortStringHelper _shortStringHelper; private readonly IIOHelper _ioHelper; - public DropDownFlexiblePropertyEditor(ILocalizedTextService textService, ILogger logger, IDataTypeService dataTypeService, ILocalizationService localizationService, IShortStringHelper shortStringHelper, IIOHelper ioHelper) - : base(logger, dataTypeService, localizationService, textService, shortStringHelper) + public DropDownFlexiblePropertyEditor(ILocalizedTextService textService, ILoggerFactory loggerFactory, IDataTypeService dataTypeService, ILocalizationService localizationService, IShortStringHelper shortStringHelper, IIOHelper ioHelper) + : base(loggerFactory, dataTypeService, localizationService, textService, shortStringHelper) { _textService = textService; _dataTypeService = dataTypeService; @@ -33,7 +33,7 @@ namespace Umbraco.Web.PropertyEditors protected override IDataValueEditor CreateValueEditor() { - return new MultipleValueEditor(Logger, _dataTypeService, _localizationService, _textService, _shortStringHelper, Attribute); + return new MultipleValueEditor(LoggerFactory.CreateLogger(), _dataTypeService, _localizationService, _textService, _shortStringHelper, Attribute); } protected override IConfigurationEditor CreateConfigurationEditor() => new DropDownFlexibleConfigurationEditor(_textService, _ioHelper); diff --git a/src/Umbraco.Infrastructure/PropertyEditors/EmailAddressPropertyEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/EmailAddressPropertyEditor.cs index c5bcaf0f86..2cdfd4f7eb 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/EmailAddressPropertyEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/EmailAddressPropertyEditor.cs @@ -1,6 +1,6 @@ -using Umbraco.Core; +using Microsoft.Extensions.Logging; +using Umbraco.Core; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.PropertyEditors; using Umbraco.Core.PropertyEditors.Validators; using Umbraco.Core.Services; @@ -22,13 +22,13 @@ namespace Umbraco.Web.PropertyEditors /// The constructor will setup the property editor based on the attribute if one is found /// public EmailAddressPropertyEditor( - ILogger logger, + ILoggerFactory loggerFactory, IIOHelper ioHelper, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper) - : base(logger, dataTypeService, localizationService, localizedTextService, shortStringHelper) + : base(loggerFactory, dataTypeService, localizationService, localizedTextService, shortStringHelper) { _ioHelper = ioHelper; } diff --git a/src/Umbraco.Infrastructure/PropertyEditors/FileUploadPropertyEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/FileUploadPropertyEditor.cs index ab0b943a2f..448e2043c0 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/FileUploadPropertyEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/FileUploadPropertyEditor.cs @@ -1,12 +1,12 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Umbraco.Core; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Media; using Umbraco.Core.Models; using Umbraco.Core.PropertyEditors; @@ -32,7 +32,7 @@ namespace Umbraco.Web.PropertyEditors private readonly ILocalizedTextService _localizedTextService; public FileUploadPropertyEditor( - ILogger logger, + ILoggerFactory loggerFactory, IMediaFileSystem mediaFileSystem, IOptions contentSettings, IDataTypeService dataTypeService, @@ -40,7 +40,7 @@ namespace Umbraco.Web.PropertyEditors ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper, UploadAutoFillProperties uploadAutoFillProperties) - : base(logger, dataTypeService, localizationService, localizedTextService, shortStringHelper) + : base(loggerFactory, dataTypeService, localizationService, localizedTextService, shortStringHelper) { _mediaFileSystem = mediaFileSystem ?? throw new ArgumentNullException(nameof(mediaFileSystem)); _contentSettings = contentSettings.Value; diff --git a/src/Umbraco.Infrastructure/PropertyEditors/GridPropertyEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/GridPropertyEditor.cs index e061766ebc..c34ce59fe6 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/GridPropertyEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/GridPropertyEditor.cs @@ -1,10 +1,10 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Newtonsoft.Json; using Umbraco.Core; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Media; using Umbraco.Core.Models; using Umbraco.Core.Models.Editors; @@ -36,7 +36,7 @@ namespace Umbraco.Web.PropertyEditors private readonly IImageUrlGenerator _imageUrlGenerator; public GridPropertyEditor( - ILogger logger, + ILoggerFactory loggerFactory, IUmbracoContextAccessor umbracoContextAccessor, IDataTypeService dataTypeService, ILocalizationService localizationService, @@ -47,7 +47,7 @@ namespace Umbraco.Web.PropertyEditors IIOHelper ioHelper, IShortStringHelper shortStringHelper, IImageUrlGenerator imageUrlGenerator) - : base(logger, dataTypeService, localizationService, localizedTextService, shortStringHelper) + : base(loggerFactory, dataTypeService, localizationService, localizedTextService, shortStringHelper) { _umbracoContextAccessor = umbracoContextAccessor; _ioHelper = ioHelper; diff --git a/src/Umbraco.Infrastructure/PropertyEditors/ImageCropperPropertyEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/ImageCropperPropertyEditor.cs index 84d85f795c..3434ee5bcb 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/ImageCropperPropertyEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/ImageCropperPropertyEditor.cs @@ -2,13 +2,13 @@ using System.Collections.Generic; using System.Linq; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Umbraco.Core; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Media; using Umbraco.Core.Models; using Umbraco.Core.PropertyEditors; @@ -36,12 +36,13 @@ namespace Umbraco.Web.PropertyEditors private readonly IDataTypeService _dataTypeService; private readonly IIOHelper _ioHelper; private readonly UploadAutoFillProperties _autoFillProperties; + private readonly ILogger _logger; /// /// Initializes a new instance of the class. /// public ImageCropperPropertyEditor( - ILogger logger, + ILoggerFactory loggerFactory, IMediaFileSystem mediaFileSystem, IOptions contentSettings, IDataTypeService dataTypeService, @@ -50,13 +51,14 @@ namespace Umbraco.Web.PropertyEditors IShortStringHelper shortStringHelper, ILocalizedTextService localizedTextService, UploadAutoFillProperties uploadAutoFillProperties) - : base(logger, dataTypeService, localizationService, localizedTextService, shortStringHelper) + : base(loggerFactory, dataTypeService, localizationService, localizedTextService, shortStringHelper) { _mediaFileSystem = mediaFileSystem ?? throw new ArgumentNullException(nameof(mediaFileSystem)); _contentSettings = contentSettings.Value ?? throw new ArgumentNullException(nameof(contentSettings)); _dataTypeService = dataTypeService ?? throw new ArgumentNullException(nameof(dataTypeService)); _ioHelper = ioHelper ?? throw new ArgumentNullException(nameof(ioHelper)); _autoFillProperties = uploadAutoFillProperties ?? throw new ArgumentNullException(nameof(uploadAutoFillProperties)); + _logger = loggerFactory.CreateLogger(); } public bool TryGetMediaPath(string alias, object value, out string mediaPath) @@ -74,7 +76,7 @@ namespace Umbraco.Web.PropertyEditors /// Creates the corresponding property value editor. /// /// The corresponding property value editor. - protected override IDataValueEditor CreateValueEditor() => new ImageCropperPropertyValueEditor(Attribute, Logger, _mediaFileSystem, DataTypeService, LocalizationService, LocalizedTextService, ShortStringHelper, _contentSettings); + protected override IDataValueEditor CreateValueEditor() => new ImageCropperPropertyValueEditor(Attribute, LoggerFactory.CreateLogger(), _mediaFileSystem, DataTypeService, LocalizationService, LocalizedTextService, ShortStringHelper, _contentSettings); /// /// Creates the corresponding preValue editor. @@ -111,7 +113,7 @@ namespace Umbraco.Web.PropertyEditors catch (Exception ex) { if (writeLog) - Logger.Error(ex, "Could not parse image cropper value '{Json}'", value); + _logger.LogError(ex, "Could not parse image cropper value '{Json}'", value); return null; } } diff --git a/src/Umbraco.Infrastructure/PropertyEditors/ImageCropperPropertyValueEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/ImageCropperPropertyValueEditor.cs index 8f88c301d1..6a1f3072d4 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/ImageCropperPropertyValueEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/ImageCropperPropertyValueEditor.cs @@ -1,10 +1,10 @@ using System; +using Microsoft.Extensions.Logging; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Umbraco.Core; using Umbraco.Core.Configuration.Models; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Editors; using Umbraco.Core.PropertyEditors; @@ -20,13 +20,13 @@ namespace Umbraco.Web.PropertyEditors /// internal class ImageCropperPropertyValueEditor : DataValueEditor // TODO: core vs web? { - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IMediaFileSystem _mediaFileSystem; private readonly ContentSettings _contentSettings; public ImageCropperPropertyValueEditor( DataEditorAttribute attribute, - ILogger logger, + ILogger logger, IMediaFileSystem mediaFileSystem, IDataTypeService dataTypeService, ILocalizationService localizationService, @@ -90,7 +90,7 @@ namespace Umbraco.Web.PropertyEditors catch (Exception ex) { // for some reason the value is invalid so continue as if there was no value there - _logger.Warn(ex, "Could not parse current db value to a JObject."); + _logger.LogWarning(ex, "Could not parse current db value to a JObject."); } if (string.IsNullOrWhiteSpace(currentPath) == false) currentPath = _mediaFileSystem.GetRelativePath(currentPath); diff --git a/src/Umbraco.Infrastructure/PropertyEditors/IntegerPropertyEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/IntegerPropertyEditor.cs index 49e49e005a..417ec112d7 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/IntegerPropertyEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/IntegerPropertyEditor.cs @@ -1,5 +1,5 @@ -using Umbraco.Core; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; +using Umbraco.Core; using Umbraco.Core.PropertyEditors; using Umbraco.Core.PropertyEditors.Validators; using Umbraco.Core.Services; @@ -18,8 +18,8 @@ namespace Umbraco.Web.PropertyEditors ValueType = ValueTypes.Integer)] public class IntegerPropertyEditor : DataEditor { - public IntegerPropertyEditor(ILogger logger, IDataTypeService dataTypeService, ILocalizationService localizationService, IShortStringHelper shortStringHelper, ILocalizedTextService localizedTextService) - : base(logger, dataTypeService, localizationService,localizedTextService, shortStringHelper) + public IntegerPropertyEditor(ILoggerFactory loggerFactory, IDataTypeService dataTypeService, ILocalizationService localizationService, IShortStringHelper shortStringHelper, ILocalizedTextService localizedTextService) + : base(loggerFactory, dataTypeService, localizationService,localizedTextService, shortStringHelper) { } /// diff --git a/src/Umbraco.Infrastructure/PropertyEditors/LabelPropertyEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/LabelPropertyEditor.cs index f91c8efdd1..639a9c928d 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/LabelPropertyEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/LabelPropertyEditor.cs @@ -1,7 +1,5 @@ -using Umbraco.Composing; -using Umbraco.Core.Composing; +using Microsoft.Extensions.Logging; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Services; using Umbraco.Core.Strings; @@ -23,8 +21,8 @@ namespace Umbraco.Core.PropertyEditors /// /// Initializes a new instance of the class. /// - public LabelPropertyEditor(ILogger logger, IIOHelper ioHelper, IDataTypeService dataTypeService, ILocalizedTextService localizedTextService, ILocalizationService localizationService, IShortStringHelper shortStringHelper) - : base(logger, dataTypeService, localizationService, localizedTextService, shortStringHelper) + public LabelPropertyEditor(ILoggerFactory loggerFactory, IIOHelper ioHelper, IDataTypeService dataTypeService, ILocalizedTextService localizedTextService, ILocalizationService localizationService, IShortStringHelper shortStringHelper) + : base(loggerFactory, dataTypeService, localizationService, localizedTextService, shortStringHelper) { _ioHelper = ioHelper; } diff --git a/src/Umbraco.Infrastructure/PropertyEditors/ListViewPropertyEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/ListViewPropertyEditor.cs index f46743f0cc..e01258eb80 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/ListViewPropertyEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/ListViewPropertyEditor.cs @@ -1,6 +1,6 @@ -using Umbraco.Core; +using Microsoft.Extensions.Logging; +using Umbraco.Core; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; using Umbraco.Core.Strings; @@ -24,15 +24,15 @@ namespace Umbraco.Web.PropertyEditors /// /// Initializes a new instance of the class. /// - /// + /// public ListViewPropertyEditor( - ILogger logger, + ILoggerFactory loggerFactory, IIOHelper iioHelper, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper) - : base(logger, dataTypeService, localizationService, localizedTextService, shortStringHelper) + : base(loggerFactory, dataTypeService, localizationService, localizedTextService, shortStringHelper) { _iioHelper = iioHelper; } diff --git a/src/Umbraco.Infrastructure/PropertyEditors/MarkdownPropertyEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/MarkdownPropertyEditor.cs index 167b05df53..ab4e6f3d97 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/MarkdownPropertyEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/MarkdownPropertyEditor.cs @@ -1,6 +1,6 @@ -using Umbraco.Core; +using Microsoft.Extensions.Logging; +using Umbraco.Core; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; using Umbraco.Core.Strings; @@ -25,13 +25,13 @@ namespace Umbraco.Web.PropertyEditors /// Initializes a new instance of the class. /// public MarkdownPropertyEditor( - ILogger logger, + ILoggerFactory loggerFactory, IIOHelper ioHelper, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper) - : base(logger, dataTypeService, localizationService, localizedTextService, shortStringHelper) + : base(loggerFactory, dataTypeService, localizationService, localizedTextService, shortStringHelper) { _ioHelper = ioHelper; } diff --git a/src/Umbraco.Infrastructure/PropertyEditors/MediaPickerPropertyEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/MediaPickerPropertyEditor.cs index f0c5110e1e..476674b1ff 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/MediaPickerPropertyEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/MediaPickerPropertyEditor.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Models.Editors; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; @@ -28,13 +28,13 @@ namespace Umbraco.Web.PropertyEditors /// Initializes a new instance of the class. /// public MediaPickerPropertyEditor( - ILogger logger, + ILoggerFactory loggerFactory, IDataTypeService dataTypeService, ILocalizationService localizationService, IIOHelper ioHelper, IShortStringHelper shortStringHelper, ILocalizedTextService localizedTextService) - : base(logger, dataTypeService, localizationService, localizedTextService, shortStringHelper) + : base(loggerFactory, dataTypeService, localizationService, localizedTextService, shortStringHelper) { _ioHelper = ioHelper; } diff --git a/src/Umbraco.Infrastructure/PropertyEditors/MemberGroupPickerPropertyEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/MemberGroupPickerPropertyEditor.cs index fd1bd0d102..eb50d02284 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/MemberGroupPickerPropertyEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/MemberGroupPickerPropertyEditor.cs @@ -1,5 +1,5 @@ -using Umbraco.Core; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; +using Umbraco.Core; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; using Umbraco.Core.Strings; @@ -16,12 +16,12 @@ namespace Umbraco.Web.PropertyEditors public class MemberGroupPickerPropertyEditor : DataEditor { public MemberGroupPickerPropertyEditor( - ILogger logger, + ILoggerFactory loggerFactory, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper) - : base(logger, dataTypeService, localizationService, localizedTextService, shortStringHelper) + : base(loggerFactory, dataTypeService, localizationService, localizedTextService, shortStringHelper) { } } } diff --git a/src/Umbraco.Infrastructure/PropertyEditors/MemberPickerPropertyEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/MemberPickerPropertyEditor.cs index 092e790e51..3676340aee 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/MemberPickerPropertyEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/MemberPickerPropertyEditor.cs @@ -1,5 +1,5 @@ -using Umbraco.Core; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; +using Umbraco.Core; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; using Umbraco.Core.Strings; @@ -16,12 +16,12 @@ namespace Umbraco.Web.PropertyEditors public class MemberPickerPropertyEditor : DataEditor { public MemberPickerPropertyEditor( - ILogger logger, + ILoggerFactory loggerFactory, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper) - : base(logger, dataTypeService, localizationService, localizedTextService, shortStringHelper) + : base(loggerFactory, dataTypeService, localizationService, localizedTextService, shortStringHelper) { } protected override IConfigurationEditor CreateConfigurationEditor() => new MemberPickerConfiguration(); diff --git a/src/Umbraco.Infrastructure/PropertyEditors/MultiNodeTreePickerPropertyEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/MultiNodeTreePickerPropertyEditor.cs index f1ed4e6c44..fc80aabdd9 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/MultiNodeTreePickerPropertyEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/MultiNodeTreePickerPropertyEditor.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Models.Editors; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; @@ -20,8 +20,8 @@ namespace Umbraco.Web.PropertyEditors { private readonly IIOHelper _ioHelper; - public MultiNodeTreePickerPropertyEditor(ILogger logger, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IIOHelper ioHelper, IShortStringHelper shortStringHelper) - : base(logger, dataTypeService, localizationService, localizedTextService, shortStringHelper) + public MultiNodeTreePickerPropertyEditor(ILoggerFactory loggerFactory, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IIOHelper ioHelper, IShortStringHelper shortStringHelper) + : base(loggerFactory, dataTypeService, localizationService, localizedTextService, shortStringHelper) { _ioHelper = ioHelper; } diff --git a/src/Umbraco.Infrastructure/PropertyEditors/MultiUrlPickerPropertyEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/MultiUrlPickerPropertyEditor.cs index 1be4067763..e88849002b 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/MultiUrlPickerPropertyEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/MultiUrlPickerPropertyEditor.cs @@ -1,8 +1,8 @@ using System; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.IO; using Umbraco.Core.PropertyEditors; -using Umbraco.Core.Logging; using Umbraco.Core.Services; using Umbraco.Core.Strings; using Umbraco.Web.PublishedCache; @@ -26,8 +26,8 @@ namespace Umbraco.Web.PropertyEditors private readonly IUmbracoContextAccessor _umbracoContextAccessor; private readonly IPublishedUrlProvider _publishedUrlProvider; - public MultiUrlPickerPropertyEditor(ILogger logger, Lazy entityService, IPublishedSnapshotAccessor publishedSnapshotAccessor, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IIOHelper ioHelper, IShortStringHelper shortStringHelper, IUmbracoContextAccessor umbracoContextAccessor, IPublishedUrlProvider publishedUrlProvider) - : base(logger, dataTypeService, localizationService, localizedTextService, shortStringHelper, EditorType.PropertyValue) + public MultiUrlPickerPropertyEditor(ILoggerFactory loggerFactory, Lazy entityService, IPublishedSnapshotAccessor publishedSnapshotAccessor, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IIOHelper ioHelper, IShortStringHelper shortStringHelper, IUmbracoContextAccessor umbracoContextAccessor, IPublishedUrlProvider publishedUrlProvider) + : base(loggerFactory, dataTypeService, localizationService, localizedTextService, shortStringHelper, EditorType.PropertyValue) { _entityService = entityService ?? throw new ArgumentNullException(nameof(entityService)); _publishedSnapshotAccessor = publishedSnapshotAccessor ?? throw new ArgumentNullException(nameof(publishedSnapshotAccessor)); @@ -38,6 +38,6 @@ namespace Umbraco.Web.PropertyEditors protected override IConfigurationEditor CreateConfigurationEditor() => new MultiUrlPickerConfigurationEditor(_ioHelper); - protected override IDataValueEditor CreateValueEditor() => new MultiUrlPickerValueEditor(_entityService.Value, _publishedSnapshotAccessor, Logger, DataTypeService, LocalizationService, LocalizedTextService, ShortStringHelper, Attribute, _umbracoContextAccessor, _publishedUrlProvider); + protected override IDataValueEditor CreateValueEditor() => new MultiUrlPickerValueEditor(_entityService.Value, _publishedSnapshotAccessor, LoggerFactory.CreateLogger(), DataTypeService, LocalizationService, LocalizedTextService, ShortStringHelper, Attribute, _umbracoContextAccessor, _publishedUrlProvider); } } diff --git a/src/Umbraco.Infrastructure/PropertyEditors/MultiUrlPickerValueEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/MultiUrlPickerValueEditor.cs index 63814c05c7..b6afa0a1b5 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/MultiUrlPickerValueEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/MultiUrlPickerValueEditor.cs @@ -3,8 +3,8 @@ using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; +using Microsoft.Extensions.Logging; using Umbraco.Core; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Editors; using Umbraco.Core.Models.Entities; @@ -20,12 +20,12 @@ namespace Umbraco.Web.PropertyEditors public class MultiUrlPickerValueEditor : DataValueEditor, IDataValueReference { private readonly IEntityService _entityService; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IUmbracoContextAccessor _umbracoContextAccessor; private readonly IPublishedUrlProvider _publishedUrlProvider; private readonly IPublishedSnapshotAccessor _publishedSnapshotAccessor; - public MultiUrlPickerValueEditor(IEntityService entityService, IPublishedSnapshotAccessor publishedSnapshotAccessor, ILogger logger, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper, DataEditorAttribute attribute, IUmbracoContextAccessor umbracoContextAccessor, IPublishedUrlProvider publishedUrlProvider) + public MultiUrlPickerValueEditor(IEntityService entityService, IPublishedSnapshotAccessor publishedSnapshotAccessor, ILogger logger, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper, DataEditorAttribute attribute, IUmbracoContextAccessor umbracoContextAccessor, IPublishedUrlProvider publishedUrlProvider) : base(dataTypeService, localizationService, localizedTextService, shortStringHelper, attribute) { _entityService = entityService ?? throw new ArgumentNullException(nameof(entityService)); @@ -122,7 +122,7 @@ namespace Umbraco.Web.PropertyEditors } catch (Exception ex) { - _logger.Error("Error getting links", ex); + _logger.LogError("Error getting links", ex); } return base.ToEditor(property, culture, segment); @@ -157,7 +157,7 @@ namespace Umbraco.Web.PropertyEditors } catch (Exception ex) { - _logger.Error("Error saving links", ex); + _logger.LogError("Error saving links", ex); } return base.FromEditor(editorValue, currentValue); diff --git a/src/Umbraco.Infrastructure/PropertyEditors/MultipleTextStringPropertyEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/MultipleTextStringPropertyEditor.cs index 8aba505aed..b4e1287315 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/MultipleTextStringPropertyEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/MultipleTextStringPropertyEditor.cs @@ -2,11 +2,11 @@ using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; +using Microsoft.Extensions.Logging; using Newtonsoft.Json.Linq; using Umbraco.Core; using Umbraco.Core.Exceptions; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Editors; using Umbraco.Core.PropertyEditors; @@ -36,8 +36,8 @@ namespace Umbraco.Web.PropertyEditors /// /// Initializes a new instance of the class. /// - public MultipleTextStringPropertyEditor(ILogger logger, IIOHelper ioHelper, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper) - : base(logger, dataTypeService, localizationService, localizedTextService, shortStringHelper) + public MultipleTextStringPropertyEditor(ILoggerFactory loggerFactory, IIOHelper ioHelper, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper) + : base(loggerFactory, dataTypeService, localizationService, localizedTextService, shortStringHelper) { _ioHelper = ioHelper; _dataTypeService = dataTypeService; diff --git a/src/Umbraco.Infrastructure/PropertyEditors/MultipleValueEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/MultipleValueEditor.cs index 40525bff79..a960ac51ad 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/MultipleValueEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/MultipleValueEditor.cs @@ -1,8 +1,8 @@ using System; using System.Linq; +using Microsoft.Extensions.Logging; using Newtonsoft.Json; using Newtonsoft.Json.Linq; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; @@ -18,9 +18,9 @@ namespace Umbraco.Web.PropertyEditors /// public class MultipleValueEditor : DataValueEditor { - private readonly ILogger _logger; + private readonly ILogger _logger; - public MultipleValueEditor(ILogger logger, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper, DataEditorAttribute attribute) + public MultipleValueEditor(ILogger logger, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper, DataEditorAttribute attribute) : base(dataTypeService, localizationService, localizedTextService, shortStringHelper, attribute) { _logger = logger; diff --git a/src/Umbraco.Infrastructure/PropertyEditors/NestedContentPropertyEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/NestedContentPropertyEditor.cs index 01a03d36e3..b257f69e98 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/NestedContentPropertyEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/NestedContentPropertyEditor.cs @@ -1,11 +1,11 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Umbraco.Core; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Editors; using Umbraco.Core.PropertyEditors; @@ -35,7 +35,7 @@ namespace Umbraco.Web.PropertyEditors public const string ContentTypeAliasPropertyKey = "ncContentTypeAlias"; public NestedContentPropertyEditor( - ILogger logger, + ILoggerFactory loggerFactory, Lazy propertyEditors, IDataTypeService dataTypeService, ILocalizationService localizationService, @@ -43,7 +43,7 @@ namespace Umbraco.Web.PropertyEditors IIOHelper ioHelper, IShortStringHelper shortStringHelper, ILocalizedTextService localizedTextService) - : base (logger, dataTypeService, localizationService, localizedTextService, shortStringHelper) + : base (loggerFactory, dataTypeService, localizationService, localizedTextService, shortStringHelper) { _propertyEditors = propertyEditors; _contentTypeService = contentTypeService; @@ -62,14 +62,14 @@ namespace Umbraco.Web.PropertyEditors #region Value Editor - protected override IDataValueEditor CreateValueEditor() => new NestedContentPropertyValueEditor(DataTypeService, LocalizationService, LocalizedTextService, _contentTypeService, ShortStringHelper, Attribute, PropertyEditors, Logger); + protected override IDataValueEditor CreateValueEditor() => new NestedContentPropertyValueEditor(DataTypeService, LocalizationService, LocalizedTextService, _contentTypeService, ShortStringHelper, Attribute, PropertyEditors, LoggerFactory.CreateLogger()); internal class NestedContentPropertyValueEditor : DataValueEditor, IDataValueReference { private readonly PropertyEditorCollection _propertyEditors; private readonly IContentTypeService _contentTypeService; private readonly IDataTypeService _dataTypeService; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly NestedContentValues _nestedContentValues; private readonly Lazy> _contentTypes; @@ -82,7 +82,7 @@ namespace Umbraco.Web.PropertyEditors IShortStringHelper shortStringHelper, DataEditorAttribute attribute, PropertyEditorCollection propertyEditors, - ILogger logger) + ILogger logger) : base(dataTypeService, localizationService, localizedTextService, shortStringHelper, attribute) { _propertyEditors = propertyEditors; @@ -143,7 +143,7 @@ namespace Umbraco.Web.PropertyEditors { // deal with weird situations by ignoring them (no comment) row.RawPropertyValues.Remove(prop.Key); - _logger.Warn( + _logger.LogWarning( ex, "ConvertDbToString removed property value {PropertyKey} in row {RowId} for property type {PropertyTypeAlias}", prop.Key, row.Id, propertyType.Alias); @@ -212,7 +212,7 @@ namespace Umbraco.Web.PropertyEditors { // deal with weird situations by ignoring them (no comment) row.RawPropertyValues.Remove(prop.Key); - _logger.Warn( + _logger.LogWarning( ex, "ToEditor removed property value {PropertyKey} in row {RowId} for property type {PropertyTypeAlias}", prop.Key, row.Id, property.PropertyType.Alias); diff --git a/src/Umbraco.Infrastructure/PropertyEditors/ParameterEditors/ContentTypeParameterEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/ParameterEditors/ContentTypeParameterEditor.cs index 726963b9c5..2da9e184c3 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/ParameterEditors/ContentTypeParameterEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/ParameterEditors/ContentTypeParameterEditor.cs @@ -1,4 +1,4 @@ -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; using Umbraco.Core.Strings; @@ -19,12 +19,12 @@ namespace Umbraco.Web.PropertyEditors.ParameterEditors /// Initializes a new instance of the class. /// public ContentTypeParameterEditor( - ILogger logger, + ILoggerFactory loggerFactory, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper) - : base(logger, dataTypeService, localizationService, localizedTextService, shortStringHelper) + : base(loggerFactory, dataTypeService, localizationService, localizedTextService, shortStringHelper) { // configure DefaultConfiguration.Add("multiple", false); diff --git a/src/Umbraco.Infrastructure/PropertyEditors/ParameterEditors/MultipleContentPickerParameterEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/ParameterEditors/MultipleContentPickerParameterEditor.cs index a514a47a01..d416cf111a 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/ParameterEditors/MultipleContentPickerParameterEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/ParameterEditors/MultipleContentPickerParameterEditor.cs @@ -1,5 +1,5 @@ -using Umbraco.Core; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; +using Umbraco.Core; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; using Umbraco.Core.Strings; @@ -20,12 +20,12 @@ namespace Umbraco.Web.PropertyEditors.ParameterEditors /// Initializes a new instance of the class. /// public MultipleContentPickerParameterEditor( - ILogger logger, + ILoggerFactory loggerFactory, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper) - : base(logger, dataTypeService, localizationService, localizedTextService, shortStringHelper) + : base(loggerFactory, dataTypeService, localizationService, localizedTextService, shortStringHelper) { // configure DefaultConfiguration.Add("multiPicker", "1"); diff --git a/src/Umbraco.Infrastructure/PropertyEditors/ParameterEditors/MultipleContentTypeParameterEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/ParameterEditors/MultipleContentTypeParameterEditor.cs index 7097f951c6..613d6a6a5e 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/ParameterEditors/MultipleContentTypeParameterEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/ParameterEditors/MultipleContentTypeParameterEditor.cs @@ -1,4 +1,4 @@ -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; using Umbraco.Core.Strings; @@ -13,12 +13,12 @@ namespace Umbraco.Web.PropertyEditors.ParameterEditors public class MultipleContentTypeParameterEditor : DataEditor { public MultipleContentTypeParameterEditor( - ILogger logger, + ILoggerFactory loggerFactory, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper) - : base(logger, dataTypeService, localizationService, localizedTextService, shortStringHelper) + : base(loggerFactory, dataTypeService, localizationService, localizedTextService, shortStringHelper) { // configure DefaultConfiguration.Add("multiple", true); diff --git a/src/Umbraco.Infrastructure/PropertyEditors/ParameterEditors/MultipleMediaPickerParameterEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/ParameterEditors/MultipleMediaPickerParameterEditor.cs index 7b6a965706..73a3b42610 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/ParameterEditors/MultipleMediaPickerParameterEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/ParameterEditors/MultipleMediaPickerParameterEditor.cs @@ -1,5 +1,5 @@ using Umbraco.Core; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; using Umbraco.Core.Strings; @@ -20,12 +20,13 @@ namespace Umbraco.Web.PropertyEditors.ParameterEditors /// /// Initializes a new instance of the class. /// - public MultipleMediaPickerParameterEditor(ILogger logger, + public MultipleMediaPickerParameterEditor( + ILoggerFactory loggerFactory, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper) - : base(logger, dataTypeService, localizationService, localizedTextService, shortStringHelper) + : base(loggerFactory, dataTypeService, localizationService, localizedTextService, shortStringHelper) { DefaultConfiguration.Add("multiPicker", "1"); } diff --git a/src/Umbraco.Infrastructure/PropertyEditors/ParameterEditors/MultiplePropertyGroupParameterEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/ParameterEditors/MultiplePropertyGroupParameterEditor.cs index da98492442..16cd596fc8 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/ParameterEditors/MultiplePropertyGroupParameterEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/ParameterEditors/MultiplePropertyGroupParameterEditor.cs @@ -1,4 +1,4 @@ -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; using Umbraco.Core.Strings; @@ -13,12 +13,12 @@ namespace Umbraco.Web.PropertyEditors.ParameterEditors public class MultiplePropertyGroupParameterEditor : DataEditor { public MultiplePropertyGroupParameterEditor( - ILogger logger, + ILoggerFactory loggerFactory, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper) - : base(logger, dataTypeService, localizationService, localizedTextService, shortStringHelper) + : base(loggerFactory, dataTypeService, localizationService, localizedTextService, shortStringHelper) { // configure DefaultConfiguration.Add("multiple", true); diff --git a/src/Umbraco.Infrastructure/PropertyEditors/ParameterEditors/MultiplePropertyTypeParameterEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/ParameterEditors/MultiplePropertyTypeParameterEditor.cs index 46a5652455..e9576fab02 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/ParameterEditors/MultiplePropertyTypeParameterEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/ParameterEditors/MultiplePropertyTypeParameterEditor.cs @@ -1,4 +1,4 @@ -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; using Umbraco.Core.Strings; @@ -12,12 +12,13 @@ namespace Umbraco.Web.PropertyEditors.ParameterEditors "entitypicker")] public class MultiplePropertyTypeParameterEditor : DataEditor { - public MultiplePropertyTypeParameterEditor(ILogger logger, + public MultiplePropertyTypeParameterEditor( + ILoggerFactory loggerFactory, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper) - : base(logger, dataTypeService, localizationService, localizedTextService, shortStringHelper) + : base(loggerFactory, dataTypeService, localizationService, localizedTextService, shortStringHelper) { // configure DefaultConfiguration.Add("multiple", "1"); diff --git a/src/Umbraco.Infrastructure/PropertyEditors/ParameterEditors/PropertyGroupParameterEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/ParameterEditors/PropertyGroupParameterEditor.cs index d331fee6ee..345afa3b46 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/ParameterEditors/PropertyGroupParameterEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/ParameterEditors/PropertyGroupParameterEditor.cs @@ -1,4 +1,4 @@ -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; using Umbraco.Core.Strings; @@ -13,12 +13,12 @@ namespace Umbraco.Web.PropertyEditors.ParameterEditors public class PropertyGroupParameterEditor : DataEditor { public PropertyGroupParameterEditor( - ILogger logger, + ILoggerFactory loggerFactory, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper) - : base(logger, dataTypeService, localizationService, localizedTextService, shortStringHelper) + : base(loggerFactory, dataTypeService, localizationService, localizedTextService, shortStringHelper) { // configure DefaultConfiguration.Add("multiple", "0"); diff --git a/src/Umbraco.Infrastructure/PropertyEditors/ParameterEditors/PropertyTypeParameterEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/ParameterEditors/PropertyTypeParameterEditor.cs index affcd4738d..be682a35d3 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/ParameterEditors/PropertyTypeParameterEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/ParameterEditors/PropertyTypeParameterEditor.cs @@ -1,4 +1,4 @@ -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; using Umbraco.Core.Strings; @@ -13,12 +13,12 @@ namespace Umbraco.Web.PropertyEditors.ParameterEditors public class PropertyTypeParameterEditor : DataEditor { public PropertyTypeParameterEditor( - ILogger logger, + ILoggerFactory loggerFactory, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper) - : base(logger, dataTypeService, localizationService, localizedTextService, shortStringHelper) + : base(loggerFactory, dataTypeService, localizationService, localizedTextService, shortStringHelper) { // configure DefaultConfiguration.Add("multiple", "0"); diff --git a/src/Umbraco.Infrastructure/PropertyEditors/RadioButtonsPropertyEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/RadioButtonsPropertyEditor.cs index f6b24e5859..6a863b1dd1 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/RadioButtonsPropertyEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/RadioButtonsPropertyEditor.cs @@ -1,6 +1,6 @@ -using Umbraco.Core; +using Microsoft.Extensions.Logging; +using Umbraco.Core; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; using Umbraco.Core.Strings; @@ -25,13 +25,13 @@ namespace Umbraco.Web.PropertyEditors /// The constructor will setup the property editor based on the attribute if one is found /// public RadioButtonsPropertyEditor( - ILogger logger, + ILoggerFactory loggerFactory, IIOHelper ioHelper, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper) - : base(logger, dataTypeService, localizationService,localizedTextService, shortStringHelper) + : base(loggerFactory, dataTypeService, localizationService,localizedTextService, shortStringHelper) { _ioHelper = ioHelper; } diff --git a/src/Umbraco.Infrastructure/PropertyEditors/RichTextEditorPastedImages.cs b/src/Umbraco.Infrastructure/PropertyEditors/RichTextEditorPastedImages.cs index 58a280e5db..cd8b228a6f 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/RichTextEditorPastedImages.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/RichTextEditorPastedImages.cs @@ -1,11 +1,11 @@ using System; using System.Collections.Generic; using System.IO; +using Microsoft.Extensions.Logging; using HtmlAgilityPack; using Umbraco.Core; using Umbraco.Core.Exceptions; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Media; using Umbraco.Core.Models; using Umbraco.Core.Services; @@ -19,7 +19,7 @@ namespace Umbraco.Web.PropertyEditors public sealed class RichTextEditorPastedImages { private readonly IUmbracoContextAccessor _umbracoContextAccessor; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IIOHelper _ioHelper; private readonly IMediaService _mediaService; private readonly IContentTypeBaseServiceProvider _contentTypeBaseServiceProvider; @@ -29,7 +29,7 @@ namespace Umbraco.Web.PropertyEditors const string TemporaryImageDataAttribute = "data-tmpimg"; - public RichTextEditorPastedImages(IUmbracoContextAccessor umbracoContextAccessor, ILogger logger, IIOHelper ioHelper, IMediaService mediaService, IContentTypeBaseServiceProvider contentTypeBaseServiceProvider, IMediaFileSystem mediaFileSystem, IShortStringHelper shortStringHelper, IPublishedUrlProvider publishedUrlProvider) + public RichTextEditorPastedImages(IUmbracoContextAccessor umbracoContextAccessor, ILogger logger, IIOHelper ioHelper, IMediaService mediaService, IContentTypeBaseServiceProvider contentTypeBaseServiceProvider, IMediaFileSystem mediaFileSystem, IShortStringHelper shortStringHelper, IPublishedUrlProvider publishedUrlProvider) { _umbracoContextAccessor = umbracoContextAccessor ?? throw new ArgumentNullException(nameof(umbracoContextAccessor)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); @@ -144,7 +144,7 @@ namespace Umbraco.Web.PropertyEditors } catch (Exception ex) { - _logger.Error(typeof(HtmlImageSourceParser), ex, "Could not delete temp file or folder {FileName}", absoluteTempImagePath); + _logger.LogError(ex, "Could not delete temp file or folder {FileName}", absoluteTempImagePath); } } } diff --git a/src/Umbraco.Infrastructure/PropertyEditors/RichTextPropertyEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/RichTextPropertyEditor.cs index 2f283b2709..bf867ce648 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/RichTextPropertyEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/RichTextPropertyEditor.cs @@ -1,8 +1,8 @@ using System; using System.Collections.Generic; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Media; using Umbraco.Core.Models; using Umbraco.Core.Models.Editors; @@ -39,7 +39,7 @@ namespace Umbraco.Web.PropertyEditors /// The constructor will setup the property editor based on the attribute if one is found /// public RichTextPropertyEditor( - ILogger logger, + ILoggerFactory loggerFactory, IUmbracoContextAccessor umbracoContextAccessor, IDataTypeService dataTypeService, ILocalizationService localizationService, @@ -50,7 +50,7 @@ namespace Umbraco.Web.PropertyEditors IIOHelper ioHelper, ILocalizedTextService localizedTextService, IImageUrlGenerator imageUrlGenerator) - : base(logger, dataTypeService, localizationService, localizedTextService, shortStringHelper) + : base(loggerFactory, dataTypeService, localizationService, localizedTextService, shortStringHelper) { _umbracoContextAccessor = umbracoContextAccessor; _imageSourceParser = imageSourceParser; diff --git a/src/Umbraco.Infrastructure/PropertyEditors/SliderPropertyEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/SliderPropertyEditor.cs index 88bfc3f4e3..bb62c3461d 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/SliderPropertyEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/SliderPropertyEditor.cs @@ -1,6 +1,6 @@ -using Umbraco.Core; +using Microsoft.Extensions.Logging; +using Umbraco.Core; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; using Umbraco.Core.Strings; @@ -23,13 +23,13 @@ namespace Umbraco.Web.PropertyEditors /// Initializes a new instance of the class. /// public SliderPropertyEditor( - ILogger logger, + ILoggerFactory loggerFactory, IIOHelper ioHelper, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper) - : base(logger, dataTypeService, localizationService, localizedTextService, shortStringHelper) + : base(loggerFactory, dataTypeService, localizationService, localizedTextService, shortStringHelper) { _ioHelper = ioHelper; } diff --git a/src/Umbraco.Infrastructure/PropertyEditors/TagsPropertyEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/TagsPropertyEditor.cs index 7fccd3a15f..708f4d8c9f 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/TagsPropertyEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/TagsPropertyEditor.cs @@ -2,10 +2,10 @@ using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; +using Microsoft.Extensions.Logging; using Newtonsoft.Json.Linq; using Umbraco.Core; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Models.Editors; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; @@ -29,13 +29,13 @@ namespace Umbraco.Web.PropertyEditors public TagsPropertyEditor( ManifestValueValidatorCollection validators, - ILogger logger, + ILoggerFactory loggerFactory, IIOHelper ioHelper, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper) - : base(logger, dataTypeService, localizationService, localizedTextService, shortStringHelper) + : base(loggerFactory, dataTypeService, localizationService, localizedTextService, shortStringHelper) { _validators = validators; _ioHelper = ioHelper; diff --git a/src/Umbraco.Infrastructure/PropertyEditors/TextAreaPropertyEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/TextAreaPropertyEditor.cs index dd3c1fd350..8d173e58bc 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/TextAreaPropertyEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/TextAreaPropertyEditor.cs @@ -1,6 +1,6 @@ -using Umbraco.Core; +using Microsoft.Extensions.Logging; +using Umbraco.Core; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; using Umbraco.Core.Strings; @@ -28,8 +28,8 @@ namespace Umbraco.Web.PropertyEditors /// /// Initializes a new instance of the class. /// - public TextAreaPropertyEditor(ILogger logger, IDataTypeService dataTypeService, ILocalizationService localizationService, IIOHelper ioHelper, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper) - : base(logger, dataTypeService, localizationService, localizedTextService,shortStringHelper) + public TextAreaPropertyEditor(ILoggerFactory loggerFactory, IDataTypeService dataTypeService, ILocalizationService localizationService, IIOHelper ioHelper, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper) + : base(loggerFactory, dataTypeService, localizationService, localizedTextService,shortStringHelper) { _dataTypeService = dataTypeService; _localizationService = localizationService; diff --git a/src/Umbraco.Infrastructure/PropertyEditors/TextOnlyValueEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/TextOnlyValueEditor.cs index e53c673986..ec48cf8b57 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/TextOnlyValueEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/TextOnlyValueEditor.cs @@ -20,7 +20,6 @@ namespace Umbraco.Web.PropertyEditors /// A method used to format the database value to a value that can be used by the editor /// /// - /// /// /// /// diff --git a/src/Umbraco.Infrastructure/PropertyEditors/TextboxPropertyEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/TextboxPropertyEditor.cs index b89f5e228a..1ec87abe9b 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/TextboxPropertyEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/TextboxPropertyEditor.cs @@ -1,6 +1,6 @@ -using Umbraco.Core; +using Microsoft.Extensions.Logging; +using Umbraco.Core; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; using Umbraco.Core.Strings; @@ -27,8 +27,8 @@ namespace Umbraco.Web.PropertyEditors /// /// Initializes a new instance of the class. /// - public TextboxPropertyEditor(ILogger logger, IDataTypeService dataTypeService, ILocalizationService localizationService, IIOHelper ioHelper, IShortStringHelper shortStringHelper, ILocalizedTextService localizedTextService) - : base(logger, dataTypeService, localizationService,localizedTextService, shortStringHelper) + public TextboxPropertyEditor(ILoggerFactory loggerFactory, IDataTypeService dataTypeService, ILocalizationService localizationService, IIOHelper ioHelper, IShortStringHelper shortStringHelper, ILocalizedTextService localizedTextService) + : base(loggerFactory, dataTypeService, localizationService,localizedTextService, shortStringHelper) { _dataTypeService = dataTypeService; _localizationService = localizationService; diff --git a/src/Umbraco.Infrastructure/PropertyEditors/TrueFalsePropertyEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/TrueFalsePropertyEditor.cs index 0bfa5899c9..db72887fff 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/TrueFalsePropertyEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/TrueFalsePropertyEditor.cs @@ -1,6 +1,6 @@ -using Umbraco.Core; +using Microsoft.Extensions.Logging; +using Umbraco.Core; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; using Umbraco.Core.Strings; @@ -25,8 +25,8 @@ namespace Umbraco.Web.PropertyEditors /// /// Initializes a new instance of the class. /// - public TrueFalsePropertyEditor(ILogger logger, IDataTypeService dataTypeService, ILocalizationService localizationService, IIOHelper ioHelper, IShortStringHelper shortStringHelper, ILocalizedTextService localizedTextService) - : base(logger, dataTypeService, localizationService, localizedTextService, shortStringHelper) + public TrueFalsePropertyEditor(ILoggerFactory loggerFactory, IDataTypeService dataTypeService, ILocalizationService localizationService, IIOHelper ioHelper, IShortStringHelper shortStringHelper, ILocalizedTextService localizedTextService) + : base(loggerFactory, dataTypeService, localizationService, localizedTextService, shortStringHelper) { _ioHelper = ioHelper; } diff --git a/src/Umbraco.Infrastructure/PropertyEditors/UserPickerPropertyEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/UserPickerPropertyEditor.cs index 194924adf1..891fb54ee3 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/UserPickerPropertyEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/UserPickerPropertyEditor.cs @@ -1,5 +1,5 @@ -using Umbraco.Core; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; +using Umbraco.Core; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; using Umbraco.Core.Strings; @@ -16,12 +16,12 @@ namespace Umbraco.Web.PropertyEditors public class UserPickerPropertyEditor : DataEditor { public UserPickerPropertyEditor( - ILogger logger, + ILoggerFactory loggerFactory, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper) - : base(logger, dataTypeService, localizationService, localizedTextService, shortStringHelper) + : base(loggerFactory, dataTypeService, localizationService, localizedTextService, shortStringHelper) { } protected override IConfigurationEditor CreateConfigurationEditor() => new UserPickerConfiguration(); diff --git a/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/GridValueConverter.cs b/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/GridValueConverter.cs index 3a35bdfc9a..83866d958f 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/GridValueConverter.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/GridValueConverter.cs @@ -1,10 +1,10 @@ using System; using System.Linq; +using Microsoft.Extensions.Logging; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Umbraco.Core.Composing; using Umbraco.Core.Configuration.Grid; -using Umbraco.Core.Logging; using Umbraco.Core.Models.PublishedContent; using Umbraco.Composing; @@ -18,8 +18,8 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters { private readonly IGridConfig _config; - public GridValueConverter(PropertyEditorCollection propertyEditors, IGridConfig config) - : base(propertyEditors) + public GridValueConverter(PropertyEditorCollection propertyEditors, IGridConfig config, ILogger logger) + : base(propertyEditors, logger) { _config = config; } @@ -92,7 +92,7 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters } catch (Exception ex) { - Current.Logger.Error(ex, "Could not parse the string '{JsonString}' to a json object", sourceString); + Current.Logger.LogError(ex, "Could not parse the string '{JsonString}' to a json object", sourceString); } } diff --git a/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/ImageCropperValueConverter.cs b/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/ImageCropperValueConverter.cs index 0043eeed72..b27955210f 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/ImageCropperValueConverter.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/ImageCropperValueConverter.cs @@ -1,10 +1,8 @@ using System; using System.Globalization; +using Microsoft.Extensions.Logging; using Newtonsoft.Json; -using Umbraco.Core.Composing; -using Umbraco.Core.Logging; using Umbraco.Core.Models.PublishedContent; -using Umbraco.Composing; namespace Umbraco.Core.PropertyEditors.ValueConverters { @@ -14,6 +12,13 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters [DefaultPropertyValueConverter(typeof(JsonValueConverter))] public class ImageCropperValueConverter : PropertyValueConverterBase { + private readonly ILogger _logger; + + public ImageCropperValueConverter(ILogger logger) + { + _logger = logger; + } + /// public override bool IsConverter(IPublishedPropertyType propertyType) => propertyType.EditorAlias.InvariantEquals(Constants.PropertyEditors.Aliases.ImageCropper); @@ -44,7 +49,7 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters catch (Exception ex) { // cannot deserialize, assume it may be a raw image url - Current.Logger.Error(ex, "Could not deserialize string '{JsonString}' into an image cropper value.", sourceString); + _logger.LogError(ex, "Could not deserialize string '{JsonString}' into an image cropper value.", sourceString); value = new ImageCropperValue { Src = sourceString }; } diff --git a/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/JsonValueConverter.cs b/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/JsonValueConverter.cs index 3e6abdac64..f5228bd47e 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/JsonValueConverter.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/ValueConverters/JsonValueConverter.cs @@ -1,10 +1,8 @@ using System; +using Microsoft.Extensions.Logging; using Newtonsoft.Json; using Newtonsoft.Json.Linq; -using Umbraco.Core.Composing; -using Umbraco.Core.Logging; using Umbraco.Core.Models.PublishedContent; -using Umbraco.Composing; namespace Umbraco.Core.PropertyEditors.ValueConverters { @@ -18,13 +16,15 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters public class JsonValueConverter : PropertyValueConverterBase { private readonly PropertyEditorCollection _propertyEditors; + private readonly ILogger _logger; /// /// Initializes a new instance of the class. /// - public JsonValueConverter(PropertyEditorCollection propertyEditors) + public JsonValueConverter(PropertyEditorCollection propertyEditors, ILogger logger) { _propertyEditors = propertyEditors; + _logger = logger; } /// @@ -58,7 +58,7 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters } catch (Exception ex) { - Current.Logger.Error(ex, "Could not parse the string '{JsonString}' to a json object", sourceString); + _logger.LogError(ex, "Could not parse the string '{JsonString}' to a json object", sourceString); } } diff --git a/src/Umbraco.Infrastructure/PropertyEditors/VoidEditor.cs b/src/Umbraco.Infrastructure/PropertyEditors/VoidEditor.cs index f9a90a1323..e26cd4129a 100644 --- a/src/Umbraco.Infrastructure/PropertyEditors/VoidEditor.cs +++ b/src/Umbraco.Infrastructure/PropertyEditors/VoidEditor.cs @@ -1,5 +1,5 @@ -using Umbraco.Core.Composing; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; +using Umbraco.Core.Composing; using Umbraco.Core.Services; using Umbraco.Core.Strings; @@ -18,11 +18,11 @@ namespace Umbraco.Core.PropertyEditors /// Initializes a new instance of the class. /// /// An optional alias suffix. - /// A logger. + /// A logger factory. /// The default alias of the editor is "Umbraco.Void". When a suffix is provided, /// it is appended to the alias. Eg if the suffix is "Foo" the alias is "Umbraco.Void.Foo". - public VoidEditor(string aliasSuffix, ILogger logger, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper) - : base(logger, dataTypeService, localizationService, localizedTextService, shortStringHelper) + public VoidEditor(string aliasSuffix, ILoggerFactory loggerFactory, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper) + : base(loggerFactory, dataTypeService, localizationService, localizedTextService, shortStringHelper) { Alias = "Umbraco.Void"; if (string.IsNullOrWhiteSpace(aliasSuffix)) return; @@ -32,10 +32,10 @@ namespace Umbraco.Core.PropertyEditors /// /// Initializes a new instance of the class. /// - /// A logger. + /// A logger factory. /// The alias of the editor is "Umbraco.Void". - public VoidEditor(ILogger logger, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper) - : this(null, logger, dataTypeService, localizationService, localizedTextService, shortStringHelper) + public VoidEditor(ILoggerFactory loggerFactory, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper) + : this(null, loggerFactory, dataTypeService, localizationService, localizedTextService, shortStringHelper) { } } } diff --git a/src/Umbraco.Infrastructure/PublishedCache/PublishedContentTypeCache.cs b/src/Umbraco.Infrastructure/PublishedCache/PublishedContentTypeCache.cs index 1e798da3b2..4c1482c82c 100644 --- a/src/Umbraco.Infrastructure/PublishedCache/PublishedContentTypeCache.cs +++ b/src/Umbraco.Infrastructure/PublishedCache/PublishedContentTypeCache.cs @@ -2,10 +2,10 @@ using System.Collections.Generic; using System.Linq; using System.Threading; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.PublishedContent; using Umbraco.Core.Services; +using Microsoft.Extensions.Logging; namespace Umbraco.Web.PublishedCache { @@ -23,11 +23,11 @@ namespace Umbraco.Web.PublishedCache private readonly IMediaTypeService _mediaTypeService; private readonly IMemberTypeService _memberTypeService; private readonly IPublishedContentTypeFactory _publishedContentTypeFactory; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly ReaderWriterLockSlim _lock = new ReaderWriterLockSlim(); // default ctor - public PublishedContentTypeCache(IContentTypeService contentTypeService, IMediaTypeService mediaTypeService, IMemberTypeService memberTypeService, IPublishedContentTypeFactory publishedContentTypeFactory, ILogger logger) + public PublishedContentTypeCache(IContentTypeService contentTypeService, IMediaTypeService mediaTypeService, IMemberTypeService memberTypeService, IPublishedContentTypeFactory publishedContentTypeFactory, ILogger logger) { _contentTypeService = contentTypeService; _mediaTypeService = mediaTypeService; @@ -37,7 +37,7 @@ namespace Umbraco.Web.PublishedCache } // for unit tests ONLY - internal PublishedContentTypeCache(ILogger logger, IPublishedContentTypeFactory publishedContentTypeFactory) + internal PublishedContentTypeCache(ILogger logger, IPublishedContentTypeFactory publishedContentTypeFactory) { _logger = logger; _publishedContentTypeFactory = publishedContentTypeFactory; @@ -50,7 +50,7 @@ namespace Umbraco.Web.PublishedCache /// public void ClearAll() { - _logger.Debug("Clear all."); + _logger.LogDebug("Clear all."); try { @@ -72,7 +72,7 @@ namespace Umbraco.Web.PublishedCache /// An identifier. public void ClearContentType(int id) { - _logger.Debug("Clear content type w/id {ContentTypeId}", id); + _logger.LogDebug("Clear content type w/id {ContentTypeId}", id); try { @@ -107,7 +107,7 @@ namespace Umbraco.Web.PublishedCache /// A data type identifier. public void ClearDataType(int id) { - _logger.Debug("Clear data type w/id {DataTypeId}.", id); + _logger.LogDebug("Clear data type w/id {DataTypeId}.", id); // there is no recursion to handle here because a PublishedContentType contains *all* its // properties ie both its own properties and those that were inherited (it's based upon an diff --git a/src/Umbraco.Infrastructure/Routing/ContentFinderByConfigured404.cs b/src/Umbraco.Infrastructure/Routing/ContentFinderByConfigured404.cs index 5b7a720a40..8f68ec0a64 100644 --- a/src/Umbraco.Infrastructure/Routing/ContentFinderByConfigured404.cs +++ b/src/Umbraco.Infrastructure/Routing/ContentFinderByConfigured404.cs @@ -2,9 +2,9 @@ using System.Globalization; using System.Linq; using Examine; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Configuration.Models; -using Umbraco.Core.Logging; using Umbraco.Core.Models.PublishedContent; using Umbraco.Core.Services; @@ -15,13 +15,13 @@ namespace Umbraco.Web.Routing /// public class ContentFinderByConfigured404 : IContentLastChanceFinder { - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IEntityService _entityService; private readonly ContentSettings _contentSettings; private readonly IExamineManager _examineManager; public ContentFinderByConfigured404( - ILogger logger, + ILogger logger, IEntityService entityService, IOptions contentConfigSettings, IExamineManager examineManager) @@ -39,7 +39,7 @@ namespace Umbraco.Web.Routing /// A value indicating whether an Umbraco document was found and assigned. public bool TryFindContent(IPublishedRequest frequest) { - _logger.Debug("Looking for a page to handle 404."); + _logger.LogDebug("Looking for a page to handle 404."); // try to find a culture as best as we can var errorCulture = CultureInfo.CurrentUICulture; @@ -77,17 +77,17 @@ namespace Umbraco.Web.Routing if (error404.HasValue) { - _logger.Debug("Got id={ErrorNodeId}.", error404.Value); + _logger.LogDebug("Got id={ErrorNodeId}.", error404.Value); content = frequest.UmbracoContext.Content.GetById(error404.Value); - _logger.Debug(content == null + _logger.LogDebug(content == null ? "Could not find content with that id." : "Found corresponding content."); } else { - _logger.Debug("Got nothing."); + _logger.LogDebug("Got nothing."); } frequest.PublishedContent = content; diff --git a/src/Umbraco.Infrastructure/Routing/NotFoundHandlerHelper.cs b/src/Umbraco.Infrastructure/Routing/NotFoundHandlerHelper.cs index 459d95466d..ae50baa5b3 100644 --- a/src/Umbraco.Infrastructure/Routing/NotFoundHandlerHelper.cs +++ b/src/Umbraco.Infrastructure/Routing/NotFoundHandlerHelper.cs @@ -1,11 +1,11 @@ using System; using System.Globalization; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Composing; using Umbraco.Core; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Configuration.UmbracoSettings; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Services; using Umbraco.Core.Xml; @@ -108,7 +108,7 @@ namespace Umbraco.Web.Routing } catch (Exception ex) { - Current.Logger.Error(ex, "Could not parse xpath expression: {ContentXPath}", errorPage.ContentXPath); + Current.Logger.LogError(ex, "Could not parse xpath expression: {ContentXPath}", errorPage.ContentXPath); return null; } } diff --git a/src/Umbraco.Infrastructure/Runtime/CoreInitialComposer.cs b/src/Umbraco.Infrastructure/Runtime/CoreInitialComposer.cs index 7981d8c964..601a12ac1c 100644 --- a/src/Umbraco.Infrastructure/Runtime/CoreInitialComposer.cs +++ b/src/Umbraco.Infrastructure/Runtime/CoreInitialComposer.cs @@ -57,6 +57,8 @@ using Umbraco.Web.Templates; using Umbraco.Web.Trees; using IntegerValidator = Umbraco.Core.PropertyEditors.Validators.IntegerValidator; using TextStringValueConverter = Umbraco.Core.PropertyEditors.ValueConverters.TextStringValueConverter; +using Microsoft.Extensions.Logging; + namespace Umbraco.Core.Runtime { @@ -147,6 +149,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 e4b724089c..4f921aa0c7 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 Microsoft.Extensions.Options; using Umbraco.Core.Cache; using Umbraco.Core.Composing; @@ -37,7 +38,7 @@ namespace Umbraco.Core.Runtime ConnectionStrings connectionStrings, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, - ILogger logger, + ILoggerFactory loggerFactory, IProfiler profiler, IUmbracoBootPermissionChecker umbracoBootPermissionChecker, IHostingEnvironment hostingEnvironment, @@ -58,9 +59,10 @@ namespace Umbraco.Core.Runtime BackOfficeInfo = backOfficeInfo; DbProviderFactoryCreator = dbProviderFactoryCreator; + RuntimeLoggerFactory = loggerFactory; _umbracoBootPermissionChecker = umbracoBootPermissionChecker; - Logger = logger; + Logger = loggerFactory.CreateLogger(); MainDom = mainDom; TypeFinder = typeFinder; @@ -72,7 +74,9 @@ namespace Umbraco.Core.Runtime /// /// Gets the logger. /// - protected ILogger Logger { get; } + private ILogger Logger { get; } + + public ILoggerFactory RuntimeLoggerFactory { get; } protected IBackOfficeInfo BackOfficeInfo { get; } @@ -133,12 +137,12 @@ namespace Umbraco.Core.Runtime "Boot failed.")) { - Logger.Info("Booting site '{HostingSiteName}', app '{HostingApplicationId}', path '{HostingPhysicalPath}', server '{MachineName}'.", + Logger.LogInformation("Booting site '{HostingSiteName}', app '{HostingApplicationId}', path '{HostingPhysicalPath}', server '{MachineName}'.", HostingEnvironment?.SiteName, HostingEnvironment?.ApplicationId, HostingEnvironment?.ApplicationPhysicalPath, NetworkHelper.MachineName); - Logger.Debug("Runtime: {Runtime}", GetType().FullName); + Logger.LogDebug("Runtime: {Runtime}", GetType().FullName); AppDomain.CurrentDomain.SetData("DataDirectory", HostingEnvironment?.MapPathContentRoot(Constants.SystemDirectories.Data)); @@ -170,15 +174,15 @@ namespace Umbraco.Core.Runtime var databaseFactory = CreateDatabaseFactory(); // type finder/loader - var typeLoader = new TypeLoader(TypeFinder, AppCaches.RuntimeCache, new DirectoryInfo(HostingEnvironment.LocalTempPath), ProfilingLogger); + var typeLoader = new TypeLoader(TypeFinder, AppCaches.RuntimeCache, new DirectoryInfo(HostingEnvironment.LocalTempPath), RuntimeLoggerFactory.CreateLogger(), ProfilingLogger); // re-create the state object with the essential services - _state = new RuntimeState(_globalSettings, UmbracoVersion, databaseFactory, Logger); + _state = new RuntimeState(_globalSettings, UmbracoVersion, databaseFactory, RuntimeLoggerFactory.CreateLogger()); // create the composition composition = new Composition(register, typeLoader, ProfilingLogger, _state, IOHelper, AppCaches); - composition.RegisterEssentials(Logger, Profiler, ProfilingLogger, MainDom, AppCaches, databaseFactory, typeLoader, _state, TypeFinder, IOHelper, UmbracoVersion, DbProviderFactoryCreator, HostingEnvironment, BackOfficeInfo); + composition.RegisterEssentials(Logger, RuntimeLoggerFactory, Profiler, ProfilingLogger, MainDom, AppCaches, databaseFactory, typeLoader, _state, TypeFinder, IOHelper, UmbracoVersion, DbProviderFactoryCreator, HostingEnvironment, BackOfficeInfo); // register ourselves (TODO: Should we put this in RegisterEssentials?) composition.Register(_ => this, Lifetime.Singleton); @@ -275,7 +279,7 @@ namespace Umbraco.Core.Runtime var msg = "Unhandled exception in AppDomain"; if (isTerminating) msg += " (terminating)"; msg += "."; - Logger.Error(exception, msg); + Logger.LogError(exception, msg); }; } @@ -290,7 +294,7 @@ namespace Umbraco.Core.Runtime enableDisableAttributes = typeLoader.GetAssemblyAttributes(typeof(EnableComposerAttribute), typeof(DisableComposerAttribute)); } - var composers = new Composers(composition, composerTypes, enableDisableAttributes, ProfilingLogger); + var composers = new Composers(composition, composerTypes, enableDisableAttributes, RuntimeLoggerFactory.CreateLogger(), ProfilingLogger); composers.Compose(); } @@ -318,11 +322,11 @@ namespace Umbraco.Core.Runtime { _state.DetermineRuntimeLevel(); - ProfilingLogger.Debug("Runtime level: {RuntimeLevel} - {RuntimeLevelReason}", _state.Level, _state.Reason); + Logger.LogDebug("Runtime level: {RuntimeLevel} - {RuntimeLevelReason}", _state.Level, _state.Reason); if (_state.Level == RuntimeLevel.Upgrade) { - ProfilingLogger.Debug("Configure database factory for upgrades."); + Logger.LogDebug("Configure database factory for upgrades."); databaseFactory.ConfigureForUpgrade(); } } @@ -384,7 +388,7 @@ namespace Umbraco.Core.Runtime /// /// This is strictly internal, for tests only. protected internal virtual IUmbracoDatabaseFactory CreateDatabaseFactory() - => new UmbracoDatabaseFactory(Logger, Options.Create(_globalSettings), Options.Create(_connectionStrings), new Lazy(() => _factory.GetInstance()), DbProviderFactoryCreator); + => new UmbracoDatabaseFactory(RuntimeLoggerFactory.CreateLogger(), RuntimeLoggerFactory, Options.Create(_globalSettings), Options.Create(_connectionStrings), new Lazy(() => _factory.GetInstance()), DbProviderFactoryCreator); #endregion diff --git a/src/Umbraco.Infrastructure/Runtime/MainDomSemaphoreLock.cs b/src/Umbraco.Infrastructure/Runtime/MainDomSemaphoreLock.cs index 419a1781a2..eed13f5060 100644 --- a/src/Umbraco.Infrastructure/Runtime/MainDomSemaphoreLock.cs +++ b/src/Umbraco.Infrastructure/Runtime/MainDomSemaphoreLock.cs @@ -1,8 +1,8 @@ using System; using System.Threading; using System.Threading.Tasks; +using Microsoft.Extensions.Logging; using Umbraco.Core.Hosting; -using Umbraco.Core.Logging; namespace Umbraco.Core.Runtime { @@ -16,10 +16,10 @@ namespace Umbraco.Core.Runtime // event wait handle used to notify current main domain that it should // release the lock because a new domain wants to be the main domain private readonly EventWaitHandle _signal; - private readonly ILogger _logger; + private readonly ILogger _logger; private IDisposable _lockRelease; - public MainDomSemaphoreLock(ILogger logger, IHostingEnvironment hostingEnvironment) + public MainDomSemaphoreLock(ILogger logger, IHostingEnvironment hostingEnvironment) { var lockName = "UMBRACO-" + MainDom.GetMainDomId(hostingEnvironment) + "-MAINDOM-LCK"; _systemLock = new SystemLock(lockName); @@ -52,7 +52,7 @@ namespace Umbraco.Core.Runtime } catch (TimeoutException ex) { - _logger.Error(ex); + _logger.LogError(ex.Message); return Task.FromResult(false); } finally diff --git a/src/Umbraco.Infrastructure/Runtime/SqlMainDomLock.cs b/src/Umbraco.Infrastructure/Runtime/SqlMainDomLock.cs index 4cbe8f088a..0f29dfe36c 100644 --- a/src/Umbraco.Infrastructure/Runtime/SqlMainDomLock.cs +++ b/src/Umbraco.Infrastructure/Runtime/SqlMainDomLock.cs @@ -6,10 +6,10 @@ using System.Linq; using System.Security.Cryptography; using System.Threading; using System.Threading.Tasks; +using Microsoft.Extensions.Logging; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Hosting; -using Umbraco.Core.Logging; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Dtos; using Umbraco.Core.Persistence.Mappers; @@ -22,7 +22,7 @@ namespace Umbraco.Core.Runtime private string _lockId; private const string MainDomKeyPrefix = "Umbraco.Core.Runtime.SqlMainDom"; private const string UpdatedSuffix = "_updated"; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IHostingEnvironment _hostingEnvironment; private IUmbracoDatabase _db; private CancellationTokenSource _cancellationTokenSource = new CancellationTokenSource(); @@ -32,13 +32,14 @@ namespace Umbraco.Core.Runtime private bool _errorDuringAcquiring; private object _locker = new object(); - public SqlMainDomLock(ILogger logger, GlobalSettings globalSettings, ConnectionStrings connectionStrings, IDbProviderFactoryCreator dbProviderFactoryCreator, IHostingEnvironment hostingEnvironment) + public SqlMainDomLock(ILogger logger, ILoggerFactory loggerFactory, GlobalSettings globalSettings, ConnectionStrings connectionStrings, IDbProviderFactoryCreator dbProviderFactoryCreator, IHostingEnvironment hostingEnvironment) { // unique id for our appdomain, this is more unique than the appdomain id which is just an INT counter to its safer _lockId = Guid.NewGuid().ToString(); _logger = logger; _hostingEnvironment = hostingEnvironment; - _dbFactory = new UmbracoDatabaseFactory(_logger, + _dbFactory = new UmbracoDatabaseFactory(loggerFactory.CreateLogger(), + loggerFactory, globalSettings, connectionStrings, new Lazy(() => new MapperCollection(Enumerable.Empty())), @@ -60,7 +61,7 @@ namespace Umbraco.Core.Runtime _sqlServerSyntax = sqlServerSyntaxProvider; - _logger.Debug("Acquiring lock..."); + _logger.LogDebug("Acquiring lock..."); var tempId = Guid.NewGuid().ToString(); @@ -78,7 +79,7 @@ namespace Umbraco.Core.Runtime { if (IsLockTimeoutException(ex)) { - _logger.Error(ex, "Sql timeout occurred, could not acquire MainDom."); + _logger.LogError(ex, "Sql timeout occurred, could not acquire MainDom."); _errorDuringAcquiring = true; return false; } @@ -93,7 +94,7 @@ namespace Umbraco.Core.Runtime // if we've inserted, then there was no MainDom so we can instantly acquire InsertLockRecord(_lockId, db); // so update with our appdomain id - _logger.Debug("Acquired with ID {LockId}", _lockId); + _logger.LogDebug("Acquired with ID {LockId}", _lockId); return true; } @@ -103,7 +104,7 @@ namespace Umbraco.Core.Runtime catch (Exception ex) { // unexpected - _logger.Error(ex, "Unexpected error, cannot acquire MainDom"); + _logger.LogError(ex, "Unexpected error, cannot acquire MainDom"); _errorDuringAcquiring = true; return false; } @@ -120,7 +121,7 @@ namespace Umbraco.Core.Runtime { if (_errorDuringAcquiring) { - _logger.Warn("Could not acquire MainDom, listening is canceled."); + _logger.LogWarning("Could not acquire MainDom, listening is canceled."); return Task.CompletedTask; } @@ -180,13 +181,13 @@ namespace Umbraco.Core.Runtime { // we are no longer main dom, another one has come online, exit _mainDomChanging = true; - _logger.Debug("Detected new booting application, releasing MainDom lock."); + _logger.LogDebug("Detected new booting application, releasing MainDom lock."); return; } } catch (Exception ex) { - _logger.Error(ex, "Unexpected error during listening."); + _logger.LogError(ex, "Unexpected error during listening."); // We need to keep on listening unless we've been notified by our own AppDomain to shutdown since // we don't want to shutdown resources controlled by MainDom inadvertently. We'll just keep listening otherwise. @@ -260,7 +261,7 @@ namespace Umbraco.Core.Runtime // so now we update the row with our appdomain id InsertLockRecord(_lockId, db); - _logger.Debug("Acquired with ID {LockId}", _lockId); + _logger.LogDebug("Acquired with ID {LockId}", _lockId); return true; } else if (mainDomRows.Count == 1 && !mainDomRows[0].Value.StartsWith(tempId)) @@ -269,7 +270,7 @@ namespace Umbraco.Core.Runtime // another new AppDomain has come online and is wanting to take over. In that case, we will not // acquire. - _logger.Debug("Cannot acquire, another booting application detected."); + _logger.LogDebug("Cannot acquire, another booting application detected."); return false; } } @@ -277,12 +278,12 @@ namespace Umbraco.Core.Runtime { if (IsLockTimeoutException(ex as SqlException)) { - _logger.Error(ex, "Sql timeout occurred, waiting for existing MainDom is canceled."); + _logger.LogError(ex, "Sql timeout occurred, waiting for existing MainDom is canceled."); _errorDuringAcquiring = true; return false; } // unexpected - _logger.Error(ex, "Unexpected error, waiting for existing MainDom is canceled."); + _logger.LogError(ex, "Unexpected error, waiting for existing MainDom is canceled."); _errorDuringAcquiring = true; return false; } @@ -303,7 +304,7 @@ namespace Umbraco.Core.Runtime // which isn't ideal. // So... we're going to 'just' take over, if the writelock works then we'll assume we're ok - _logger.Debug("Timeout elapsed, assuming orphan row, acquiring MainDom."); + _logger.LogDebug("Timeout elapsed, assuming orphan row, acquiring MainDom."); using var transaction = db.GetTransaction(IsolationLevel.ReadCommitted); @@ -313,7 +314,7 @@ namespace Umbraco.Core.Runtime // so now we update the row with our appdomain id InsertLockRecord(_lockId, db); - _logger.Debug("Acquired with ID {LockId}", _lockId); + _logger.LogDebug("Acquired with ID {LockId}", _lockId); return true; } catch (Exception ex) @@ -321,11 +322,11 @@ namespace Umbraco.Core.Runtime if (IsLockTimeoutException(ex as SqlException)) { // something is wrong, we cannot acquire, not much we can do - _logger.Error(ex, "Sql timeout occurred, could not forcibly acquire MainDom."); + _logger.LogError(ex, "Sql timeout occurred, could not forcibly acquire MainDom."); _errorDuringAcquiring = true; return false; } - _logger.Error(ex, "Unexpected error, could not forcibly acquire MainDom."); + _logger.LogError(ex, "Unexpected error, could not forcibly acquire MainDom."); _errorDuringAcquiring = true; return false; } @@ -398,18 +399,18 @@ namespace Umbraco.Core.Runtime // Otherwise, if we are just shutting down, we want to just delete the row. if (_mainDomChanging) { - _logger.Debug("Releasing MainDom, updating row, new application is booting."); + _logger.LogDebug("Releasing MainDom, updating row, new application is booting."); var count = db.Execute($"UPDATE umbracoKeyValue SET [value] = [value] + '{UpdatedSuffix}' WHERE [key] = @key", new { key = MainDomKey }); } else { - _logger.Debug("Releasing MainDom, deleting row, application is shutting down."); + _logger.LogDebug("Releasing MainDom, deleting row, application is shutting down."); var count = db.Execute("DELETE FROM umbracoKeyValue WHERE [key] = @key", new { key = MainDomKey }); } } catch (Exception ex) { - _logger.Error(ex, "Unexpected error during dipsose."); + _logger.LogError(ex, "Unexpected error during dipsose."); } finally { diff --git a/src/Umbraco.Infrastructure/RuntimeState.cs b/src/Umbraco.Infrastructure/RuntimeState.cs index 4adf9fdf7c..cb2358d083 100644 --- a/src/Umbraco.Infrastructure/RuntimeState.cs +++ b/src/Umbraco.Infrastructure/RuntimeState.cs @@ -1,10 +1,10 @@ using System; using System.Threading; using Semver; +using Microsoft.Extensions.Logging; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Exceptions; -using Umbraco.Core.Logging; using Umbraco.Core.Migrations.Upgrade; using Umbraco.Core.Persistence; @@ -18,7 +18,7 @@ namespace Umbraco.Core private readonly GlobalSettings _globalSettings; private readonly IUmbracoVersion _umbracoVersion; private readonly IUmbracoDatabaseFactory _databaseFactory; - private readonly ILogger _logger; + private readonly ILogger _logger; /// /// The initial @@ -32,7 +32,7 @@ namespace Umbraco.Core /// /// Initializes a new instance of the class. /// - public RuntimeState(GlobalSettings globalSettings, IUmbracoVersion umbracoVersion, IUmbracoDatabaseFactory databaseFactory, ILogger logger) + public RuntimeState(GlobalSettings globalSettings, IUmbracoVersion umbracoVersion, IUmbracoDatabaseFactory databaseFactory, ILogger logger) { _globalSettings = globalSettings; _umbracoVersion = umbracoVersion; @@ -72,7 +72,7 @@ namespace Umbraco.Core { // local version *does* match code version, but the database is not configured // install - may happen with Deploy/Cloud/etc - _logger.Debug("Database is not configured, need to install Umbraco."); + _logger.LogDebug("Database is not configured, need to install Umbraco."); Level = RuntimeLevel.Install; Reason = RuntimeLevelReason.InstallNoDatabase; return; @@ -87,14 +87,14 @@ namespace Umbraco.Core { connect = _databaseFactory.CanConnect; if (connect || ++i == tries) break; - _logger.Debug("Could not immediately connect to database, trying again."); + _logger.LogDebug("Could not immediately connect to database, trying again."); Thread.Sleep(1000); } if (connect == false) { // cannot connect to configured database, this is bad, fail - _logger.Debug("Could not connect to database."); + _logger.LogDebug("Could not connect to database."); if (_globalSettings.InstallMissingDatabase) { @@ -123,7 +123,7 @@ namespace Umbraco.Core catch (Exception e) { // can connect to the database but cannot check the upgrade state... oops - _logger.Warn(e, "Could not check the upgrade state."); + _logger.LogWarning(e, "Could not check the upgrade state."); if (_globalSettings.InstallEmptyDatabase) { @@ -155,7 +155,7 @@ namespace Umbraco.Core // although the files version matches the code version, the database version does not // which means the local files have been upgraded but not the database - need to upgrade - _logger.Debug("Has not reached the final upgrade step, need to upgrade Umbraco."); + _logger.LogDebug("Has not reached the final upgrade step, need to upgrade Umbraco."); Level = RuntimeLevel.Upgrade; Reason = RuntimeLevelReason.UpgradeMigrations; } @@ -172,7 +172,7 @@ namespace Umbraco.Core FinalMigrationState = upgrader.Plan.FinalState; } - logger.Debug("Final upgrade state is {FinalMigrationState}, database contains {DatabaseState}", FinalMigrationState, CurrentMigrationState ?? ""); + logger.LogDebug("Final upgrade state is {FinalMigrationState}, database contains {DatabaseState}", FinalMigrationState, CurrentMigrationState ?? ""); return CurrentMigrationState == FinalMigrationState; } diff --git a/src/Umbraco.Infrastructure/Scheduling/BackgroundTaskRunner.cs b/src/Umbraco.Infrastructure/Scheduling/BackgroundTaskRunner.cs index a9fff229f2..fbc68daca3 100644 --- a/src/Umbraco.Infrastructure/Scheduling/BackgroundTaskRunner.cs +++ b/src/Umbraco.Infrastructure/Scheduling/BackgroundTaskRunner.cs @@ -2,10 +2,10 @@ using System.Threading; using System.Threading.Tasks; using System.Threading.Tasks.Dataflow; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Events; using Umbraco.Core.Hosting; -using Umbraco.Core.Logging; namespace Umbraco.Web.Scheduling { @@ -80,7 +80,7 @@ namespace Umbraco.Web.Scheduling private readonly string _logPrefix; private readonly BackgroundTaskRunnerOptions _options; - private readonly ILogger _logger; + private readonly ILogger> _logger; private readonly IApplicationShutdownRegistry _applicationShutdownRegistry; private readonly object _locker = new object(); @@ -105,7 +105,7 @@ namespace Umbraco.Web.Scheduling /// A logger. /// The application shutdown registry /// An optional main domain hook. - public BackgroundTaskRunner(ILogger logger, IApplicationShutdownRegistry applicationShutdownRegistry, MainDomHook hook = null) + public BackgroundTaskRunner(ILogger> logger, IApplicationShutdownRegistry applicationShutdownRegistry, MainDomHook hook = null) : this(typeof(T).FullName, new BackgroundTaskRunnerOptions(), logger, applicationShutdownRegistry, hook) { } @@ -116,7 +116,7 @@ namespace Umbraco.Web.Scheduling /// A logger. /// The application shutdown registry /// An optional main domain hook. - public BackgroundTaskRunner(string name, ILogger logger, IApplicationShutdownRegistry applicationShutdownRegistry, MainDomHook hook = null) + public BackgroundTaskRunner(string name, ILogger> logger, IApplicationShutdownRegistry applicationShutdownRegistry, MainDomHook hook = null) : this(name, new BackgroundTaskRunnerOptions(), logger, applicationShutdownRegistry, hook) { } @@ -127,7 +127,7 @@ namespace Umbraco.Web.Scheduling /// A logger. /// The application shutdown registry /// An optional main domain hook. - public BackgroundTaskRunner(BackgroundTaskRunnerOptions options, ILogger logger, IApplicationShutdownRegistry applicationShutdownRegistry, MainDomHook hook = null) + public BackgroundTaskRunner(BackgroundTaskRunnerOptions options, ILogger> logger, IApplicationShutdownRegistry applicationShutdownRegistry, MainDomHook hook = null) : this(typeof(T).FullName, options, logger, applicationShutdownRegistry, hook) { } @@ -139,7 +139,7 @@ namespace Umbraco.Web.Scheduling /// A logger. /// The application shutdown registry /// An optional main domain hook. - public BackgroundTaskRunner(string name, BackgroundTaskRunnerOptions options, ILogger logger, IApplicationShutdownRegistry applicationShutdownRegistry, MainDomHook hook = null) + public BackgroundTaskRunner(string name, BackgroundTaskRunnerOptions options, ILogger> logger, IApplicationShutdownRegistry applicationShutdownRegistry, MainDomHook hook = null) { _options = options ?? throw new ArgumentNullException(nameof(options)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); @@ -245,7 +245,7 @@ namespace Umbraco.Web.Scheduling throw new InvalidOperationException("The task runner has completed."); // add task - _logger.Debug("{LogPrefix} Task Added {TaskType}", _logPrefix , task.GetType().FullName); + _logger.LogDebug("{LogPrefix} Task Added {TaskType}", _logPrefix , task.GetType().FullName); _tasks.Post(task); // start @@ -265,12 +265,12 @@ namespace Umbraco.Web.Scheduling { if (_completed) { - _logger.Debug("{LogPrefix} Task cannot be added {TaskType}, the task runner has already shutdown", _logPrefix, task.GetType().FullName); + _logger.LogDebug("{LogPrefix} Task cannot be added {TaskType}, the task runner has already shutdown", _logPrefix, task.GetType().FullName); return false; } // add task - _logger.Debug("{LogPrefix} Task added {TaskType}", _logPrefix, task.GetType().FullName); + _logger.LogDebug("{LogPrefix} Task added {TaskType}", _logPrefix, task.GetType().FullName); _tasks.Post(task); // start @@ -327,7 +327,7 @@ namespace Umbraco.Web.Scheduling _shutdownToken = _shutdownTokenSource.Token; _runningTask = Task.Run(async () => await Pump().ConfigureAwait(false), _shutdownToken); - _logger.Debug("{LogPrefix} Starting", _logPrefix); + _logger.LogDebug("{LogPrefix} Starting", _logPrefix); } /// @@ -348,7 +348,7 @@ namespace Umbraco.Web.Scheduling var hasTasks = TaskCount > 0; if (!force && hasTasks) - _logger.Info("{LogPrefix} Waiting for tasks to complete", _logPrefix); + _logger.LogInformation("{LogPrefix} Waiting for tasks to complete", _logPrefix); // complete the queue // will stop waiting on the queue or on a latch @@ -414,7 +414,7 @@ namespace Umbraco.Web.Scheduling } catch (Exception ex) { - _logger.Error(ex, "{LogPrefix} Task runner exception", _logPrefix); + _logger.LogError(ex, "{LogPrefix} Task runner exception", _logPrefix); } } } @@ -446,7 +446,7 @@ namespace Umbraco.Web.Scheduling if (_shutdownToken.IsCancellationRequested == false && TaskCount > 0) continue; // if we really have nothing to do, stop - _logger.Debug("{LogPrefix} Stopping", _logPrefix); + _logger.LogDebug("{LogPrefix} Stopping", _logPrefix); if (_options.PreserveRunningTask == false) _runningTask = null; @@ -573,7 +573,7 @@ namespace Umbraco.Web.Scheduling catch (Exception ex) { - _logger.Error(ex, "{LogPrefix} Task has failed", _logPrefix); + _logger.LogError(ex, "{LogPrefix} Task has failed", _logPrefix); } } @@ -607,7 +607,7 @@ namespace Umbraco.Web.Scheduling private void OnEvent(TypedEventHandler, TArgs> handler, string name, TArgs e) { - _logger.Debug("{LogPrefix} OnEvent {EventName}", _logPrefix, name); + _logger.LogDebug("{LogPrefix} OnEvent {EventName}", _logPrefix, name); if (handler == null) return; @@ -617,7 +617,7 @@ namespace Umbraco.Web.Scheduling } catch (Exception ex) { - _logger.Error(ex, "{LogPrefix} {Name} exception occurred", _logPrefix, name); + _logger.LogError(ex, "{LogPrefix} {Name} exception occurred", _logPrefix, name); } } @@ -704,7 +704,7 @@ namespace Umbraco.Web.Scheduling if (_terminating == false) { _terminating = true; - _logger.Info("{LogPrefix} Terminating {Immediate}", _logPrefix, immediate ? immediate.ToString() : string.Empty); + _logger.LogInformation("{LogPrefix} Terminating {Immediate}", _logPrefix, immediate ? immediate.ToString() : string.Empty); onTerminating = true; } } @@ -789,7 +789,7 @@ namespace Umbraco.Web.Scheduling /// private void StopImmediate() { - _logger.Info("{LogPrefix} Canceling tasks", _logPrefix); + _logger.LogInformation("{LogPrefix} Canceling tasks", _logPrefix); try { Shutdown(true, true); // cancel all tasks, wait for the current one to end @@ -823,7 +823,7 @@ namespace Umbraco.Web.Scheduling terminatedSource = _terminatedSource; } - _logger.Info("{LogPrefix} Tasks {TaskStatus}, terminated", + _logger.LogInformation("{LogPrefix} Tasks {TaskStatus}, terminated", _logPrefix, immediate ? "cancelled" : "completed"); diff --git a/src/Umbraco.Infrastructure/Scheduling/HealthCheckNotifier.cs b/src/Umbraco.Infrastructure/Scheduling/HealthCheckNotifier.cs index e681538e12..6198e7845d 100644 --- a/src/Umbraco.Infrastructure/Scheduling/HealthCheckNotifier.cs +++ b/src/Umbraco.Infrastructure/Scheduling/HealthCheckNotifier.cs @@ -7,6 +7,7 @@ using Umbraco.Core.Logging; using Umbraco.Core.Scoping; using Umbraco.Core.Sync; using Umbraco.Web.HealthCheck; +using Microsoft.Extensions.Logging; namespace Umbraco.Web.Scheduling { @@ -16,7 +17,8 @@ namespace Umbraco.Web.Scheduling private readonly HealthCheckCollection _healthChecks; private readonly HealthCheckNotificationMethodCollection _notifications; private readonly IScopeProvider _scopeProvider; - private readonly IProfilingLogger _logger; + private readonly IProfilingLogger _profilingLogger; + private readonly ILogger _logger; private readonly HealthChecksSettings _healthChecksSettings; private readonly IServerRegistrar _serverRegistrar; private readonly IRuntimeState _runtimeState; @@ -28,7 +30,8 @@ namespace Umbraco.Web.Scheduling HealthCheckCollection healthChecks, HealthCheckNotificationMethodCollection notifications, IMainDom mainDom, - IProfilingLogger logger, + IProfilingLogger profilingLogger , + ILogger logger, HealthChecksSettings healthChecksSettings, IServerRegistrar serverRegistrar, IRuntimeState runtimeState, @@ -40,6 +43,7 @@ namespace Umbraco.Web.Scheduling _mainDom = mainDom; _scopeProvider = scopeProvider; _runtimeState = runtimeState; + _profilingLogger = profilingLogger ; _logger = logger; _healthChecksSettings = healthChecksSettings; _serverRegistrar = serverRegistrar; @@ -54,17 +58,17 @@ 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 } @@ -72,7 +76,7 @@ namespace Umbraco.Web.Scheduling // checks can be making service/database calls so we want to ensure the CallContext/Ambient scope // isn't used since that can be problematic. using (var scope = _scopeProvider.CreateScope()) - using (_logger.DebugDuration("Health checks executing", "Health checks complete")) + using (_profilingLogger.DebugDuration("Health checks executing", "Health checks complete")) { var healthCheckConfig = _healthChecksSettings; diff --git a/src/Umbraco.Infrastructure/Scheduling/LogScrubber.cs b/src/Umbraco.Infrastructure/Scheduling/LogScrubber.cs index 51c62de581..c1b0b2e6d3 100644 --- a/src/Umbraco.Infrastructure/Scheduling/LogScrubber.cs +++ b/src/Umbraco.Infrastructure/Scheduling/LogScrubber.cs @@ -7,6 +7,7 @@ using Umbraco.Core.Logging; using Umbraco.Core.Scoping; using Umbraco.Core.Services; using Umbraco.Core.Sync; +using Microsoft.Extensions.Logging; namespace Umbraco.Web.Scheduling { @@ -16,11 +17,12 @@ namespace Umbraco.Web.Scheduling private readonly IServerRegistrar _serverRegistrar; private readonly IAuditService _auditService; private readonly LoggingSettings _settings; - private readonly IProfilingLogger _logger; + private readonly IProfilingLogger _profilingLogger; + private readonly ILogger _logger; private readonly IScopeProvider _scopeProvider; public LogScrubber(IBackgroundTaskRunner runner, int delayMilliseconds, int periodMilliseconds, - IMainDom mainDom, IServerRegistrar serverRegistrar, IAuditService auditService, IOptions settings, IScopeProvider scopeProvider, IProfilingLogger logger) + IMainDom mainDom, IServerRegistrar serverRegistrar, IAuditService auditService, IOptions settings, IScopeProvider scopeProvider, IProfilingLogger profilingLogger , ILogger logger) : base(runner, delayMilliseconds, periodMilliseconds) { _mainDom = mainDom; @@ -28,6 +30,7 @@ namespace Umbraco.Web.Scheduling _auditService = auditService; _settings = settings.Value; _scopeProvider = scopeProvider; + _profilingLogger = profilingLogger ; _logger = logger; } @@ -42,7 +45,7 @@ namespace Umbraco.Web.Scheduling } catch (Exception ex) { - _logger.Error(ex, "Unable to locate a log scrubbing maximum age. Defaulting to 24 hours."); + _logger.LogError(ex, "Unable to locate a log scrubbing maximum age. Defaulting to 24 hours."); } return maximumAge; @@ -59,23 +62,23 @@ 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 } // Ensure we use an explicit scope since we are running on a background thread. using (var scope = _scopeProvider.CreateScope()) - using (_logger.DebugDuration("Log scrubbing executing", "Log scrubbing complete")) + using (_profilingLogger.DebugDuration("Log scrubbing executing", "Log scrubbing complete")) { _auditService.CleanLogs(GetLogScrubbingMaximumAge(_settings)); scope.Complete(); diff --git a/src/Umbraco.Infrastructure/Scheduling/ScheduledPublishing.cs b/src/Umbraco.Infrastructure/Scheduling/ScheduledPublishing.cs index 674012e797..81dd8f92af 100644 --- a/src/Umbraco.Infrastructure/Scheduling/ScheduledPublishing.cs +++ b/src/Umbraco.Infrastructure/Scheduling/ScheduledPublishing.cs @@ -1,16 +1,16 @@ using System; using System.Linq; 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 ILogger _logger; private readonly IMainDom _mainDom; private readonly IRuntimeState _runtime; private readonly IServerMessenger _serverMessenger; @@ -21,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, IBackofficeSecurityFactory backofficeSecurityFactory) + IUmbracoContextFactory umbracoContextFactory, ILogger logger, IServerMessenger serverMessenger, IBackofficeSecurityFactory backofficeSecurityFactory) : base(runner, delayMilliseconds, periodMilliseconds) { _runtime = runtime; @@ -44,24 +44,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 } @@ -86,7 +86,7 @@ namespace Umbraco.Web.Scheduling // run var result = _contentService.PerformScheduledPublish(DateTime.Now); foreach (var grouped in result.GroupBy(x => x.Result)) - _logger.Info( + _logger.LogInformation( "Scheduled publishing result: '{StatusCount}' items with status {Status}", grouped.Count(), grouped.Key); } @@ -101,7 +101,7 @@ namespace Umbraco.Web.Scheduling catch (Exception ex) { // important to catch *everything* to ensure the task repeats - _logger.Error(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 5fb4f19473..c96071ff04 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 Microsoft.Extensions.Options; using Umbraco.Core; using Umbraco.Core.Composing; @@ -30,7 +31,9 @@ namespace Umbraco.Web.Scheduling private readonly IServerRegistrar _serverRegistrar; private readonly IContentService _contentService; private readonly IAuditService _auditService; - private readonly IProfilingLogger _logger; + private readonly IProfilingLogger _profilingLogger; + private readonly ILogger _logger; + private readonly ILoggerFactory _loggerFactory; private readonly IApplicationShutdownRegistry _applicationShutdownRegistry; private readonly IScopeProvider _scopeProvider; private readonly HealthCheckCollection _healthChecks; @@ -57,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 profilingLogger , ILoggerFactory loggerFactory, IApplicationShutdownRegistry applicationShutdownRegistry, IOptions healthChecksSettings, IServerMessenger serverMessenger, IRequestAccessor requestAccessor, IOptions loggingSettings, IOptions keepAliveSettings, @@ -70,7 +73,9 @@ namespace Umbraco.Web.Scheduling _contentService = contentService; _auditService = auditService; _scopeProvider = scopeProvider; - _logger = logger; + _profilingLogger = profilingLogger ; + _loggerFactory = loggerFactory; + _logger = loggerFactory.CreateLogger(); _applicationShutdownRegistry = applicationShutdownRegistry; _umbracoContextFactory = umbracoContextFactory; @@ -87,12 +92,13 @@ namespace Umbraco.Web.Scheduling public void Initialize() { + var logger = _loggerFactory.CreateLogger>(); // 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); - _scrubberRunner = new BackgroundTaskRunner("LogScrubber", _logger, _applicationShutdownRegistry); - _fileCleanupRunner = new BackgroundTaskRunner("TempFileCleanup", _logger, _applicationShutdownRegistry); - _healthCheckRunner = new BackgroundTaskRunner("HealthCheckNotifier", _logger, _applicationShutdownRegistry); + _keepAliveRunner = new BackgroundTaskRunner("KeepAlive", logger, _applicationShutdownRegistry); + _publishingRunner = new BackgroundTaskRunner("ScheduledPublishing", logger, _applicationShutdownRegistry); + _scrubberRunner = new BackgroundTaskRunner("LogScrubber", logger, _applicationShutdownRegistry); + _fileCleanupRunner = new BackgroundTaskRunner("TempFileCleanup", logger, _applicationShutdownRegistry); + _healthCheckRunner = new BackgroundTaskRunner("HealthCheckNotifier", logger, _applicationShutdownRegistry); // we will start the whole process when a successful request is made _requestAccessor.RouteAttempt += RegisterBackgroundTasksOnce; @@ -119,7 +125,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(); @@ -134,7 +140,7 @@ namespace Umbraco.Web.Scheduling var healthCheckConfig = _healthChecksSettings; if (healthCheckConfig.NotificationSettings.Enabled) - tasks.Add(RegisterHealthCheckNotifier(healthCheckConfig, _healthChecks, _notifications, _logger)); + tasks.Add(RegisterHealthCheckNotifier(healthCheckConfig, _healthChecks, _notifications, _profilingLogger)); return tasks.ToArray(); }); @@ -144,7 +150,7 @@ namespace Umbraco.Web.Scheduling { // ping/keepalive // on all servers - var task = new KeepAlive(_keepAliveRunner, DefaultDelayMilliseconds, FiveMinuteMilliseconds, _requestAccessor, _mainDom, Options.Create(keepAliveSettings), _logger, _serverRegistrar); + var task = new KeepAlive(_keepAliveRunner, DefaultDelayMilliseconds, FiveMinuteMilliseconds, _requestAccessor, _mainDom, Options.Create(keepAliveSettings), _loggerFactory.CreateLogger(), _profilingLogger, _serverRegistrar); _keepAliveRunner.TryAdd(task); return task; } @@ -153,7 +159,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, _backofficeSecurityFactory); + var task = new ScheduledPublishing(_publishingRunner, DefaultDelayMilliseconds, OneMinuteMilliseconds, _runtime, _mainDom, _serverRegistrar, _contentService, _umbracoContextFactory, _loggerFactory.CreateLogger(), _serverMessenger, _backofficeSecurityFactory); _publishingRunner.TryAdd(task); return task; } @@ -179,7 +185,7 @@ namespace Umbraco.Web.Scheduling } var periodInMilliseconds = healthCheckSettingsConfig.NotificationSettings.PeriodInHours * 60 * 60 * 1000; - var task = new HealthCheckNotifier(_healthCheckRunner, delayInMilliseconds, periodInMilliseconds, healthChecks, notifications, _mainDom, logger, _healthChecksSettings, _serverRegistrar, _runtime, _scopeProvider); + var task = new HealthCheckNotifier(_healthCheckRunner, delayInMilliseconds, periodInMilliseconds, healthChecks, notifications, _mainDom, logger, _loggerFactory.CreateLogger(), _healthChecksSettings, _serverRegistrar, _runtime, _scopeProvider); _healthCheckRunner.TryAdd(task); return task; } @@ -188,7 +194,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, Options.Create(settings), _scopeProvider, _logger); + var task = new LogScrubber(_scrubberRunner, DefaultDelayMilliseconds, LogScrubber.GetLogScrubbingInterval(), _mainDom, _serverRegistrar, _auditService, Options.Create(settings), _scopeProvider, _profilingLogger, _loggerFactory.CreateLogger()); _scrubberRunner.TryAdd(task); return task; } @@ -212,7 +218,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, _profilingLogger, _loggerFactory.CreateLogger()); _scrubberRunner.TryAdd(task); return task; } diff --git a/src/Umbraco.Infrastructure/Scoping/Scope.cs b/src/Umbraco.Infrastructure/Scoping/Scope.cs index b7ccf539f6..87986a6318 100644 --- a/src/Umbraco.Infrastructure/Scoping/Scope.cs +++ b/src/Umbraco.Infrastructure/Scoping/Scope.cs @@ -1,10 +1,10 @@ using System; using System.Data; +using Microsoft.Extensions.Logging; using Umbraco.Core.Cache; using Umbraco.Core.Composing; using Umbraco.Core.Events; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Persistence; using CoreDebugSettings = Umbraco.Core.Configuration.Models.CoreDebugSettings; @@ -19,7 +19,7 @@ namespace Umbraco.Core.Scoping private readonly ScopeProvider _scopeProvider; private readonly CoreDebugSettings _coreDebugSettings; private readonly IMediaFileSystem _mediaFileSystem; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly ITypeFinder _typeFinder; private readonly IsolationLevel _isolationLevel; @@ -41,7 +41,7 @@ namespace Umbraco.Core.Scoping private Scope(ScopeProvider scopeProvider, CoreDebugSettings coreDebugSettings, IMediaFileSystem mediaFileSystem, - ILogger logger, ITypeFinder typeFinder, FileSystems fileSystems, Scope parent, IScopeContext scopeContext, bool detachable, + ILogger logger, ITypeFinder typeFinder, FileSystems fileSystems, Scope parent, IScopeContext scopeContext, bool detachable, IsolationLevel isolationLevel = IsolationLevel.Unspecified, RepositoryCacheMode repositoryCacheMode = RepositoryCacheMode.Unspecified, IEventDispatcher eventDispatcher = null, @@ -120,7 +120,7 @@ namespace Umbraco.Core.Scoping public Scope(ScopeProvider scopeProvider, CoreDebugSettings coreDebugSettings, IMediaFileSystem mediaFileSystem, - ILogger logger, ITypeFinder typeFinder, FileSystems fileSystems, bool detachable, IScopeContext scopeContext, + ILogger logger, ITypeFinder typeFinder, FileSystems fileSystems, bool detachable, IScopeContext scopeContext, IsolationLevel isolationLevel = IsolationLevel.Unspecified, RepositoryCacheMode repositoryCacheMode = RepositoryCacheMode.Unspecified, IEventDispatcher eventDispatcher = null, @@ -134,7 +134,7 @@ namespace Umbraco.Core.Scoping public Scope(ScopeProvider scopeProvider, CoreDebugSettings coreDebugSettings, IMediaFileSystem mediaFileSystem, - ILogger logger, ITypeFinder typeFinder, FileSystems fileSystems, Scope parent, + ILogger logger, ITypeFinder typeFinder, FileSystems fileSystems, Scope parent, IsolationLevel isolationLevel = IsolationLevel.Unspecified, RepositoryCacheMode repositoryCacheMode = RepositoryCacheMode.Unspecified, IEventDispatcher eventDispatcher = null, @@ -323,7 +323,7 @@ namespace Umbraco.Core.Scoping if (completed.HasValue == false || completed.Value == false) { if (LogUncompletedScopes) - _logger.Debug("Uncompleted Child Scope at\r\n {StackTrace}", Environment.StackTrace); + _logger.LogDebug("Uncompleted Child Scope at\r\n {StackTrace}", Environment.StackTrace); _completed = false; } diff --git a/src/Umbraco.Infrastructure/Scoping/ScopeProvider.cs b/src/Umbraco.Infrastructure/Scoping/ScopeProvider.cs index a2f626909b..52c096b224 100644 --- a/src/Umbraco.Infrastructure/Scoping/ScopeProvider.cs +++ b/src/Umbraco.Infrastructure/Scoping/ScopeProvider.cs @@ -1,11 +1,11 @@ using System; using System.Data; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Umbraco.Core.Cache; using Umbraco.Core.Composing; using Umbraco.Core.Events; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Persistence; using CoreDebugSettings = Umbraco.Core.Configuration.Models.CoreDebugSettings; @@ -21,20 +21,22 @@ namespace Umbraco.Core.Scoping /// internal class ScopeProvider : IScopeProvider, IScopeAccessor { - private readonly ILogger _logger; + private readonly ILogger _logger; + private readonly ILoggerFactory _loggerFactory; private readonly ITypeFinder _typeFinder; private readonly IRequestCache _requestCache; private readonly FileSystems _fileSystems; private readonly CoreDebugSettings _coreDebugSettings; private readonly IMediaFileSystem _mediaFileSystem; - public ScopeProvider(IUmbracoDatabaseFactory databaseFactory, FileSystems fileSystems, IOptions coreDebugSettings, IMediaFileSystem mediaFileSystem, ILogger logger, ITypeFinder typeFinder, IRequestCache requestCache) + public ScopeProvider(IUmbracoDatabaseFactory databaseFactory, FileSystems fileSystems, IOptions coreDebugSettings, IMediaFileSystem mediaFileSystem, ILogger logger, ILoggerFactory loggerFactory, ITypeFinder typeFinder, IRequestCache requestCache) { DatabaseFactory = databaseFactory; _fileSystems = fileSystems; _coreDebugSettings = coreDebugSettings.Value; _mediaFileSystem = mediaFileSystem; _logger = logger; + _loggerFactory = loggerFactory; _typeFinder = typeFinder; _requestCache = requestCache; // take control of the FileSystems @@ -92,7 +94,7 @@ namespace Umbraco.Core.Scoping { // first, null-register the existing value var ambientScope = CallContext.GetData(ScopeItemKey); - + if (ambientScope != null) RegisterContext(ambientScope, null); // then register the new value var scope = value as IScope; @@ -254,7 +256,7 @@ namespace Umbraco.Core.Scoping IEventDispatcher eventDispatcher = null, bool? scopeFileSystems = null) { - return new Scope(this, _coreDebugSettings, _mediaFileSystem, _logger, _typeFinder, _fileSystems, true, null, isolationLevel, repositoryCacheMode, eventDispatcher, scopeFileSystems); + return new Scope(this, _coreDebugSettings, _mediaFileSystem, _loggerFactory.CreateLogger(), _typeFinder, _fileSystems, true, null, isolationLevel, repositoryCacheMode, eventDispatcher, scopeFileSystems); } /// @@ -310,13 +312,13 @@ namespace Umbraco.Core.Scoping { var ambientContext = AmbientContext; var newContext = ambientContext == null ? new ScopeContext() : null; - var scope = new Scope(this, _coreDebugSettings, _mediaFileSystem, _logger, _typeFinder, _fileSystems, false, newContext, isolationLevel, repositoryCacheMode, eventDispatcher, scopeFileSystems, callContext, autoComplete); + var scope = new Scope(this, _coreDebugSettings, _mediaFileSystem, _loggerFactory.CreateLogger(), _typeFinder, _fileSystems, false, newContext, isolationLevel, repositoryCacheMode, eventDispatcher, scopeFileSystems, callContext, autoComplete); // assign only if scope creation did not throw! SetAmbient(scope, newContext ?? ambientContext); return scope; } - var nested = new Scope(this, _coreDebugSettings, _mediaFileSystem, _logger, _typeFinder, _fileSystems, ambientScope, isolationLevel, repositoryCacheMode, eventDispatcher, scopeFileSystems, callContext, autoComplete); + var nested = new Scope(this, _coreDebugSettings, _mediaFileSystem, _loggerFactory.CreateLogger(), _typeFinder, _fileSystems, ambientScope, isolationLevel, repositoryCacheMode, eventDispatcher, scopeFileSystems, callContext, autoComplete); SetAmbient(nested, AmbientContext); return nested; } diff --git a/src/Umbraco.Infrastructure/Search/BackgroundIndexRebuilder.cs b/src/Umbraco.Infrastructure/Search/BackgroundIndexRebuilder.cs index d18480eb82..3f50c0b38c 100644 --- a/src/Umbraco.Infrastructure/Search/BackgroundIndexRebuilder.cs +++ b/src/Umbraco.Infrastructure/Search/BackgroundIndexRebuilder.cs @@ -3,6 +3,7 @@ using System.Threading; using Umbraco.Core.Logging; using Umbraco.Examine; using System.Threading.Tasks; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Hosting; using Umbraco.Web.Scheduling; @@ -17,14 +18,19 @@ namespace Umbraco.Web.Search private static readonly object RebuildLocker = new object(); private readonly IndexRebuilder _indexRebuilder; private readonly IMainDom _mainDom; - private readonly IProfilingLogger _logger; + // TODO: Remove unused ProfilingLogger? + private readonly IProfilingLogger _profilingLogger; + private readonly ILogger _logger; + private readonly ILoggerFactory _loggerFactory; private readonly IApplicationShutdownRegistry _hostingEnvironment; private static BackgroundTaskRunner _rebuildOnStartupRunner; - public BackgroundIndexRebuilder(IMainDom mainDom, IProfilingLogger logger, IApplicationShutdownRegistry hostingEnvironment, IndexRebuilder indexRebuilder) + public BackgroundIndexRebuilder(IMainDom mainDom, IProfilingLogger profilingLogger , ILoggerFactory loggerFactory, IApplicationShutdownRegistry hostingEnvironment, IndexRebuilder indexRebuilder) { _mainDom = mainDom; - _logger = logger; + _profilingLogger = profilingLogger ; + _loggerFactory = loggerFactory; + _logger = loggerFactory.CreateLogger(); _hostingEnvironment = hostingEnvironment; _indexRebuilder = indexRebuilder; } @@ -42,17 +48,17 @@ namespace Umbraco.Web.Search { if (_rebuildOnStartupRunner != null && _rebuildOnStartupRunner.IsRunning) { - _logger.Warn("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.Info("Starting initialize async background thread."); + _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, _loggerFactory.CreateLogger(), onlyEmptyIndexes, waitMilliseconds); _rebuildOnStartupRunner = new BackgroundTaskRunner( "RebuildIndexesOnStartup", - _logger, _hostingEnvironment); + _loggerFactory.CreateLogger>(), _hostingEnvironment); _rebuildOnStartupRunner.TryAdd(task); } @@ -66,12 +72,12 @@ namespace Umbraco.Web.Search private readonly IMainDom _mainDom; private readonly IndexRebuilder _indexRebuilder; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly bool _onlyEmptyIndexes; private readonly int _waitMilliseconds; public RebuildOnStartupTask(IMainDom mainDom, - IndexRebuilder indexRebuilder, ILogger logger, bool onlyEmptyIndexes, int waitMilliseconds = 0) + IndexRebuilder indexRebuilder, ILogger logger, bool onlyEmptyIndexes, int waitMilliseconds = 0) { _mainDom = mainDom; _indexRebuilder = indexRebuilder ?? throw new ArgumentNullException(nameof(indexRebuilder)); @@ -95,7 +101,7 @@ namespace Umbraco.Web.Search } catch (Exception ex) { - _logger.Error(ex, "Failed to rebuild empty indexes."); + _logger.LogError(ex, "Failed to rebuild empty indexes."); } } diff --git a/src/Umbraco.Infrastructure/Search/ExamineComponent.cs b/src/Umbraco.Infrastructure/Search/ExamineComponent.cs index 639d5d1a7c..46332aa730 100644 --- a/src/Umbraco.Infrastructure/Search/ExamineComponent.cs +++ b/src/Umbraco.Infrastructure/Search/ExamineComponent.cs @@ -14,6 +14,7 @@ using Umbraco.Core.Services.Changes; using Umbraco.Core.Sync; using Umbraco.Web.Cache; using Umbraco.Examine; +using Microsoft.Extensions.Logging; using Umbraco.Web.Scheduling; namespace Umbraco.Web.Search @@ -31,7 +32,8 @@ namespace Umbraco.Web.Search private readonly IScopeProvider _scopeProvider; private readonly ServiceContext _services; private readonly IMainDom _mainDom; - private readonly IProfilingLogger _logger; + private readonly IProfilingLogger _profilingLogger; + private readonly ILogger _logger; private readonly IUmbracoIndexesCreator _indexCreator; private readonly BackgroundTaskRunner _indexItemTaskRunner; @@ -42,6 +44,7 @@ namespace Umbraco.Web.Search public ExamineComponent(IMainDom mainDom, IExamineManager examineManager, IProfilingLogger profilingLogger, + ILoggerFactory loggerFactory, IScopeProvider scopeProvider, IUmbracoIndexesCreator indexCreator, ServiceContext services, IContentValueSetBuilder contentValueSetBuilder, @@ -60,9 +63,10 @@ namespace Umbraco.Web.Search _memberValueSetBuilder = memberValueSetBuilder; _backgroundIndexRebuilder = backgroundIndexRebuilder; _mainDom = mainDom; - _logger = profilingLogger; + _profilingLogger = profilingLogger; + _logger = loggerFactory.CreateLogger(); _indexCreator = indexCreator; - _indexItemTaskRunner = new BackgroundTaskRunner(_logger, applicationShutdownRegistry); + _indexItemTaskRunner = new BackgroundTaskRunner(loggerFactory.CreateLogger>(), applicationShutdownRegistry); } public void Initialize() @@ -70,7 +74,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 (_profilingLogger.TraceDuration("Examine shutting down")) { _examineManager.Dispose(); } @@ -78,7 +82,7 @@ namespace Umbraco.Web.Search if (!examineShutdownRegistered) { - _logger.Info("Examine shutdown not registered, this AppDomain is not the MainDom, Examine will be disabled"); + _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); @@ -89,11 +93,11 @@ 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); - _logger.Info("Adding examine event handlers for {RegisteredIndexers} index providers.", registeredIndexers); + _logger.LogInformation("Adding examine event handlers for {RegisteredIndexers} index providers.", registeredIndexers); // don't bind event handlers if we're not suppose to listen if (registeredIndexers == 0) diff --git a/src/Umbraco.Infrastructure/Services/Implement/AuditService.cs b/src/Umbraco.Infrastructure/Services/Implement/AuditService.cs index 4fa7dad253..77c7b6610f 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/AuditService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/AuditService.cs @@ -1,8 +1,8 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core.Events; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence.Dtos; using Umbraco.Core.Persistence.Querying; @@ -17,9 +17,9 @@ namespace Umbraco.Core.Services.Implement private readonly IAuditRepository _auditRepository; private readonly IAuditEntryRepository _auditEntryRepository; - public AuditService(IScopeProvider provider, ILogger logger, IEventMessagesFactory eventMessagesFactory, + public AuditService(IScopeProvider provider, ILoggerFactory loggerFactory, IEventMessagesFactory eventMessagesFactory, IAuditRepository auditRepository, IAuditEntryRepository auditEntryRepository) - : base(provider, logger, eventMessagesFactory) + : base(provider, loggerFactory, eventMessagesFactory) { _auditRepository = auditRepository; _auditEntryRepository = auditEntryRepository; diff --git a/src/Umbraco.Infrastructure/Services/Implement/ConsentService.cs b/src/Umbraco.Infrastructure/Services/Implement/ConsentService.cs index acc4683d64..1f33d1fe58 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/ConsentService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/ConsentService.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; +using Microsoft.Extensions.Logging; using Umbraco.Core.Events; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Scoping; @@ -18,8 +18,8 @@ namespace Umbraco.Core.Services.Implement /// /// Initializes a new instance of the class. /// - public ConsentService(IScopeProvider provider, ILogger logger, IEventMessagesFactory eventMessagesFactory, IConsentRepository consentRepository) - : base(provider, logger, eventMessagesFactory) + public ConsentService(IScopeProvider provider, ILoggerFactory loggerFactory, IEventMessagesFactory eventMessagesFactory, IConsentRepository consentRepository) + : base(provider, loggerFactory, eventMessagesFactory) { _consentRepository = consentRepository; } diff --git a/src/Umbraco.Infrastructure/Services/Implement/ContentService.cs b/src/Umbraco.Infrastructure/Services/Implement/ContentService.cs index 4cd85bc408..b796f9b686 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/ContentService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/ContentService.cs @@ -3,9 +3,9 @@ using System.Collections.Generic; using System.ComponentModel; using System.Globalization; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core.Events; using Umbraco.Core.Exceptions; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Membership; using Umbraco.Core.Persistence.Querying; @@ -29,16 +29,17 @@ namespace Umbraco.Core.Services.Implement private readonly ILanguageRepository _languageRepository; private readonly Lazy _propertyValidationService; private readonly IShortStringHelper _shortStringHelper; + private readonly ILogger _logger; private IQuery _queryNotTrashed; #region Constructors - public ContentService(IScopeProvider provider, ILogger logger, + public ContentService(IScopeProvider provider, ILoggerFactory loggerFactory, IEventMessagesFactory eventMessagesFactory, IDocumentRepository documentRepository, IEntityRepository entityRepository, IAuditRepository auditRepository, IContentTypeRepository contentTypeRepository, IDocumentBlueprintRepository documentBlueprintRepository, ILanguageRepository languageRepository, Lazy propertyValidationService, IShortStringHelper shortStringHelper) - : base(provider, logger, eventMessagesFactory) + : base(provider, loggerFactory, eventMessagesFactory) { _documentRepository = documentRepository; _entityRepository = entityRepository; @@ -48,6 +49,7 @@ namespace Umbraco.Core.Services.Implement _languageRepository = languageRepository; _propertyValidationService = propertyValidationService; _shortStringHelper = shortStringHelper; + _logger = loggerFactory.CreateLogger(); } #endregion @@ -1417,7 +1419,7 @@ namespace Umbraco.Core.Services.Implement var result = CommitDocumentChangesInternal(scope, d, saveEventArgs, allLangs.Value, d.WriterId); if (result.Success == false) - Logger.Error(null, "Failed to publish document id={DocumentId}, reason={Reason}.", d.Id, result.Result); + _logger.LogError(null, "Failed to publish document id={DocumentId}, reason={Reason}.", d.Id, result.Result); results.Add(result); } @@ -1427,7 +1429,7 @@ namespace Umbraco.Core.Services.Implement d.ContentSchedule.Clear(ContentScheduleAction.Expire, date); var result = Unpublish(d, userId: d.WriterId); if (result.Success == false) - Logger.Error(null, "Failed to unpublish document id={DocumentId}, reason={Reason}.", d.Id, result.Result); + _logger.LogError(null, "Failed to unpublish document id={DocumentId}, reason={Reason}.", d.Id, result.Result); results.Add(result); } } @@ -1481,7 +1483,7 @@ namespace Umbraco.Core.Services.Implement var impact = CultureImpact.Explicit(culture, IsDefaultCulture(allLangs.Value, culture)); var tryPublish = d.PublishCulture(impact) && _propertyValidationService.Value.IsPropertyDataValid(d, out invalidProperties, impact); if (invalidProperties != null && invalidProperties.Length > 0) - Logger.Warn("Scheduled publishing will fail for document {DocumentId} and culture {Culture} because of invalid properties {InvalidProperties}", + _logger.LogWarning("Scheduled publishing will fail for document {DocumentId} and culture {Culture} because of invalid properties {InvalidProperties}", d.Id, culture, string.Join(",", invalidProperties.Select(x => x.Alias))); publishing &= tryPublish; //set the culture to be published @@ -1498,7 +1500,7 @@ namespace Umbraco.Core.Services.Implement result = CommitDocumentChangesInternal(scope, d, saveEventArgs, allLangs.Value, d.WriterId); if (result.Success == false) - Logger.Error(null, "Failed to publish document id={DocumentId}, reason={Reason}.", d.Id, result.Result); + _logger.LogError(null, "Failed to publish document id={DocumentId}, reason={Reason}.", d.Id, result.Result); results.Add(result); } @@ -1512,7 +1514,7 @@ namespace Umbraco.Core.Services.Implement : SaveAndPublish(d, userId: d.WriterId); if (result.Success == false) - Logger.Error(null, "Failed to publish document id={DocumentId}, reason={Reason}.", d.Id, result.Result); + _logger.LogError(null, "Failed to publish document id={DocumentId}, reason={Reason}.", d.Id, result.Result); results.Add(result); } @@ -2635,7 +2637,7 @@ namespace Umbraco.Core.Services.Implement // raise Publishing event if (scope.Events.DispatchCancelable(Publishing, this, savingEventArgs.ToContentPublishingEventArgs())) { - Logger.Info("Document {ContentName} (id={ContentId}) cannot be published: {Reason}", content.Name, content.Id, "publishing was cancelled"); + _logger.LogInformation("Document {ContentName} (id={ContentId}) cannot be published: {Reason}", content.Name, content.Id, "publishing was cancelled"); return new PublishResult(PublishResultType.FailedPublishCancelledByEvent, evtMsgs, content); } @@ -2687,7 +2689,7 @@ namespace Umbraco.Core.Services.Implement // either because it is 'publishing' or because it already has a published version if (content.PublishedState != PublishedState.Publishing && content.PublishedVersionId == 0) { - Logger.Info("Document {ContentName} (id={ContentId}) cannot be published: {Reason}", content.Name, content.Id, "document does not have published values"); + _logger.LogInformation("Document {ContentName} (id={ContentId}) cannot be published: {Reason}", content.Name, content.Id, "document does not have published values"); return new PublishResult(PublishResultType.FailedPublishNothingToPublish, evtMsgs, content); } @@ -2700,20 +2702,20 @@ namespace Umbraco.Core.Services.Implement { case ContentStatus.Expired: if (!variesByCulture) - Logger.Info("Document {ContentName} (id={ContentId}) cannot be published: {Reason}", content.Name, content.Id, "document has expired"); + _logger.LogInformation("Document {ContentName} (id={ContentId}) cannot be published: {Reason}", content.Name, content.Id, "document has expired"); else - Logger.Info("Document {ContentName} (id={ContentId}) culture {Culture} cannot be published: {Reason}", content.Name, content.Id, culture, "document culture has expired"); + _logger.LogInformation("Document {ContentName} (id={ContentId}) culture {Culture} cannot be published: {Reason}", content.Name, content.Id, culture, "document culture has expired"); return new PublishResult(!variesByCulture ? PublishResultType.FailedPublishHasExpired : PublishResultType.FailedPublishCultureHasExpired, evtMsgs, content); case ContentStatus.AwaitingRelease: if (!variesByCulture) - Logger.Info("Document {ContentName} (id={ContentId}) cannot be published: {Reason}", content.Name, content.Id, "document is awaiting release"); + _logger.LogInformation("Document {ContentName} (id={ContentId}) cannot be published: {Reason}", content.Name, content.Id, "document is awaiting release"); else - Logger.Info("Document {ContentName} (id={ContentId}) culture {Culture} cannot be published: {Reason}", content.Name, content.Id, culture, "document is culture awaiting release"); + _logger.LogInformation("Document {ContentName} (id={ContentId}) culture {Culture} cannot be published: {Reason}", content.Name, content.Id, culture, "document is culture awaiting release"); return new PublishResult(!variesByCulture ? PublishResultType.FailedPublishAwaitingRelease : PublishResultType.FailedPublishCultureAwaitingRelease, evtMsgs, content); case ContentStatus.Trashed: - Logger.Info("Document {ContentName} (id={ContentId}) cannot be published: {Reason}", content.Name, content.Id, "document is trashed"); + _logger.LogInformation("Document {ContentName} (id={ContentId}) cannot be published: {Reason}", content.Name, content.Id, "document is trashed"); return new PublishResult(PublishResultType.FailedPublishIsTrashed, evtMsgs, content); } } @@ -2726,7 +2728,7 @@ namespace Umbraco.Core.Services.Implement var pathIsOk = content.ParentId == Constants.System.Root || IsPathPublished(GetParent(content)); if (!pathIsOk) { - Logger.Info("Document {ContentName} (id={ContentId}) cannot be published: {Reason}", content.Name, content.Id, "parent is not published"); + _logger.LogInformation("Document {ContentName} (id={ContentId}) cannot be published: {Reason}", content.Name, content.Id, "parent is not published"); return new PublishResult(PublishResultType.FailedPublishPathNotPublished, evtMsgs, content); } } @@ -2763,11 +2765,11 @@ namespace Umbraco.Core.Services.Implement return new PublishResult(PublishResultType.FailedPublishNothingToPublish, evtMsgs, content); if (culturesUnpublishing.Count > 0) - Logger.Info("Document {ContentName} (id={ContentId}) cultures: {Cultures} have been unpublished.", + _logger.LogInformation("Document {ContentName} (id={ContentId}) cultures: {Cultures} have been unpublished.", content.Name, content.Id, string.Join(",", culturesUnpublishing)); if (culturesPublishing.Count > 0) - Logger.Info("Document {ContentName} (id={ContentId}) cultures: {Cultures} have been published.", + _logger.LogInformation("Document {ContentName} (id={ContentId}) cultures: {Cultures} have been published.", content.Name, content.Id, string.Join(",", culturesPublishing)); if (culturesUnpublishing.Count > 0 && culturesPublishing.Count > 0) @@ -2779,7 +2781,7 @@ namespace Umbraco.Core.Services.Implement return new PublishResult(PublishResultType.SuccessPublishCulture, evtMsgs, content); } - Logger.Info("Document {ContentName} (id={ContentId}) has been published.", content.Name, content.Id); + _logger.LogInformation("Document {ContentName} (id={ContentId}) has been published.", content.Name, content.Id); return new PublishResult(evtMsgs, content); } @@ -2795,7 +2797,7 @@ namespace Umbraco.Core.Services.Implement // raise Unpublishing event if (scope.Events.DispatchCancelable(Unpublishing, this, new PublishEventArgs(content, evtMsgs))) { - Logger.Info("Document {ContentName} (id={ContentId}) cannot be unpublished: unpublishing was cancelled.", content.Name, content.Id); + _logger.LogInformation("Document {ContentName} (id={ContentId}) cannot be unpublished: unpublishing was cancelled.", content.Name, content.Id); return new PublishResult(PublishResultType.FailedUnpublishCancelledByEvent, evtMsgs, content); } @@ -2827,12 +2829,12 @@ namespace Umbraco.Core.Services.Implement foreach (var p in pastReleases) content.ContentSchedule.Remove(p); if (pastReleases.Count > 0) - Logger.Info("Document {ContentName} (id={ContentId}) had its release date removed, because it was unpublished.", content.Name, content.Id); + _logger.LogInformation("Document {ContentName} (id={ContentId}) had its release date removed, because it was unpublished.", content.Name, content.Id); // change state to unpublishing content.PublishedState = PublishedState.Unpublishing; - Logger.Info("Document {ContentName} (id={ContentId}) has been unpublished.", content.Name, content.Id); + _logger.LogInformation("Document {ContentName} (id={ContentId}) has been unpublished.", content.Name, content.Id); return attempt; } @@ -3164,7 +3166,7 @@ namespace Umbraco.Core.Services.Implement if (rollbackSaveResult.Success == false) { //Log the error/warning - Logger.Error("User '{UserId}' was unable to rollback content '{ContentId}' to version '{VersionId}'", userId, id, versionId); + _logger.LogError("User '{UserId}' was unable to rollback content '{ContentId}' to version '{VersionId}'", userId, id, versionId); } else { @@ -3173,7 +3175,7 @@ namespace Umbraco.Core.Services.Implement scope.Events.Dispatch(RolledBack, this, rollbackEventArgs); //Logging & Audit message - Logger.Info("User '{UserId}' rolled back content '{ContentId}' to version '{VersionId}'", userId, id, versionId); + _logger.LogInformation("User '{UserId}' rolled back content '{ContentId}' to version '{VersionId}'", userId, id, versionId); Audit(AuditType.RollBack, userId, id, $"Content '{content.Name}' was rolled back to version '{versionId}'"); } diff --git a/src/Umbraco.Infrastructure/Services/Implement/ContentTypeService.cs b/src/Umbraco.Infrastructure/Services/Implement/ContentTypeService.cs index 206f11e5b0..ab7e70e852 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/ContentTypeService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/ContentTypeService.cs @@ -1,8 +1,8 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core.Events; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Scoping; @@ -14,9 +14,9 @@ namespace Umbraco.Core.Services.Implement /// public class ContentTypeService : ContentTypeServiceBase, IContentTypeService { - public ContentTypeService(IScopeProvider provider, ILogger logger, IEventMessagesFactory eventMessagesFactory, IContentService contentService, + public ContentTypeService(IScopeProvider provider, ILoggerFactory loggerFactory, IEventMessagesFactory eventMessagesFactory, IContentService contentService, IContentTypeRepository repository, IAuditRepository auditRepository, IDocumentTypeContainerRepository entityContainerRepository, IEntityRepository entityRepository) - : base(provider, logger, eventMessagesFactory, repository, auditRepository, entityContainerRepository, entityRepository) + : base(provider, loggerFactory, eventMessagesFactory, repository, auditRepository, entityContainerRepository, entityRepository) { ContentService = contentService; } diff --git a/src/Umbraco.Infrastructure/Services/Implement/ContentTypeServiceBase.cs b/src/Umbraco.Infrastructure/Services/Implement/ContentTypeServiceBase.cs index 26298f171c..7067e27f59 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/ContentTypeServiceBase.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/ContentTypeServiceBase.cs @@ -1,13 +1,13 @@ -using Umbraco.Core.Events; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; +using Umbraco.Core.Events; using Umbraco.Core.Scoping; namespace Umbraco.Core.Services.Implement { public abstract class ContentTypeServiceBase : ScopeRepositoryService { - protected ContentTypeServiceBase(IScopeProvider provider, ILogger logger, IEventMessagesFactory eventMessagesFactory) - : base(provider, logger, eventMessagesFactory) + protected ContentTypeServiceBase(IScopeProvider provider, ILoggerFactory loggerFactory, IEventMessagesFactory eventMessagesFactory) + : base(provider, loggerFactory, eventMessagesFactory) { } } } diff --git a/src/Umbraco.Infrastructure/Services/Implement/ContentTypeServiceBaseOfTItemTService.cs b/src/Umbraco.Infrastructure/Services/Implement/ContentTypeServiceBaseOfTItemTService.cs index a08bc3cd96..3241fa9d0e 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/ContentTypeServiceBaseOfTItemTService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/ContentTypeServiceBaseOfTItemTService.cs @@ -1,5 +1,5 @@ -using Umbraco.Core.Events; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; +using Umbraco.Core.Events; using Umbraco.Core.Models; using Umbraco.Core.Scoping; using Umbraco.Core.Services.Changes; @@ -10,8 +10,8 @@ namespace Umbraco.Core.Services.Implement where TItem : class, IContentTypeComposition where TService : class, IContentTypeBaseService { - protected ContentTypeServiceBase(IScopeProvider provider, ILogger logger, IEventMessagesFactory eventMessagesFactory) - : base(provider, logger, eventMessagesFactory) + protected ContentTypeServiceBase(IScopeProvider provider, ILoggerFactory loggerFactory, IEventMessagesFactory eventMessagesFactory) + : base(provider, loggerFactory, eventMessagesFactory) { } protected abstract TService This { get; } diff --git a/src/Umbraco.Infrastructure/Services/Implement/ContentTypeServiceBaseOfTRepositoryTItemTService.cs b/src/Umbraco.Infrastructure/Services/Implement/ContentTypeServiceBaseOfTRepositoryTItemTService.cs index 9cd911e8d4..a3e3687b10 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/ContentTypeServiceBaseOfTRepositoryTItemTService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/ContentTypeServiceBaseOfTRepositoryTItemTService.cs @@ -1,9 +1,9 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core.Events; using Umbraco.Core.Exceptions; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; using Umbraco.Core.Persistence.Repositories; @@ -22,9 +22,9 @@ namespace Umbraco.Core.Services.Implement private readonly IEntityContainerRepository _containerRepository; private readonly IEntityRepository _entityRepository; - protected ContentTypeServiceBase(IScopeProvider provider, ILogger logger, IEventMessagesFactory eventMessagesFactory, + protected ContentTypeServiceBase(IScopeProvider provider, ILoggerFactory loggerFactory, IEventMessagesFactory eventMessagesFactory, TRepository repository, IAuditRepository auditRepository, IEntityContainerRepository containerRepository, IEntityRepository entityRepository) - : base(provider, logger, eventMessagesFactory) + : base(provider, loggerFactory, eventMessagesFactory) { Repository = repository; _auditRepository = auditRepository; @@ -508,15 +508,15 @@ namespace Umbraco.Core.Services.Implement // delete content DeleteItemsOfTypes(descendantsAndSelf.Select(x => x.Id)); - + // Next find all other document types that have a reference to this content type var referenceToAllowedContentTypes = GetAll().Where(q => q.AllowedContentTypes.Any(p=>p.Id.Value==item.Id)); foreach (var reference in referenceToAllowedContentTypes) - { - reference.AllowedContentTypes = reference.AllowedContentTypes.Where(p => p.Id.Value != item.Id); + { + reference.AllowedContentTypes = reference.AllowedContentTypes.Where(p => p.Id.Value != item.Id); var changedRef = new List>() { new ContentTypeChange(reference, ContentTypeChangeTypes.RefreshMain) }; // Fire change event - OnChanged(scope, changedRef.ToEventArgs()); + OnChanged(scope, changedRef.ToEventArgs()); } // finally delete the content type @@ -525,7 +525,7 @@ namespace Umbraco.Core.Services.Implement // (contents of any descendant type have been deleted but // contents of any composed (impacted) type remain but // need to have their property data cleared) - Repository.Delete(item); + Repository.Delete(item); //... var changes = descendantsAndSelf.Select(x => new ContentTypeChange(x, ContentTypeChangeTypes.Remove)) diff --git a/src/Umbraco.Infrastructure/Services/Implement/DataTypeService.cs b/src/Umbraco.Infrastructure/Services/Implement/DataTypeService.cs index 08bed264ae..eb6a94c4ee 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/DataTypeService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/DataTypeService.cs @@ -1,10 +1,10 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core.Events; using Umbraco.Core.Exceptions; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence.Dtos; using Umbraco.Core.Persistence.Repositories; @@ -30,11 +30,11 @@ namespace Umbraco.Core.Services.Implement private readonly ILocalizationService _localizationService; private readonly IShortStringHelper _shortStringHelper; - public DataTypeService(IScopeProvider provider, ILogger logger, IEventMessagesFactory eventMessagesFactory, + public DataTypeService(IScopeProvider provider, ILoggerFactory loggerFactory, IEventMessagesFactory eventMessagesFactory, IDataTypeRepository dataTypeRepository, IDataTypeContainerRepository dataTypeContainerRepository, IAuditRepository auditRepository, IEntityRepository entityRepository, IContentTypeRepository contentTypeRepository, IIOHelper ioHelper, ILocalizedTextService localizedTextService, ILocalizationService localizationService, IShortStringHelper shortStringHelper) - : base(provider, logger, eventMessagesFactory) + : base(provider, loggerFactory, eventMessagesFactory) { _dataTypeRepository = dataTypeRepository; _dataTypeContainerRepository = dataTypeContainerRepository; @@ -324,7 +324,7 @@ namespace Umbraco.Core.Services.Implement .Where(x => x.Editor is MissingPropertyEditor); foreach (var dataType in dataTypesWithMissingEditors) { - dataType.Editor = new LabelPropertyEditor(Logger, _ioHelper, this, _localizedTextService, _localizationService, _shortStringHelper); + dataType.Editor = new LabelPropertyEditor(LoggerFactory, _ioHelper, this, _localizedTextService, _localizationService, _shortStringHelper); } } diff --git a/src/Umbraco.Infrastructure/Services/Implement/DomainService.cs b/src/Umbraco.Infrastructure/Services/Implement/DomainService.cs index 32decb56d5..7bdce6f6cb 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/DomainService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/DomainService.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; +using Microsoft.Extensions.Logging; using Umbraco.Core.Events; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Scoping; @@ -11,9 +11,9 @@ namespace Umbraco.Core.Services.Implement { private readonly IDomainRepository _domainRepository; - public DomainService(IScopeProvider provider, ILogger logger, IEventMessagesFactory eventMessagesFactory, + public DomainService(IScopeProvider provider, ILoggerFactory loggerFactory, IEventMessagesFactory eventMessagesFactory, IDomainRepository domainRepository) - : base(provider, logger, eventMessagesFactory) + : base(provider, loggerFactory, eventMessagesFactory) { _domainRepository = domainRepository; } diff --git a/src/Umbraco.Infrastructure/Services/Implement/EntityService.cs b/src/Umbraco.Infrastructure/Services/Implement/EntityService.cs index 8436f56457..ccfbe4aacd 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/EntityService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/EntityService.cs @@ -2,8 +2,8 @@ using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; +using Microsoft.Extensions.Logging; using Umbraco.Core.Events; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; using Umbraco.Core.Persistence; @@ -21,8 +21,8 @@ namespace Umbraco.Core.Services.Implement private IQuery _queryRootEntity; private readonly IIdKeyMap _idKeyMap; - public EntityService(IScopeProvider provider, ILogger logger, IEventMessagesFactory eventMessagesFactory, IIdKeyMap idKeyMap, IEntityRepository entityRepository) - : base(provider, logger, eventMessagesFactory) + public EntityService(IScopeProvider provider, ILoggerFactory loggerFactory, IEventMessagesFactory eventMessagesFactory, IIdKeyMap idKeyMap, IEntityRepository entityRepository) + : base(provider, loggerFactory, eventMessagesFactory) { _idKeyMap = idKeyMap; _entityRepository = entityRepository; diff --git a/src/Umbraco.Infrastructure/Services/Implement/ExternalLoginService.cs b/src/Umbraco.Infrastructure/Services/Implement/ExternalLoginService.cs index c872cf6abb..e4a3f3638e 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/ExternalLoginService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/ExternalLoginService.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core.Events; -using Umbraco.Core.Logging; using Umbraco.Core.Models.Identity; using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Scoping; @@ -12,9 +12,9 @@ namespace Umbraco.Core.Services.Implement { private readonly IExternalLoginRepository _externalLoginRepository; - public ExternalLoginService(IScopeProvider provider, ILogger logger, IEventMessagesFactory eventMessagesFactory, + public ExternalLoginService(IScopeProvider provider, ILoggerFactory loggerFactory, IEventMessagesFactory eventMessagesFactory, IExternalLoginRepository externalLoginRepository) - : base(provider, logger, eventMessagesFactory) + : base(provider, loggerFactory, eventMessagesFactory) { _externalLoginRepository = externalLoginRepository; } diff --git a/src/Umbraco.Infrastructure/Services/Implement/FileService.cs b/src/Umbraco.Infrastructure/Services/Implement/FileService.cs index e82c71d1a5..e1f4a017b3 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/FileService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/FileService.cs @@ -4,13 +4,13 @@ using System.IO; using System.Linq; using System.Text.RegularExpressions; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; using Umbraco.Core.Composing; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Events; using Umbraco.Core.Hosting; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Persistence.Repositories.Implement; @@ -37,11 +37,11 @@ namespace Umbraco.Core.Services.Implement private const string PartialViewHeader = "@inherits Umbraco.Web.Common.AspNetCore.UmbracoViewPage"; private const string PartialViewMacroHeader = "@inherits Umbraco.Web.Common.Macros.PartialViewMacroPage"; - public FileService(IScopeProvider uowProvider, ILogger logger, IEventMessagesFactory eventMessagesFactory, + public FileService(IScopeProvider uowProvider, ILoggerFactory loggerFactory, IEventMessagesFactory eventMessagesFactory, IStylesheetRepository stylesheetRepository, IScriptRepository scriptRepository, ITemplateRepository templateRepository, IPartialViewRepository partialViewRepository, IPartialViewMacroRepository partialViewMacroRepository, IAuditRepository auditRepository, IShortStringHelper shortStringHelper, IOptions globalSettings, IHostingEnvironment hostingEnvironment) - : base(uowProvider, logger, eventMessagesFactory) + : base(uowProvider, loggerFactory, eventMessagesFactory) { _stylesheetRepository = stylesheetRepository; _scriptRepository = scriptRepository; diff --git a/src/Umbraco.Infrastructure/Services/Implement/LocalizationService.cs b/src/Umbraco.Infrastructure/Services/Implement/LocalizationService.cs index 251261cfc8..07fa0e1e77 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/LocalizationService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/LocalizationService.cs @@ -1,8 +1,8 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core.Events; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Scoping; @@ -18,9 +18,9 @@ namespace Umbraco.Core.Services.Implement private readonly ILanguageRepository _languageRepository; private readonly IAuditRepository _auditRepository; - public LocalizationService(IScopeProvider provider, ILogger logger, IEventMessagesFactory eventMessagesFactory, + public LocalizationService(IScopeProvider provider, ILoggerFactory loggerFactory, IEventMessagesFactory eventMessagesFactory, IDictionaryRepository dictionaryRepository, IAuditRepository auditRepository, ILanguageRepository languageRepository) - : base(provider, logger, eventMessagesFactory) + : base(provider, loggerFactory, eventMessagesFactory) { _dictionaryRepository = dictionaryRepository; _auditRepository = auditRepository; diff --git a/src/Umbraco.Infrastructure/Services/Implement/LocalizedTextService.cs b/src/Umbraco.Infrastructure/Services/Implement/LocalizedTextService.cs index 4f5121def7..4d12f111e3 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/LocalizedTextService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/LocalizedTextService.cs @@ -4,7 +4,7 @@ using System.Globalization; using System.Linq; using System.Xml.Linq; using System.Xml.XPath; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; namespace Umbraco.Core.Services.Implement { @@ -12,7 +12,7 @@ namespace Umbraco.Core.Services.Implement public class LocalizedTextService : ILocalizedTextService { - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly Lazy _fileSources; private readonly IDictionary>> _dictionarySource; private readonly IDictionary> _xmlSource; @@ -22,7 +22,7 @@ namespace Umbraco.Core.Services.Implement /// /// /// - public LocalizedTextService(Lazy fileSources, ILogger logger) + public LocalizedTextService(Lazy fileSources, ILogger logger) { if (logger == null) throw new ArgumentNullException("logger"); _logger = logger; @@ -35,7 +35,7 @@ namespace Umbraco.Core.Services.Implement /// /// /// - public LocalizedTextService(IDictionary> source, ILogger logger) + public LocalizedTextService(IDictionary> source, ILogger logger) { if (source == null) throw new ArgumentNullException("source"); if (logger == null) throw new ArgumentNullException("logger"); @@ -48,7 +48,7 @@ namespace Umbraco.Core.Services.Implement /// /// /// - public LocalizedTextService(IDictionary>> source, ILogger logger) + public LocalizedTextService(IDictionary>> source, ILogger logger) { _dictionarySource = source ?? throw new ArgumentNullException(nameof(source)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); @@ -104,7 +104,7 @@ namespace Umbraco.Core.Services.Implement { if (xmlSource.ContainsKey(culture) == false) { - _logger.Warn("The culture specified {Culture} was not found in any configured sources for this service", culture); + _logger.LogWarning("The culture specified {Culture} was not found in any configured sources for this service", culture); return result; } @@ -124,7 +124,7 @@ namespace Umbraco.Core.Services.Implement { if (_dictionarySource.ContainsKey(culture) == false) { - _logger.Warn("The culture specified {Culture} was not found in any configured sources for this service", culture); + _logger.LogWarning("The culture specified {Culture} was not found in any configured sources for this service", culture); return result; } @@ -207,7 +207,7 @@ namespace Umbraco.Core.Services.Implement { if (_dictionarySource.ContainsKey(culture) == false) { - _logger.Warn("The culture specified {Culture} was not found in any configured sources for this service", culture); + _logger.LogWarning("The culture specified {Culture} was not found in any configured sources for this service", culture); return "[" + key + "]"; } @@ -245,7 +245,7 @@ namespace Umbraco.Core.Services.Implement { if (xmlSource.ContainsKey(culture) == false) { - _logger.Warn("The culture specified {Culture} was not found in any configured sources for this service", culture); + _logger.LogWarning("The culture specified {Culture} was not found in any configured sources for this service", culture); return "[" + key + "]"; } diff --git a/src/Umbraco.Infrastructure/Services/Implement/LocalizedTextServiceFileSources.cs b/src/Umbraco.Infrastructure/Services/Implement/LocalizedTextServiceFileSources.cs index 77bc82f092..b4c49b9509 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/LocalizedTextServiceFileSources.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/LocalizedTextServiceFileSources.cs @@ -8,7 +8,7 @@ using System.Xml.Linq; using Umbraco.Composing; using Umbraco.Core.Cache; using Umbraco.Core.Composing; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; namespace Umbraco.Core.Services.Implement { @@ -17,7 +17,7 @@ namespace Umbraco.Core.Services.Implement /// public class LocalizedTextServiceFileSources { - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IAppPolicyCache _cache; private readonly IEnumerable _supplementFileSources; private readonly DirectoryInfo _fileSourceFolder; @@ -37,7 +37,7 @@ namespace Umbraco.Core.Services.Implement /// /// public LocalizedTextServiceFileSources( - ILogger logger, + ILogger logger, AppCaches appCaches, DirectoryInfo fileSourceFolder, IEnumerable supplementFileSources) @@ -51,7 +51,7 @@ namespace Umbraco.Core.Services.Implement if (fileSourceFolder.Exists == false) { - Current.Logger.Warn("The folder does not exist: {FileSourceFolder}, therefore no sources will be discovered", fileSourceFolder.FullName); + _logger.LogWarning("The folder does not exist: {FileSourceFolder}, therefore no sources will be discovered", fileSourceFolder.FullName); } else { @@ -99,7 +99,7 @@ namespace Umbraco.Core.Services.Implement } catch (CultureNotFoundException) { - Current.Logger.Warn("The culture {CultureValue} found in the file {CultureFile} is not a valid culture", cultureVal, fileInfo.FullName); + _logger.LogWarning("The culture {CultureValue} found in the file {CultureFile} is not a valid culture", cultureVal, fileInfo.FullName); //If the culture in the file is invalid, we'll just hope the file name is a valid culture below, otherwise // an exception will be thrown. } @@ -140,7 +140,7 @@ namespace Umbraco.Core.Services.Implement /// /// Constructor /// - public LocalizedTextServiceFileSources(ILogger logger, AppCaches appCaches, DirectoryInfo fileSourceFolder) + public LocalizedTextServiceFileSources(ILogger logger, AppCaches appCaches, DirectoryInfo fileSourceFolder) : this(logger, appCaches, fileSourceFolder, Enumerable.Empty()) { } @@ -206,7 +206,7 @@ namespace Umbraco.Core.Services.Implement } catch (Exception ex) { - _logger.Error(ex, "Could not load file into XML {File}", supplementaryFile.File.FullName); + _logger.LogError(ex, "Could not load file into XML {File}", supplementaryFile.File.FullName); continue; } diff --git a/src/Umbraco.Infrastructure/Services/Implement/MacroService.cs b/src/Umbraco.Infrastructure/Services/Implement/MacroService.cs index a6631aae4c..98bc633fa9 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/MacroService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/MacroService.cs @@ -1,8 +1,8 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core.Events; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Scoping; @@ -17,9 +17,9 @@ namespace Umbraco.Core.Services.Implement private readonly IMacroRepository _macroRepository; private readonly IAuditRepository _auditRepository; - public MacroService(IScopeProvider provider, ILogger logger, IEventMessagesFactory eventMessagesFactory, + public MacroService(IScopeProvider provider, ILoggerFactory loggerFactory, IEventMessagesFactory eventMessagesFactory, IMacroRepository macroRepository, IAuditRepository auditRepository) - : base(provider, logger, eventMessagesFactory) + : base(provider, loggerFactory, eventMessagesFactory) { _macroRepository = macroRepository; _auditRepository = auditRepository; diff --git a/src/Umbraco.Infrastructure/Services/Implement/MediaService.cs b/src/Umbraco.Infrastructure/Services/Implement/MediaService.cs index 5e9854ad9e..0672c3218f 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/MediaService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/MediaService.cs @@ -4,9 +4,9 @@ using System.ComponentModel; using System.Globalization; using System.IO; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core.Events; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence.DatabaseModelDefinitions; using Umbraco.Core.Persistence.Querying; @@ -32,10 +32,10 @@ namespace Umbraco.Core.Services.Implement #region Constructors - public MediaService(IScopeProvider provider, IMediaFileSystem mediaFileSystem, ILogger logger, IEventMessagesFactory eventMessagesFactory, + public MediaService(IScopeProvider provider, IMediaFileSystem mediaFileSystem, ILoggerFactory loggerFactory, IEventMessagesFactory eventMessagesFactory, IMediaRepository mediaRepository, IAuditRepository auditRepository, IMediaTypeRepository mediaTypeRepository, IEntityRepository entityRepository, IShortStringHelper shortStringHelper) - : base(provider, logger, eventMessagesFactory) + : base(provider, loggerFactory, eventMessagesFactory) { _mediaFileSystem = mediaFileSystem; _mediaRepository = mediaRepository; diff --git a/src/Umbraco.Infrastructure/Services/Implement/MediaTypeService.cs b/src/Umbraco.Infrastructure/Services/Implement/MediaTypeService.cs index 8cb69a655d..73ce6822a1 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/MediaTypeService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/MediaTypeService.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; +using Microsoft.Extensions.Logging; using Umbraco.Core.Events; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Scoping; @@ -10,10 +10,10 @@ namespace Umbraco.Core.Services.Implement { public class MediaTypeService : ContentTypeServiceBase, IMediaTypeService { - public MediaTypeService(IScopeProvider provider, ILogger logger, IEventMessagesFactory eventMessagesFactory, IMediaService mediaService, + public MediaTypeService(IScopeProvider provider, ILoggerFactory loggerFactory, IEventMessagesFactory eventMessagesFactory, IMediaService mediaService, IMediaTypeRepository mediaTypeRepository, IAuditRepository auditRepository, IMediaTypeContainerRepository entityContainerRepository, IEntityRepository entityRepository) - : base(provider, logger, eventMessagesFactory, mediaTypeRepository, auditRepository, entityContainerRepository, entityRepository) + : base(provider, loggerFactory, eventMessagesFactory, mediaTypeRepository, auditRepository, entityContainerRepository, entityRepository) { MediaService = mediaService; } diff --git a/src/Umbraco.Infrastructure/Services/Implement/MemberGroupService.cs b/src/Umbraco.Infrastructure/Services/Implement/MemberGroupService.cs index 308080bbf4..9947e50661 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/MemberGroupService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/MemberGroupService.cs @@ -1,8 +1,8 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core.Events; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Persistence.Repositories.Implement; @@ -14,9 +14,9 @@ namespace Umbraco.Core.Services.Implement { private readonly IMemberGroupRepository _memberGroupRepository; - public MemberGroupService(IScopeProvider provider, ILogger logger, IEventMessagesFactory eventMessagesFactory, + public MemberGroupService(IScopeProvider provider, ILoggerFactory loggerFactory, IEventMessagesFactory eventMessagesFactory, IMemberGroupRepository memberGroupRepository) - : base(provider, logger, eventMessagesFactory) + : base(provider, loggerFactory, eventMessagesFactory) { _memberGroupRepository = memberGroupRepository; //Proxy events! diff --git a/src/Umbraco.Infrastructure/Services/Implement/MemberService.cs b/src/Umbraco.Infrastructure/Services/Implement/MemberService.cs index b5c0dd6a46..4ae0458910 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/MemberService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/MemberService.cs @@ -1,10 +1,10 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core.Composing; using Umbraco.Core.Events; using Umbraco.Core.Exceptions; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Membership; using Umbraco.Core.Persistence.Querying; @@ -28,9 +28,9 @@ namespace Umbraco.Core.Services.Implement #region Constructor - public MemberService(IScopeProvider provider, ILogger logger, IEventMessagesFactory eventMessagesFactory, IMemberGroupService memberGroupService, + public MemberService(IScopeProvider provider, ILoggerFactory loggerFactory, IEventMessagesFactory eventMessagesFactory, IMemberGroupService memberGroupService, IMemberRepository memberRepository, IMemberTypeRepository memberTypeRepository, IMemberGroupRepository memberGroupRepository, IAuditRepository auditRepository) - : base(provider, logger, eventMessagesFactory) + : base(provider, loggerFactory, eventMessagesFactory) { _memberRepository = memberRepository; _memberTypeRepository = memberTypeRepository; @@ -981,7 +981,7 @@ namespace Umbraco.Core.Services.Implement return result.Select(x => x.Id).Distinct(); } } - + public IEnumerable GetMembersInRole(string roleName) { using (var scope = ScopeProvider.CreateScope(autoComplete: true)) diff --git a/src/Umbraco.Infrastructure/Services/Implement/MemberTypeService.cs b/src/Umbraco.Infrastructure/Services/Implement/MemberTypeService.cs index 05f32dc99c..b3c443b9a4 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/MemberTypeService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/MemberTypeService.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; +using Microsoft.Extensions.Logging; using Umbraco.Core.Events; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Scoping; @@ -12,9 +12,9 @@ namespace Umbraco.Core.Services.Implement { private readonly IMemberTypeRepository _memberTypeRepository; - public MemberTypeService(IScopeProvider provider, ILogger logger, IEventMessagesFactory eventMessagesFactory, IMemberService memberService, + public MemberTypeService(IScopeProvider provider, ILoggerFactory loggerFactory, IEventMessagesFactory eventMessagesFactory, IMemberService memberService, IMemberTypeRepository memberTypeRepository, IAuditRepository auditRepository, IEntityRepository entityRepository) - : base(provider, logger, eventMessagesFactory, memberTypeRepository, auditRepository, null, entityRepository) + : base(provider, loggerFactory, eventMessagesFactory, memberTypeRepository, auditRepository, null, entityRepository) { MemberService = memberService; _memberTypeRepository = memberTypeRepository; diff --git a/src/Umbraco.Infrastructure/Services/Implement/NotificationService.cs b/src/Umbraco.Infrastructure/Services/Implement/NotificationService.cs index 47e4ebed2c..7964cd273e 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/NotificationService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/NotificationService.cs @@ -7,9 +7,9 @@ using System.Net.Mail; using System.Text; using System.Threading; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; using Umbraco.Core.Configuration.Models; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; using Umbraco.Core.Models.Membership; @@ -28,11 +28,11 @@ namespace Umbraco.Core.Services.Implement private readonly GlobalSettings _globalSettings; private readonly ContentSettings _contentSettings; private readonly IEmailSender _emailSender; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IIOHelper _ioHelper; public NotificationService(IScopeProvider provider, IUserService userService, IContentService contentService, ILocalizationService localizationService, - ILogger logger, IIOHelper ioHelper, INotificationsRepository notificationsRepository, IOptions globalSettings, IOptions contentSettings, IEmailSender emailSender) + ILogger logger, IIOHelper ioHelper, INotificationsRepository notificationsRepository, IOptions globalSettings, IOptions contentSettings, IEmailSender emailSender) { _notificationsRepository = notificationsRepository; _globalSettings = globalSettings.Value; @@ -509,7 +509,7 @@ namespace Umbraco.Core.Services.Implement { ThreadPool.QueueUserWorkItem(state => { - _logger.Debug("Begin processing notifications."); + _logger.LogDebug("Begin processing notifications."); while (true) { NotificationRequest request; @@ -518,11 +518,11 @@ namespace Umbraco.Core.Services.Implement try { _emailSender.SendAsync(request.Mail).GetAwaiter().GetResult(); - _logger.Debug("Notification '{Action}' sent to {Username} ({Email})", request.Action, request.UserName, request.Email); + _logger.LogDebug("Notification '{Action}' sent to {Username} ({Email})", request.Action, request.UserName, request.Email); } catch (Exception ex) { - _logger.Error(ex, "An error occurred sending notification"); + _logger.LogError(ex, "An error occurred sending notification"); } finally { @@ -537,7 +537,7 @@ namespace Umbraco.Core.Services.Implement } } - _logger.Debug("Done processing notifications."); + _logger.LogDebug("Done processing notifications."); }); } diff --git a/src/Umbraco.Infrastructure/Services/Implement/PublicAccessService.cs b/src/Umbraco.Infrastructure/Services/Implement/PublicAccessService.cs index f2af6cf424..2143d638fe 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/PublicAccessService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/PublicAccessService.cs @@ -1,8 +1,8 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core.Events; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Scoping; @@ -13,9 +13,9 @@ namespace Umbraco.Core.Services.Implement { private readonly IPublicAccessRepository _publicAccessRepository; - public PublicAccessService(IScopeProvider provider, ILogger logger, IEventMessagesFactory eventMessagesFactory, + public PublicAccessService(IScopeProvider provider, ILoggerFactory loggerFactory, IEventMessagesFactory eventMessagesFactory, IPublicAccessRepository publicAccessRepository) - : base(provider, logger, eventMessagesFactory) + : base(provider, loggerFactory, eventMessagesFactory) { _publicAccessRepository = publicAccessRepository; } diff --git a/src/Umbraco.Infrastructure/Services/Implement/RedirectUrlService.cs b/src/Umbraco.Infrastructure/Services/Implement/RedirectUrlService.cs index 80816961fc..bc629044bd 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/RedirectUrlService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/RedirectUrlService.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; +using Microsoft.Extensions.Logging; using Umbraco.Core.Events; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Scoping; @@ -12,9 +12,9 @@ namespace Umbraco.Core.Services.Implement { private readonly IRedirectUrlRepository _redirectUrlRepository; - public RedirectUrlService(IScopeProvider provider, ILogger logger, IEventMessagesFactory eventMessagesFactory, + public RedirectUrlService(IScopeProvider provider, ILoggerFactory loggerFactory, IEventMessagesFactory eventMessagesFactory, IRedirectUrlRepository redirectUrlRepository) - : base(provider, logger, eventMessagesFactory) + : base(provider, loggerFactory, eventMessagesFactory) { _redirectUrlRepository = redirectUrlRepository; } diff --git a/src/Umbraco.Infrastructure/Services/Implement/RelationService.cs b/src/Umbraco.Infrastructure/Services/Implement/RelationService.cs index c629466edf..ddec99e692 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/RelationService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/RelationService.cs @@ -1,8 +1,8 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core.Events; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; using Umbraco.Core.Persistence.Repositories; @@ -17,9 +17,9 @@ namespace Umbraco.Core.Services.Implement private readonly IRelationTypeRepository _relationTypeRepository; private readonly IAuditRepository _auditRepository; - public RelationService(IScopeProvider uowProvider, ILogger logger, IEventMessagesFactory eventMessagesFactory, IEntityService entityService, + public RelationService(IScopeProvider uowProvider, ILoggerFactory loggerFactory, IEventMessagesFactory eventMessagesFactory, IEntityService entityService, IRelationRepository relationRepository, IRelationTypeRepository relationTypeRepository, IAuditRepository auditRepository) - : base(uowProvider, logger, eventMessagesFactory) + : base(uowProvider, loggerFactory, eventMessagesFactory) { _relationRepository = relationRepository; _relationTypeRepository = relationTypeRepository; @@ -193,7 +193,7 @@ namespace Umbraco.Core.Services.Implement public IEnumerable GetByRelationTypeAlias(string relationTypeAlias) { var relationType = GetRelationType(relationTypeAlias); - + return relationType == null ? Enumerable.Empty() : GetRelationsByListOfTypeIds(new[] { relationType.Id }); @@ -296,7 +296,7 @@ namespace Umbraco.Core.Services.Implement /// public IEnumerable> GetEntitiesFromRelations(IEnumerable relations) { - //TODO: Argh! N+1 + //TODO: Argh! N+1 foreach (var relation in relations) { diff --git a/src/Umbraco.Infrastructure/Services/Implement/RepositoryService.cs b/src/Umbraco.Infrastructure/Services/Implement/RepositoryService.cs index 88cbc1db76..3be66fea27 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/RepositoryService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/RepositoryService.cs @@ -1,6 +1,6 @@ using System; +using Microsoft.Extensions.Logging; using Umbraco.Core.Events; -using Umbraco.Core.Logging; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Scoping; @@ -11,15 +11,15 @@ namespace Umbraco.Core.Services.Implement /// public abstract class RepositoryService : IService { - protected ILogger Logger { get; } protected IEventMessagesFactory EventMessagesFactory { get; } protected IScopeProvider ScopeProvider { get; } + protected ILoggerFactory LoggerFactory { get; } - protected RepositoryService(IScopeProvider provider, ILogger logger, IEventMessagesFactory eventMessagesFactory) + protected RepositoryService(IScopeProvider provider, ILoggerFactory loggerFactory, IEventMessagesFactory eventMessagesFactory) { - Logger = logger ?? throw new ArgumentNullException(nameof(logger)); EventMessagesFactory = eventMessagesFactory ?? throw new ArgumentNullException(nameof(eventMessagesFactory)); ScopeProvider = provider ?? throw new ArgumentNullException(nameof(provider)); + LoggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory)); } protected IQuery Query() => ScopeProvider.SqlContext.Query(); diff --git a/src/Umbraco.Infrastructure/Services/Implement/ScopeRepositoryService.cs b/src/Umbraco.Infrastructure/Services/Implement/ScopeRepositoryService.cs index d7303991b5..9e1cf94b19 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/ScopeRepositoryService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/ScopeRepositoryService.cs @@ -1,5 +1,5 @@ -using Umbraco.Core.Events; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; +using Umbraco.Core.Events; using Umbraco.Core.Scoping; namespace Umbraco.Core.Services.Implement @@ -7,8 +7,8 @@ namespace Umbraco.Core.Services.Implement // TODO: that one does not add anything = kill public abstract class ScopeRepositoryService : RepositoryService { - protected ScopeRepositoryService(IScopeProvider provider, ILogger logger, IEventMessagesFactory eventMessagesFactory) - : base(provider, logger, eventMessagesFactory) + protected ScopeRepositoryService(IScopeProvider provider, ILoggerFactory loggerFactory, IEventMessagesFactory eventMessagesFactory) + : base(provider, loggerFactory, eventMessagesFactory) { } } } diff --git a/src/Umbraco.Infrastructure/Services/Implement/ServerRegistrationService.cs b/src/Umbraco.Infrastructure/Services/Implement/ServerRegistrationService.cs index 6a092b159f..6e5316272b 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/ServerRegistrationService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/ServerRegistrationService.cs @@ -1,10 +1,10 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core.Composing; using Umbraco.Core.Events; using Umbraco.Core.Hosting; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Persistence.Repositories.Implement; @@ -27,11 +27,11 @@ namespace Umbraco.Core.Services.Implement /// Initializes a new instance of the class. /// /// A UnitOfWork provider. - /// A logger. + /// A logger factory /// - public ServerRegistrationService(IScopeProvider scopeProvider, ILogger logger, IEventMessagesFactory eventMessagesFactory, + public ServerRegistrationService(IScopeProvider scopeProvider, ILoggerFactory loggerFactory, IEventMessagesFactory eventMessagesFactory, IServerRegistrationRepository serverRegistrationRepository, IHostingEnvironment hostingEnvironment) - : base(scopeProvider, logger, eventMessagesFactory) + : base(scopeProvider, loggerFactory, eventMessagesFactory) { _serverRegistrationRepository = serverRegistrationRepository; _hostingEnvironment = hostingEnvironment; diff --git a/src/Umbraco.Infrastructure/Services/Implement/TagService.cs b/src/Umbraco.Infrastructure/Services/Implement/TagService.cs index e888258067..a5161b22d6 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/TagService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/TagService.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; +using Microsoft.Extensions.Logging; using Umbraco.Core.Events; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Scoping; @@ -18,9 +18,9 @@ namespace Umbraco.Core.Services.Implement { private readonly ITagRepository _tagRepository; - public TagService(IScopeProvider provider, ILogger logger, IEventMessagesFactory eventMessagesFactory, + public TagService(IScopeProvider provider, ILoggerFactory loggerFactory, IEventMessagesFactory eventMessagesFactory, ITagRepository tagRepository) - : base(provider, logger, eventMessagesFactory) + : base(provider, loggerFactory, eventMessagesFactory) { _tagRepository = tagRepository; } diff --git a/src/Umbraco.Infrastructure/Services/Implement/UserService.cs b/src/Umbraco.Infrastructure/Services/Implement/UserService.cs index 5ad543dcba..a6b55a1dc3 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/UserService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/UserService.cs @@ -4,11 +4,11 @@ using System.Data.Common; using System.Globalization; using System.Linq; using System.Linq.Expressions; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Events; -using Umbraco.Core.Logging; using Umbraco.Core.Models.Membership; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Persistence.Repositories; @@ -26,15 +26,17 @@ namespace Umbraco.Core.Services.Implement private readonly IUserGroupRepository _userGroupRepository; private readonly GlobalSettings _globalSettings; private readonly bool _isUpgrading; + private readonly ILogger _logger; - public UserService(IScopeProvider provider, ILogger logger, IEventMessagesFactory eventMessagesFactory, IRuntimeState runtimeState, + public UserService(IScopeProvider provider, ILoggerFactory loggerFactory, IEventMessagesFactory eventMessagesFactory, IRuntimeState runtimeState, IUserRepository userRepository, IUserGroupRepository userGroupRepository, IOptions globalSettings) - : base(provider, logger, eventMessagesFactory) + : base(provider, loggerFactory, eventMessagesFactory) { _userRepository = userRepository; _userGroupRepository = userGroupRepository; _globalSettings = globalSettings.Value; _isUpgrading = runtimeState.Level == RuntimeLevel.Install || runtimeState.Level == RuntimeLevel.Upgrade; + _logger = loggerFactory.CreateLogger(); } #region Implementation of IMembershipUserService @@ -300,7 +302,7 @@ namespace Umbraco.Core.Services.Implement // if we are upgrading and an exception occurs, log and swallow it if (_isUpgrading == false) throw; - Logger.Warn(ex, "An error occurred attempting to save a user instance during upgrade, normally this warning can be ignored"); + _logger.LogWarning(ex, "An error occurred attempting to save a user instance during upgrade, normally this warning can be ignored"); // we don't want the uow to rollback its scope! scope.Complete(); diff --git a/src/Umbraco.Infrastructure/Suspendable.cs b/src/Umbraco.Infrastructure/Suspendable.cs index 7287d1c364..e03931d0d7 100644 --- a/src/Umbraco.Infrastructure/Suspendable.cs +++ b/src/Umbraco.Infrastructure/Suspendable.cs @@ -1,6 +1,6 @@ -using Umbraco.Composing; +using Microsoft.Extensions.Logging; +using Umbraco.Composing; using Umbraco.Core.Cache; -using Umbraco.Core.Logging; using Umbraco.Examine; using Umbraco.Web.Cache; using Umbraco.Web.Search; @@ -30,7 +30,7 @@ namespace Umbraco.Web public static void SuspendDocumentCache() { - Current.Logger.Info(typeof (PageCacheRefresher), "Suspend document cache."); + Current.Logger.LogInformation("Suspend document cache."); _suspended = true; } @@ -38,7 +38,7 @@ namespace Umbraco.Web { _suspended = false; - Current.Logger.Info(typeof (PageCacheRefresher), "Resume document cache (reload:{Tried}).", _tried); + Current.Logger.LogInformation("Resume document cache (reload:{Tried}).", _tried); if (_tried == false) return; _tried = false; @@ -66,7 +66,7 @@ namespace Umbraco.Web public static void SuspendIndexers(ILogger logger) { - logger.Info(typeof (ExamineEvents), "Suspend indexers."); + logger.LogInformation("Suspend indexers."); _suspended = true; } @@ -74,7 +74,7 @@ namespace Umbraco.Web { _suspended = false; - logger.Info(typeof (ExamineEvents), "Resume indexers (rebuild:{Tried}).", _tried); + Current.Logger.LogInformation("Resume indexers (rebuild:{Tried}).", _tried); if (_tried == false) return; _tried = false; @@ -91,13 +91,13 @@ namespace Umbraco.Web public static void Suspend() { - Current.Logger.Info(typeof (ScheduledPublishing), "Suspend scheduled publishing."); + Current.Logger.LogInformation("Suspend scheduled publishing."); _suspended = true; } public static void Resume() { - Current.Logger.Info(typeof (ScheduledPublishing), "Resume scheduled publishing."); + Current.Logger.LogInformation("Resume scheduled publishing."); _suspended = false; } } diff --git a/src/Umbraco.Infrastructure/Sync/DatabaseServerMessenger.cs b/src/Umbraco.Infrastructure/Sync/DatabaseServerMessenger.cs index 2f6bb61e42..16a83f45fe 100644 --- a/src/Umbraco.Infrastructure/Sync/DatabaseServerMessenger.cs +++ b/src/Umbraco.Infrastructure/Sync/DatabaseServerMessenger.cs @@ -8,6 +8,7 @@ using System.Threading; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using NPoco; +using Microsoft.Extensions.Logging; using Umbraco.Core.Cache; using Umbraco.Core.Composing; using Umbraco.Core.Logging; @@ -47,7 +48,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 +59,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); @@ -72,7 +73,7 @@ namespace Umbraco.Core.Sync + "] " + Guid.NewGuid().ToString("N").ToUpper(); // make it truly unique } - protected ILogger Logger { get; } + protected ILogger Logger { get; } protected IScopeProvider ScopeProvider { get; } @@ -151,7 +152,7 @@ namespace Umbraco.Core.Sync var idle =_syncIdle.WaitOne(5000); if (idle == false) { - Logger.Warn("The wait lock timed out, application is shutting down. The current instruction batch will be re-processed."); + Logger.LogWarning("The wait lock timed out, application is shutting down. The current instruction batch will be re-processed."); } }, weight); @@ -187,7 +188,7 @@ namespace Umbraco.Core.Sync { // we haven't synced - in this case we aren't going to sync the whole thing, we will assume this is a new // server and it will need to rebuild it's own caches, eg Lucene or the xml cache file. - Logger.Warn("No last synced Id found, this generally means this is a new server/install." + Logger.LogWarning("No last synced Id found, this generally means this is a new server/install." + " The server will build its caches and indexes, and then adjust its last synced Id to the latest found in" + " the database and maintain cache updates based on that Id."); @@ -201,7 +202,7 @@ namespace Umbraco.Core.Sync if (count > Options.MaxProcessingInstructionCount) { //too many instructions, proceed to cold boot - Logger.Warn( + Logger.LogWarning( "The instruction count ({InstructionCount}) exceeds the specified MaxProcessingInstructionCount ({MaxProcessingInstructionCount})." + " The server will skip existing instructions, rebuild its caches and indexes entirely, adjust its last synced Id" + " to the latest found in the database and maintain cache updates based on that Id.", @@ -361,7 +362,7 @@ namespace Umbraco.Core.Sync } catch (JsonException ex) { - Logger.Error(ex, "Failed to deserialize instructions ({DtoId}: '{DtoInstructions}').", + Logger.LogError(ex, "Failed to deserialize instructions ({DtoId}: '{DtoInstructions}').", dto.Id, dto.Instructions); @@ -377,7 +378,7 @@ namespace Umbraco.Core.Sync //if they couldn't be all processed (i.e. we're shutting down) then exit if (success == false) { - Logger.Info("The current batch of instructions was not processed, app is shutting down"); + Logger.LogInformation("The current batch of instructions was not processed, app is shutting down"); break; } @@ -419,7 +420,7 @@ namespace Umbraco.Core.Sync //} catch (Exception ex) { - Logger.Error( + Logger.LogError( ex, "DISTRIBUTED CACHE IS NOT UPDATED. Failed to execute instructions ({DtoId}: '{DtoInstructions}'). Instruction is being skipped/ignored", dto.Id, diff --git a/src/Umbraco.Infrastructure/Sync/ServerMessengerBase.cs b/src/Umbraco.Infrastructure/Sync/ServerMessengerBase.cs index b65254b181..d115bc7595 100644 --- a/src/Umbraco.Infrastructure/Sync/ServerMessengerBase.cs +++ b/src/Umbraco.Infrastructure/Sync/ServerMessengerBase.cs @@ -4,7 +4,7 @@ using System.Linq; using Newtonsoft.Json; using Umbraco.Composing; using Umbraco.Core.Cache; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; namespace Umbraco.Core.Sync { @@ -157,7 +157,7 @@ namespace Umbraco.Core.Sync { if (refresher == null) throw new ArgumentNullException(nameof(refresher)); - Current.Logger.Debug("Invoking refresher {RefresherType} on local server for message type RefreshByPayload", refresher.GetType()); + Current.Logger.LogDebug("Invoking refresher {RefresherType} on local server for message type RefreshByPayload", refresher.GetType()); var payloadRefresher = refresher as IPayloadCacheRefresher; if (payloadRefresher == null) @@ -179,7 +179,7 @@ namespace Umbraco.Core.Sync { if (refresher == null) throw new ArgumentNullException(nameof(refresher)); - Current.Logger.Debug("Invoking refresher {RefresherType} on local server for message type {MessageType}", refresher.GetType(), messageType); + Current.Logger.LogDebug("Invoking refresher {RefresherType} on local server for message type {MessageType}", refresher.GetType(), messageType); switch (messageType) { @@ -240,7 +240,7 @@ namespace Umbraco.Core.Sync { if (refresher == null) throw new ArgumentNullException(nameof(refresher)); - Current.Logger.Debug("Invoking refresher {RefresherType} on local server for message type {MessageType}", refresher.GetType(), messageType); + Current.Logger.LogDebug("Invoking refresher {RefresherType} on local server for message type {MessageType}", refresher.GetType(), messageType); var typedRefresher = refresher as ICacheRefresher; @@ -276,7 +276,7 @@ namespace Umbraco.Core.Sync //{ // if (refresher == null) throw new ArgumentNullException("refresher"); - // Current.Logger.Debug("Invoking refresher {0} on local server for message type Notify", + // Current.Logger.LogDebug("Invoking refresher {0} on local server for message type Notify", // () => refresher.GetType()); // refresher.Notify(payload); diff --git a/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj b/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj index 4da891427f..81ba8ca6cd 100644 --- a/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj +++ b/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj @@ -14,6 +14,8 @@ + + @@ -91,6 +93,9 @@ <_Parameter1>Umbraco.Tests.UnitTests + + <_Parameter1>DynamicProxyGenAssembly2 + diff --git a/src/Umbraco.ModelsBuilder.Embedded/LiveModelsProvider.cs b/src/Umbraco.ModelsBuilder.Embedded/LiveModelsProvider.cs index 628e66bc6a..b8488e0852 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/LiveModelsProvider.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/LiveModelsProvider.cs @@ -2,11 +2,11 @@ using System.Threading; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http.Extensions; +using Microsoft.Extensions.Logging; using Umbraco.Core.Configuration; using Umbraco.Configuration; using Umbraco.Core; using Umbraco.Core.Hosting; -using Umbraco.Core.Logging; using Umbraco.ModelsBuilder.Embedded.Building; using Umbraco.Web.Cache; using Umbraco.Core.Configuration.Models; @@ -19,7 +19,7 @@ namespace Umbraco.ModelsBuilder.Embedded { private static Mutex _mutex; private static int _req; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly ModelsBuilderSettings _config; private readonly ModelsGenerator _modelGenerator; private readonly ModelsGenerationError _mbErrors; @@ -28,7 +28,7 @@ namespace Umbraco.ModelsBuilder.Embedded // we do not manage pure live here internal bool IsEnabled => _config.ModelsMode.IsLiveNotPure(); - public LiveModelsProvider(ILogger logger, IOptions config, ModelsGenerator modelGenerator, ModelsGenerationError mbErrors, IHostingEnvironment hostingEnvironment) + public LiveModelsProvider(ILogger logger, IOptions config, ModelsGenerator modelGenerator, ModelsGenerationError mbErrors, IHostingEnvironment hostingEnvironment) { _logger = logger; _config = config.Value ?? throw new ArgumentNullException(nameof(config)); @@ -70,7 +70,7 @@ namespace Umbraco.ModelsBuilder.Embedded private void RequestModelsGeneration(object sender, EventArgs args) { //HttpContext.Current.Items[this] = true; - _logger.Debug("Requested to generate models."); + _logger.LogDebug("Requested to generate models."); Interlocked.Exchange(ref _req, 1); } @@ -84,22 +84,22 @@ namespace Umbraco.ModelsBuilder.Embedded try { - _logger.Debug("Generate models..."); + _logger.LogDebug("Generate models..."); const int timeout = 2 * 60 * 1000; // 2 mins _mutex.WaitOne(timeout); // wait until it is safe, and acquire - _logger.Info("Generate models now."); + _logger.LogInformation("Generate models now."); GenerateModels(); _mbErrors.Clear(); - _logger.Info("Generated."); + _logger.LogInformation("Generated."); } catch (TimeoutException) { - _logger.Warn("Timeout, models were NOT generated."); + _logger.LogWarning("Timeout, models were NOT generated."); } catch (Exception e) { _mbErrors.Report("Failed to build Live models.", e); - _logger.Error("Failed to generate models.", e); + _logger.LogError("Failed to generate models.", e); } finally { diff --git a/src/Umbraco.ModelsBuilder.Embedded/PureLiveModelFactory.cs b/src/Umbraco.ModelsBuilder.Embedded/PureLiveModelFactory.cs index 00c5ec723d..e52e438b43 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/PureLiveModelFactory.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/PureLiveModelFactory.cs @@ -8,6 +8,7 @@ using System.Reflection.Emit; using System.Text; using System.Text.RegularExpressions; using System.Threading; +using Microsoft.Extensions.Logging; using Umbraco.Core.Configuration; using Umbraco.Core; using Umbraco.Core.Hosting; @@ -26,7 +27,8 @@ namespace Umbraco.ModelsBuilder.Embedded private readonly ReaderWriterLockSlim _locker = new ReaderWriterLockSlim(); private volatile bool _hasModels; // volatile 'cos reading outside lock private bool _pendingRebuild; - private readonly IProfilingLogger _logger; + private readonly IProfilingLogger _profilingLogger; + private readonly ILogger _logger; private readonly FileSystemWatcher _watcher; private int _ver, _skipver; private readonly int _debugLevel; @@ -46,13 +48,15 @@ namespace Umbraco.ModelsBuilder.Embedded public PureLiveModelFactory( Lazy umbracoServices, - IProfilingLogger logger, + IProfilingLogger profilingLogger, + ILogger logger, IOptions config, IHostingEnvironment hostingEnvironment, IApplicationShutdownRegistry hostingLifetime, IPublishedValueFallback publishedValueFallback) { _umbracoServices = umbracoServices; + _profilingLogger = profilingLogger; _logger = logger; _config = config.Value; _hostingEnvironment = hostingEnvironment; @@ -214,7 +218,7 @@ namespace Umbraco.ModelsBuilder.Embedded // tells the factory that it should build a new generation of models private void ResetModels() { - _logger.Debug("Resetting models."); + _logger.LogDebug("Resetting models."); try { @@ -256,7 +260,7 @@ namespace Umbraco.ModelsBuilder.Embedded internal Infos EnsureModels() { if (_debugLevel > 0) - _logger.Debug("Ensuring models."); + _logger.LogDebug("Ensuring models."); // don't use an upgradeable lock here because only 1 thread at a time could enter it try @@ -288,7 +292,7 @@ namespace Umbraco.ModelsBuilder.Embedded // either they haven't been loaded from the cache yet // or they have been reseted and are pending a rebuild - using (_logger.DebugDuration("Get models.", "Got models.")) + using (_profilingLogger.DebugDuration("Get models.", "Got models.")) { try { @@ -307,8 +311,8 @@ namespace Umbraco.ModelsBuilder.Embedded { try { - _logger.Error("Failed to build models.", e); - _logger.Warn("Running without models."); // be explicit + _logger.LogError(e, "Failed to build models."); + _logger.LogWarning("Running without models."); // be explicit _errors.Report("Failed to build PureLive models.", e); } finally @@ -374,13 +378,13 @@ namespace Umbraco.ModelsBuilder.Embedded if (!forceRebuild) { - _logger.Debug("Looking for cached models."); + _logger.LogDebug("Looking for cached models."); if (File.Exists(modelsHashFile) && File.Exists(projFile)) { var cachedHash = File.ReadAllText(modelsHashFile); if (currentHash != cachedHash) { - _logger.Debug("Found obsolete cached models."); + _logger.LogDebug("Found obsolete cached models."); forceRebuild = true; } @@ -388,7 +392,7 @@ namespace Umbraco.ModelsBuilder.Embedded } else { - _logger.Debug("Could not find cached models."); + _logger.LogDebug("Could not find cached models."); forceRebuild = true; } } @@ -405,7 +409,7 @@ namespace Umbraco.ModelsBuilder.Embedded { var dllPath = File.ReadAllText(dllPathFile); - _logger.Debug($"Cached models dll at {dllPath}."); + _logger.LogDebug($"Cached models dll at {dllPath}."); if (File.Exists(dllPath) && !File.Exists(dllPath + ".delete")) { @@ -420,18 +424,18 @@ namespace Umbraco.ModelsBuilder.Embedded // with the "same but different" version of the assembly in memory _skipver = assembly.GetName().Version.Revision; - _logger.Debug("Loading cached models (dll)."); + _logger.LogDebug("Loading cached models (dll)."); return assembly; } - _logger.Debug("Cached models dll cannot be loaded (invalid assembly)."); + _logger.LogDebug("Cached models dll cannot be loaded (invalid assembly)."); } else if (!File.Exists(dllPath)) - _logger.Debug("Cached models dll does not exist."); + _logger.LogDebug("Cached models dll does not exist."); else if (File.Exists(dllPath + ".delete")) - _logger.Debug("Cached models dll is marked for deletion."); + _logger.LogDebug("Cached models dll is marked for deletion."); else - _logger.Debug("Cached models dll cannot be loaded (why?)."); + _logger.LogDebug("Cached models dll cannot be loaded (why?)."); } // must reset the version in the file else it would keep growing @@ -460,12 +464,12 @@ namespace Umbraco.ModelsBuilder.Embedded throw; } - _logger.Debug("Loading cached models (source)."); + _logger.LogDebug("Loading cached models (source)."); return assembly; } // need to rebuild - _logger.Debug("Rebuilding models."); + _logger.LogDebug("Rebuilding models."); // generate code, save var code = GenerateModelsCode(typeModels); @@ -502,7 +506,7 @@ namespace Umbraco.ModelsBuilder.Embedded throw; } - _logger.Debug("Done rebuilding."); + _logger.LogDebug("Done rebuilding."); return assembly; } @@ -539,7 +543,7 @@ namespace Umbraco.ModelsBuilder.Embedded private void ClearOnFailingToCompile(string dllPathFile, string modelsHashFile, string projFile) { - _logger.Debug("Failed to compile."); + _logger.LogDebug("Failed to compile."); // the dll file reference still points to the previous dll, which is obsolete // now and will be deleted by ASP.NET eventually, so better clear that reference. @@ -706,7 +710,7 @@ namespace Umbraco.ModelsBuilder.Embedded //if (_building && OurFiles.Contains(changed)) //{ - // //_logger.Info("Ignoring files self-changes."); + // //_logger.LogInformation("Ignoring files self-changes."); // return; //} @@ -714,7 +718,7 @@ namespace Umbraco.ModelsBuilder.Embedded if (OurFiles.Contains(changed)) return; - _logger.Info("Detected files changes."); + _logger.LogInformation("Detected files changes."); lock (SyncRoot) // don't reset while being locked ResetModels(); diff --git a/src/Umbraco.PublishedCache.NuCache/ContentStore.cs b/src/Umbraco.PublishedCache.NuCache/ContentStore.cs index 48bb2c4069..e33381d858 100644 --- a/src/Umbraco.PublishedCache.NuCache/ContentStore.cs +++ b/src/Umbraco.PublishedCache.NuCache/ContentStore.cs @@ -5,9 +5,9 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; using CSharpTest.Net.Collections; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Exceptions; -using Umbraco.Core.Logging; using Umbraco.Core.Models.PublishedContent; using Umbraco.Core.Scoping; using Umbraco.Web.PublishedCache.NuCache.Snap; @@ -35,18 +35,19 @@ namespace Umbraco.Web.PublishedCache.NuCache private readonly IPublishedSnapshotAccessor _publishedSnapshotAccessor; private readonly IVariationContextAccessor _variationContextAccessor; + private readonly ILogger _logger; + private readonly ILoggerFactory _loggerFactory; private readonly ConcurrentDictionary> _contentNodes; private LinkedNode _root; // We must keep separate dictionaries for by id and by alias because we track these in snapshot/layers // and it is possible that the alias of a content type can be different for the same id in another layer // whereas the GUID -> INT cross reference can never be different - private readonly ConcurrentDictionary> _contentTypesById; + private readonly ConcurrentDictionary> _contentTypesById; private readonly ConcurrentDictionary> _contentTypesByAlias; private readonly ConcurrentDictionary _contentTypeKeyToIdMap; private readonly ConcurrentDictionary _contentKeyToIdMap; - private readonly ILogger _logger; private readonly IPublishedModelFactory _publishedModelFactory; private BPlusTree _localDb; private readonly ConcurrentQueue _genObjs; @@ -68,12 +69,14 @@ namespace Umbraco.Web.PublishedCache.NuCache IPublishedSnapshotAccessor publishedSnapshotAccessor, IVariationContextAccessor variationContextAccessor, ILogger logger, + ILoggerFactory loggerFactory, IPublishedModelFactory publishedModelFactory, BPlusTree localDb = null) { _publishedSnapshotAccessor = publishedSnapshotAccessor; _variationContextAccessor = variationContextAccessor; _logger = logger; + _loggerFactory = loggerFactory; _publishedModelFactory = publishedModelFactory; _localDb = localDb; @@ -253,7 +256,7 @@ namespace Umbraco.Web.PublishedCache.NuCache catch (Exception ex) { /* TBD: May already be throwing so don't throw again */ - _logger.Error(ex, "Error trying to release DB"); + _logger.LogError(ex, "Error trying to release DB"); } finally { @@ -264,7 +267,7 @@ namespace Umbraco.Web.PublishedCache.NuCache } catch (Exception ex) { - _logger.Error(ex, "Error trying to lock"); + _logger.LogError(ex, "Error trying to lock"); throw; } finally @@ -521,7 +524,7 @@ namespace Umbraco.Web.PublishedCache.NuCache parent = GetParentLink(kit.Node, null); if (parent == null) { - _logger.Warn($"Skip item id={kit.Node.Id}, could not find parent id={kit.Node.ParentContentId}."); + _logger.LogWarning($"Skip item id={kit.Node.Id}, could not find parent id={kit.Node.ParentContentId}."); return false; } @@ -530,21 +533,21 @@ namespace Umbraco.Web.PublishedCache.NuCache // because the data sort operation is by path. if (parent.Value == null) { - _logger.Warn($"Skip item id={kit.Node.Id}, no Data assigned for linked node with path {kit.Node.Path} and parent id {kit.Node.ParentContentId}. This can indicate data corruption for the Path value for node {kit.Node.Id}. See the Health Check dashboard in Settings to resolve data integrity issues."); + _logger.LogWarning($"Skip item id={kit.Node.Id}, no Data assigned for linked node with path {kit.Node.Path} and parent id {kit.Node.ParentContentId}. This can indicate data corruption for the Path value for node {kit.Node.Id}. See the Health Check dashboard in Settings to resolve data integrity issues."); return false; } // make sure the kit is valid if (kit.DraftData == null && kit.PublishedData == null) { - _logger.Warn($"Skip item id={kit.Node.Id}, both draft and published data are null."); + _logger.LogWarning($"Skip item id={kit.Node.Id}, both draft and published data are null."); return false; } // unknown = bad if (_contentTypesById.TryGetValue(kit.ContentTypeId, out var link) == false || link.Value == null) { - _logger.Warn($"Skip item id={kit.Node.Id}, could not find content type id={kit.ContentTypeId}."); + _logger.LogWarning($"Skip item id={kit.Node.Id}, could not find content type id={kit.ContentTypeId}."); return false; } @@ -601,7 +604,7 @@ namespace Umbraco.Web.PublishedCache.NuCache throw new ArgumentException("Kit content cannot have children.", nameof(kit)); // ReSharper restore LocalizableElement - _logger.Debug("Set content ID: {KitNodeId}", kit.Node.Id); + _logger.LogDebug("Set content ID: {KitNodeId}", kit.Node.Id); // get existing _contentNodes.TryGetValue(kit.Node.Id, out var link); @@ -720,7 +723,7 @@ namespace Umbraco.Web.PublishedCache.NuCache previousNode = null; // there is no previous sibling } - _logger.Debug($"Set {thisNode.Id} with parent {thisNode.ParentContentId}"); + _logger.LogDebug($"Set {thisNode.Id} with parent {thisNode.ParentContentId}"); SetValueLocked(_contentNodes, thisNode.Id, thisNode); // if we are initializing from the database source ensure the local db is updated @@ -777,7 +780,7 @@ namespace Umbraco.Web.PublishedCache.NuCache ok = false; continue; // skip that one } - _logger.Debug($"Set {kit.Node.Id} with parent {kit.Node.ParentContentId}"); + _logger.LogDebug($"Set {kit.Node.Id} with parent {kit.Node.ParentContentId}"); SetValueLocked(_contentNodes, kit.Node.Id, kit.Node); if (_localDb != null) RegisterChange(kit.Node.Id, kit); @@ -866,7 +869,7 @@ namespace Umbraco.Web.PublishedCache.NuCache if (link?.Value == null) return false; var content = link.Value; - _logger.Debug("Clear content ID: {ContentId}", content.Id); + _logger.LogDebug("Clear content ID: {ContentId}", content.Id); // clear the entire branch ClearBranchLocked(content); @@ -1059,7 +1062,7 @@ namespace Umbraco.Web.PublishedCache.NuCache var parent = parentLink.Value; // We are doing a null check here but this should no longer be possible because we have a null check in BuildKit - // for the parent.Value property and we'll output a warning. However I'll leave this additional null check in place. + // for the parent.Value property and we'll output a warning. However I'll leave this additional null check in place. // see https://github.com/umbraco/Umbraco-CMS/issues/7868 if (parent == null) throw new PanicException($"A null Value was returned on the {nameof(parentLink)} LinkedNode with id={content.ParentContentId}, potentially your database paths are corrupted."); @@ -1308,7 +1311,7 @@ namespace Umbraco.Web.PublishedCache.NuCache if (_nextGen == false && _genObj != null) return new Snapshot(this, _genObj.GetGenRef() #if DEBUG - , _logger + , _loggerFactory.CreateLogger() #endif ); @@ -1344,7 +1347,7 @@ namespace Umbraco.Web.PublishedCache.NuCache var snapshot = new Snapshot(this, _genObj.GetGenRef() #if DEBUG - , _logger + , _loggerFactory.CreateLogger() #endif ); @@ -1358,7 +1361,7 @@ namespace Umbraco.Web.PublishedCache.NuCache public Snapshot LiveSnapshot => new Snapshot(this, _liveGen #if DEBUG - , _logger + , _loggerFactory.CreateLogger() #endif ); @@ -1393,14 +1396,14 @@ namespace Umbraco.Web.PublishedCache.NuCache { // see notes in CreateSnapshot #if DEBUG - _logger.Debug("Collect."); + _logger.LogDebug("Collect."); #endif while (_genObjs.TryPeek(out var genObj) && (genObj.Count == 0 || genObj.WeakGenRef.IsAlive == false)) { _genObjs.TryDequeue(out genObj); // cannot fail since TryPeek has succeeded _floorGen = genObj.Gen; #if DEBUG - //_logger.Debug("_floorGen=" + _floorGen + ", _liveGen=" + _liveGen); + //_logger.LogDebug("_floorGen=" + _floorGen + ", _liveGen=" + _liveGen); #endif } @@ -1438,7 +1441,7 @@ namespace Umbraco.Web.PublishedCache.NuCache var link = kvp.Value; #if DEBUG - //_logger.Debug("Collect id:" + kvp.Key + ", gen:" + link.Gen + + //_logger.LogDebug("Collect id:" + kvp.Key + ", gen:" + link.Gen + // ", nxt:" + (link.Next == null ? "null" : "link") + // ", val:" + (link.Value == null ? "null" : "value")); #endif @@ -1546,7 +1549,7 @@ namespace Umbraco.Web.PublishedCache.NuCache private readonly GenRef _genRef; private long _gen; #if DEBUG - private readonly ILogger _logger; + private readonly ILogger _logger; #endif //private static int _count; @@ -1554,7 +1557,7 @@ namespace Umbraco.Web.PublishedCache.NuCache internal Snapshot(ContentStore store, GenRef genRef #if DEBUG - , ILogger logger + , ILogger logger #endif ) { @@ -1566,13 +1569,13 @@ namespace Umbraco.Web.PublishedCache.NuCache #if DEBUG _logger = logger; - _logger.Debug("Creating snapshot."); + _logger.LogDebug("Creating snapshot."); #endif } internal Snapshot(ContentStore store, long gen #if DEBUG - , ILogger logger + , ILogger logger #endif ) { @@ -1581,7 +1584,7 @@ namespace Umbraco.Web.PublishedCache.NuCache #if DEBUG _logger = logger; - _logger.Debug("Creating live."); + _logger.LogDebug("Creating live."); #endif } @@ -1669,7 +1672,7 @@ namespace Umbraco.Web.PublishedCache.NuCache { if (_gen < 0) return; #if DEBUG - _logger.Debug("Dispose snapshot ({Snapshot})", _genRef?.GenObj.Count.ToString() ?? "live"); + _logger.LogDebug("Dispose snapshot ({Snapshot})", _genRef?.GenObj.Count.ToString() ?? "live"); #endif _gen = -1; if (_genRef != null) diff --git a/src/Umbraco.PublishedCache.NuCache/DataSource/DatabaseDataSource.cs b/src/Umbraco.PublishedCache.NuCache/DataSource/DatabaseDataSource.cs index 3fedfbb7eb..bdcd8fe3e3 100644 --- a/src/Umbraco.PublishedCache.NuCache/DataSource/DatabaseDataSource.cs +++ b/src/Umbraco.PublishedCache.NuCache/DataSource/DatabaseDataSource.cs @@ -2,10 +2,10 @@ using System.Collections.Generic; using System.Diagnostics; using System.Linq; +using Microsoft.Extensions.Logging; using Newtonsoft.Json; using NPoco; using Umbraco.Core; -using Umbraco.Core.Logging; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Dtos; using Umbraco.Core.Scoping; @@ -21,9 +21,9 @@ namespace Umbraco.Web.PublishedCache.NuCache.DataSource { private const int PageSize = 500; - private readonly ILogger _logger; + private readonly ILogger _logger; - public DatabaseDataSource(ILogger logger) + public DatabaseDataSource(ILogger logger) { _logger = logger ?? throw new ArgumentNullException(nameof(logger)); } @@ -215,7 +215,7 @@ namespace Umbraco.Web.PublishedCache.NuCache.DataSource { if (Debugger.IsAttached) throw new InvalidOperationException("Missing cmsContentNu edited content for node " + dto.Id + ", consider rebuilding."); - _logger.Warn("Missing cmsContentNu edited content for node {NodeId}, consider rebuilding.", dto.Id); + _logger.LogWarning("Missing cmsContentNu edited content for node {NodeId}, consider rebuilding.", dto.Id); } else { @@ -242,7 +242,7 @@ namespace Umbraco.Web.PublishedCache.NuCache.DataSource { if (Debugger.IsAttached) throw new InvalidOperationException("Missing cmsContentNu published content for node " + dto.Id + ", consider rebuilding."); - _logger.Warn("Missing cmsContentNu published content for node {NodeId}, consider rebuilding.", dto.Id); + _logger.LogWarning("Missing cmsContentNu published content for node {NodeId}, consider rebuilding.", dto.Id); } else { diff --git a/src/Umbraco.PublishedCache.NuCache/PublishedSnapshotService.cs b/src/Umbraco.PublishedCache.NuCache/PublishedSnapshotService.cs index adadef337f..688515ad33 100644 --- a/src/Umbraco.PublishedCache.NuCache/PublishedSnapshotService.cs +++ b/src/Umbraco.PublishedCache.NuCache/PublishedSnapshotService.cs @@ -7,6 +7,7 @@ using System.Threading; using System.Threading.Tasks; using CSharpTest.Net.Collections; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; using Newtonsoft.Json; using Umbraco.Core; using Umbraco.Core.Cache; @@ -41,9 +42,11 @@ namespace Umbraco.Web.PublishedCache.NuCache { private readonly ServiceContext _serviceContext; private readonly IPublishedContentTypeFactory _publishedContentTypeFactory; + private readonly IProfilingLogger _profilingLogger; private readonly IScopeProvider _scopeProvider; private readonly IDataSource _dataSource; - private readonly IProfilingLogger _logger; + private readonly ILogger _logger; + private readonly ILoggerFactory _loggerFactory; private readonly IDocumentRepository _documentRepository; private readonly IMediaRepository _mediaRepository; private readonly IMemberRepository _memberRepository; @@ -83,7 +86,10 @@ namespace Umbraco.Web.PublishedCache.NuCache public PublishedSnapshotService(PublishedSnapshotServiceOptions options, IMainDom mainDom, IRuntimeState runtime, ServiceContext serviceContext, IPublishedContentTypeFactory publishedContentTypeFactory, - IPublishedSnapshotAccessor publishedSnapshotAccessor, IVariationContextAccessor variationContextAccessor, IProfilingLogger logger, IScopeProvider scopeProvider, + IPublishedSnapshotAccessor publishedSnapshotAccessor, IVariationContextAccessor variationContextAccessor, + IProfilingLogger profilingLogger, + ILoggerFactory loggerFactory, + IScopeProvider scopeProvider, IDocumentRepository documentRepository, IMediaRepository mediaRepository, IMemberRepository memberRepository, IDefaultCultureAccessor defaultCultureAccessor, IDataSource dataSource, @@ -102,8 +108,10 @@ namespace Umbraco.Web.PublishedCache.NuCache _serviceContext = serviceContext; _publishedContentTypeFactory = publishedContentTypeFactory; + _profilingLogger = profilingLogger; _dataSource = dataSource; - _logger = logger; + _loggerFactory = loggerFactory; + _logger = _loggerFactory.CreateLogger(); _scopeProvider = scopeProvider; _documentRepository = documentRepository; _mediaRepository = mediaRepository; @@ -148,17 +156,17 @@ namespace Umbraco.Web.PublishedCache.NuCache // stores need to be populated, happens in OnResolutionFrozen which uses _localDbExists to // figure out whether it can read the databases or it should populate them from sql - _logger.Info("Creating the content store, localContentDbExists? {LocalContentDbExists}", _localContentDbExists); - _contentStore = new ContentStore(publishedSnapshotAccessor, variationContextAccessor, logger, publishedModelFactory, _localContentDb); - _logger.Info("Creating the media store, localMediaDbExists? {LocalMediaDbExists}", _localMediaDbExists); - _mediaStore = new ContentStore(publishedSnapshotAccessor, variationContextAccessor, logger, publishedModelFactory, _localMediaDb); + _logger.LogInformation("Creating the content store, localContentDbExists? {LocalContentDbExists}", _localContentDbExists); + _contentStore = new ContentStore(publishedSnapshotAccessor, variationContextAccessor, _loggerFactory.CreateLogger("ContentStore"), _loggerFactory, publishedModelFactory, _localContentDb); + _logger.LogInformation("Creating the media store, localMediaDbExists? {LocalMediaDbExists}", _localMediaDbExists); + _mediaStore = new ContentStore(publishedSnapshotAccessor, variationContextAccessor, _loggerFactory.CreateLogger("ContentStore"), _loggerFactory, publishedModelFactory, _localMediaDb); } else { - _logger.Info("Creating the content store (local db ignored)"); - _contentStore = new ContentStore(publishedSnapshotAccessor, variationContextAccessor, logger, publishedModelFactory); - _logger.Info("Creating the media store (local db ignored)"); - _mediaStore = new ContentStore(publishedSnapshotAccessor, variationContextAccessor, logger, publishedModelFactory); + _logger.LogInformation("Creating the content store (local db ignored)"); + _contentStore = new ContentStore(publishedSnapshotAccessor, variationContextAccessor, _loggerFactory.CreateLogger("ContentStore"), _loggerFactory, publishedModelFactory); + _logger.LogInformation("Creating the media store (local db ignored)"); + _mediaStore = new ContentStore(publishedSnapshotAccessor, variationContextAccessor, _loggerFactory.CreateLogger("ContentStore"), _loggerFactory, publishedModelFactory); } _domainStore = new SnapDictionary(); @@ -204,7 +212,7 @@ namespace Umbraco.Web.PublishedCache.NuCache _localContentDb = BTree.GetTree(localContentDbPath, _localContentDbExists, _config); _localMediaDb = BTree.GetTree(localMediaDbPath, _localMediaDbExists, _config); - _logger.Info("Registered with MainDom, localContentDbExists? {LocalContentDbExists}, localMediaDbExists? {LocalMediaDbExists}", _localContentDbExists, _localMediaDbExists); + _logger.LogInformation("Registered with MainDom, localContentDbExists? {LocalContentDbExists}, localMediaDbExists? {LocalMediaDbExists}", _localContentDbExists, _localMediaDbExists); } /// @@ -215,19 +223,19 @@ namespace Umbraco.Web.PublishedCache.NuCache /// private void MainDomRelease() { - _logger.Debug("Releasing from MainDom..."); + _logger.LogDebug("Releasing from MainDom..."); lock (_storesLock) { - _logger.Debug("Releasing content store..."); + _logger.LogDebug("Releasing content store..."); _contentStore?.ReleaseLocalDb(); //null check because we could shut down before being assigned _localContentDb = null; - _logger.Debug("Releasing media store..."); + _logger.LogDebug("Releasing media store..."); _mediaStore?.ReleaseLocalDb(); //null check because we could shut down before being assigned _localMediaDb = null; - _logger.Info("Released from MainDom"); + _logger.LogInformation("Released from MainDom"); } } @@ -246,14 +254,14 @@ namespace Umbraco.Web.PublishedCache.NuCache { okContent = LockAndLoadContent(scope => LoadContentFromLocalDbLocked(true)); if (!okContent) - _logger.Warn("Loading content from local db raised warnings, will reload from database."); + _logger.LogWarning("Loading content from local db raised warnings, will reload from database."); } if (_localMediaDbExists) { okMedia = LockAndLoadMedia(scope => LoadMediaFromLocalDbLocked(true)); if (!okMedia) - _logger.Warn("Loading media from local db raised warnings, will reload from database."); + _logger.LogWarning("Loading media from local db raised warnings, will reload from database."); } if (!okContent) @@ -266,7 +274,7 @@ namespace Umbraco.Web.PublishedCache.NuCache } catch (Exception ex) { - _logger.Fatal(ex, "Panic, exception while loading cache data."); + _logger.LogCritical(ex, "Panic, exception while loading cache data."); throw; } @@ -409,7 +417,7 @@ namespace Umbraco.Web.PublishedCache.NuCache _contentStore.SetAllContentTypesLocked(contentTypes); - using (_logger.TraceDuration("Loading content from database")) + using (_profilingLogger.TraceDuration("Loading content from database")) { // beware! at that point the cache is inconsistent, // assuming we are going to SetAll content items! @@ -428,7 +436,7 @@ namespace Umbraco.Web.PublishedCache.NuCache .Select(x => _publishedContentTypeFactory.CreateContentType(x)); _contentStore.SetAllContentTypesLocked(contentTypes); - using (_logger.TraceDuration("Loading content from local cache file")) + using (_profilingLogger.TraceDuration("Loading content from local cache file")) { // beware! at that point the cache is inconsistent, // assuming we are going to SetAll content items! @@ -480,14 +488,14 @@ namespace Umbraco.Web.PublishedCache.NuCache .Select(x => _publishedContentTypeFactory.CreateContentType(x)); _mediaStore.SetAllContentTypesLocked(mediaTypes); - using (_logger.TraceDuration("Loading media from database")) + using (_profilingLogger.TraceDuration("Loading media from database")) { // beware! at that point the cache is inconsistent, // assuming we are going to SetAll content items! _localMediaDb?.Clear(); - _logger.Debug("Loading media from database..."); + _logger.LogDebug("Loading media from database..."); // IMPORTANT GetAllMediaSources sorts kits by level + parentId + sortOrder var kits = _dataSource.GetAllMediaSources(scope); return onStartup ? _mediaStore.SetAllFastSortedLocked(kits, true) : _mediaStore.SetAllLocked(kits); @@ -500,7 +508,7 @@ namespace Umbraco.Web.PublishedCache.NuCache .Select(x => _publishedContentTypeFactory.CreateContentType(x)); _mediaStore.SetAllContentTypesLocked(mediaTypes); - using (_logger.TraceDuration("Loading media from local cache file")) + using (_profilingLogger.TraceDuration("Loading media from local cache file")) { // beware! at that point the cache is inconsistent, // assuming we are going to SetAll content items! @@ -535,7 +543,7 @@ namespace Umbraco.Web.PublishedCache.NuCache // Update: We will still return false here even though the above mentioned race condition has been fixed since we now // lock the entire operation of creating/populating the cache file with the same lock as releasing/closing the cache file - _logger.Info($"Tried to load {entityType} from the local cache file but it was empty."); + _logger.LogInformation($"Tried to load {entityType} from the local cache file but it was empty."); return false; } @@ -712,7 +720,7 @@ namespace Umbraco.Web.PublishedCache.NuCache foreach (var payload in payloads) { - _logger.Debug("Notified {ChangeTypes} for content {ContentId}", payload.ChangeTypes, payload.Id); + _logger.LogDebug("Notified {ChangeTypes} for content {ContentId}", payload.ChangeTypes, payload.Id); if (payload.ChangeTypes.HasType(TreeChangeTypes.RefreshAll)) { @@ -805,7 +813,7 @@ namespace Umbraco.Web.PublishedCache.NuCache foreach (var payload in payloads) { - _logger.Debug("Notified {ChangeTypes} for media {MediaId}", payload.ChangeTypes, payload.Id); + _logger.LogDebug("Notified {ChangeTypes} for media {MediaId}", payload.ChangeTypes, payload.Id); if (payload.ChangeTypes.HasType(TreeChangeTypes.RefreshAll)) { @@ -876,7 +884,7 @@ namespace Umbraco.Web.PublishedCache.NuCache return; foreach (var payload in payloads) - _logger.Debug("Notified {ChangeTypes} for {ItemType} {ItemId}", payload.ChangeTypes, payload.ItemType, payload.Id); + _logger.LogDebug("Notified {ChangeTypes} for {ItemType} {ItemId}", payload.ChangeTypes, payload.ItemType, payload.Id); Notify(_contentStore, payloads, RefreshContentTypesLocked); Notify(_mediaStore, payloads, RefreshMediaTypesLocked); @@ -960,7 +968,7 @@ namespace Umbraco.Web.PublishedCache.NuCache var idsA = payloads.Select(x => x.Id).ToArray(); foreach (var payload in payloads) - _logger.Debug("Notified {RemovedStatus} for data type {DataTypeId}", + _logger.LogDebug("Notified {RemovedStatus} for data type {DataTypeId}", payload.Removed ? "Removed" : "Refreshed", payload.Id); @@ -1232,7 +1240,7 @@ namespace Umbraco.Web.PublishedCache.NuCache var snapshotCache = new DictionaryAppCache(); - var memberTypeCache = new PublishedContentTypeCache(null, null, _serviceContext.MemberTypeService, _publishedContentTypeFactory, _logger); + var memberTypeCache = new PublishedContentTypeCache(null, null, _serviceContext.MemberTypeService, _publishedContentTypeFactory, _loggerFactory.CreateLogger()); var defaultCulture = _defaultCultureAccessor.DefaultCulture; var domainCache = new DomainCache(domainSnap, defaultCulture); @@ -1493,7 +1501,7 @@ namespace Umbraco.Web.PublishedCache.NuCache public override void Rebuild() { - _logger.Debug("Rebuilding..."); + _logger.LogDebug("Rebuilding..."); using (var scope = _scopeProvider.CreateScope(repositoryCacheMode: RepositoryCacheMode.Scoped)) { scope.ReadLock(Constants.Locks.ContentTree); diff --git a/src/Umbraco.PublishedCache.NuCache/Umbraco.PublishedCache.NuCache.csproj b/src/Umbraco.PublishedCache.NuCache/Umbraco.PublishedCache.NuCache.csproj index 4a7733a810..a44ffcadb7 100644 --- a/src/Umbraco.PublishedCache.NuCache/Umbraco.PublishedCache.NuCache.csproj +++ b/src/Umbraco.PublishedCache.NuCache/Umbraco.PublishedCache.NuCache.csproj @@ -27,6 +27,9 @@ <_Parameter1>Umbraco.Tests.Benchmarks + + <_Parameter1>DynamicProxyGenAssembly2 + diff --git a/src/Umbraco.TestData/UmbracoTestDataController.cs b/src/Umbraco.TestData/UmbracoTestDataController.cs index 09f9177982..33c361df2d 100644 --- a/src/Umbraco.TestData/UmbracoTestDataController.cs +++ b/src/Umbraco.TestData/UmbracoTestDataController.cs @@ -33,8 +33,8 @@ namespace Umbraco.TestData private readonly PropertyEditorCollection _propertyEditors; private readonly IShortStringHelper _shortStringHelper; - public UmbracoTestDataController(IScopeProvider scopeProvider, PropertyEditorCollection propertyEditors, IUmbracoContextAccessor umbracoContextAccessor, IUmbracoDatabaseFactory databaseFactory, ServiceContext services, AppCaches appCaches, ILogger logger, IProfilingLogger profilingLogger, IShortStringHelper shortStringHelper) - : base(umbracoContextAccessor, databaseFactory, services, appCaches, logger, profilingLogger) + public UmbracoTestDataController(IScopeProvider scopeProvider, PropertyEditorCollection propertyEditors, IUmbracoContextAccessor umbracoContextAccessor, IUmbracoDatabaseFactory databaseFactory, ServiceContext services, AppCaches appCaches, IProfilingLogger profilingLogger, IShortStringHelper shortStringHelper) + : base(umbracoContextAccessor, databaseFactory, services, appCaches, profilingLogger) { _scopeProvider = scopeProvider; _propertyEditors = propertyEditors; diff --git a/src/Umbraco.Tests.Benchmarks/TypeFinderBenchmarks.cs b/src/Umbraco.Tests.Benchmarks/TypeFinderBenchmarks.cs index 1571f63500..203e19fc6e 100644 --- a/src/Umbraco.Tests.Benchmarks/TypeFinderBenchmarks.cs +++ b/src/Umbraco.Tests.Benchmarks/TypeFinderBenchmarks.cs @@ -1,8 +1,9 @@ using BenchmarkDotNet.Attributes; using System; using System.Linq; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using Umbraco.Core.Composing; -using Umbraco.Core.Logging; using Umbraco.Tests.Benchmarks.Config; namespace Umbraco.Tests.Benchmarks @@ -15,18 +16,17 @@ namespace Umbraco.Tests.Benchmarks [Benchmark(Baseline = true)] public void WithGetReferencingAssembliesCheck() { - var typeFinder1 = new TypeFinder(new NullLogger(), new DefaultUmbracoAssemblyProvider(GetType().Assembly), new VaryingRuntimeHash()); + var typeFinder1 = new TypeFinder(new NullLogger(), new DefaultUmbracoAssemblyProvider(GetType().Assembly), new VaryingRuntimeHash()); var found = typeFinder1.FindClassesOfType().Count(); } [Benchmark] public void WithoutGetReferencingAssembliesCheck() { - var typeFinder2 = new TypeFinder(new NullLogger(), new DefaultUmbracoAssemblyProvider(GetType().Assembly), new VaryingRuntimeHash()); + var typeFinder2 = new TypeFinder(new NullLogger(), new DefaultUmbracoAssemblyProvider(GetType().Assembly), new VaryingRuntimeHash()); typeFinder2.QueryWithReferencingAssemblies = false; var found = typeFinder2.FindClassesOfType().Count(); } - } } diff --git a/src/Umbraco.Tests.Benchmarks/Umbraco.Tests.Benchmarks.csproj b/src/Umbraco.Tests.Benchmarks/Umbraco.Tests.Benchmarks.csproj index 84ec535b9d..332b93cb0b 100644 --- a/src/Umbraco.Tests.Benchmarks/Umbraco.Tests.Benchmarks.csproj +++ b/src/Umbraco.Tests.Benchmarks/Umbraco.Tests.Benchmarks.csproj @@ -97,6 +97,12 @@ 0.11.3 + + 3.1.8 + + + 3.1.8 + \ No newline at end of file diff --git a/src/Umbraco.Tests.Common/Builders/DataEditorBuilder.cs b/src/Umbraco.Tests.Common/Builders/DataEditorBuilder.cs index 5e6b174f56..f7185d1620 100644 --- a/src/Umbraco.Tests.Common/Builders/DataEditorBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/DataEditorBuilder.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using Umbraco.Core.Logging; using Umbraco.Core.PropertyEditors; @@ -38,7 +39,7 @@ namespace Umbraco.Tests.Common.Builders var explicitValueEditor = _explicitValueEditorBuilder.Build(); return new DataEditor( - Mock.Of(), + NullLoggerFactory.Instance, Mock.Of(), Mock.Of(), Mock.Of(), diff --git a/src/Umbraco.Tests.Common/TestHelperBase.cs b/src/Umbraco.Tests.Common/TestHelperBase.cs index ed72661044..511b100137 100644 --- a/src/Umbraco.Tests.Common/TestHelperBase.cs +++ b/src/Umbraco.Tests.Common/TestHelperBase.cs @@ -1,6 +1,8 @@ using System; using System.IO; using System.Reflection; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using Umbraco.Core; using Umbraco.Core.Cache; @@ -36,14 +38,14 @@ namespace Umbraco.Tests.Common protected TestHelperBase(Assembly entryAssembly) { MainDom = new SimpleMainDom(); - _typeFinder = new TypeFinder(Mock.Of(), new DefaultUmbracoAssemblyProvider(entryAssembly), new VaryingRuntimeHash()); + _typeFinder = new TypeFinder(NullLoggerFactory.Instance.CreateLogger(), new DefaultUmbracoAssemblyProvider(entryAssembly), new VaryingRuntimeHash()); } public ITypeFinder GetTypeFinder() => _typeFinder; 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.Common/TestHelpers/SolidPublishedSnapshot.cs b/src/Umbraco.Tests.Common/TestHelpers/SolidPublishedSnapshot.cs index 1eef61a29e..975f656b82 100644 --- a/src/Umbraco.Tests.Common/TestHelpers/SolidPublishedSnapshot.cs +++ b/src/Umbraco.Tests.Common/TestHelpers/SolidPublishedSnapshot.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Moq; using Umbraco.Core; using Umbraco.Core.Cache; @@ -411,7 +412,7 @@ namespace Umbraco.Tests.Common.PublishedContent static AutoPublishedContentType() { var dataTypeServiceMock = new Mock(); - var dataType = new DataType(new VoidEditor(Mock.Of(), dataTypeServiceMock.Object, + var dataType = new DataType(new VoidEditor(Mock.Of(), dataTypeServiceMock.Object, Mock.Of(), Mock.Of(), Mock.Of())) { Id = 666 }; dataTypeServiceMock.Setup(x => x.GetAll()).Returns(dataType.Yield); diff --git a/src/Umbraco.Tests.Common/Umbraco.Tests.Common.csproj b/src/Umbraco.Tests.Common/Umbraco.Tests.Common.csproj index 7401fda379..493dbd7ef0 100644 --- a/src/Umbraco.Tests.Common/Umbraco.Tests.Common.csproj +++ b/src/Umbraco.Tests.Common/Umbraco.Tests.Common.csproj @@ -6,6 +6,9 @@ + + + diff --git a/src/Umbraco.Tests.Integration/ContainerTests.cs b/src/Umbraco.Tests.Integration/ContainerTests.cs index 00d6c14be3..6b4026057b 100644 --- a/src/Umbraco.Tests.Integration/ContainerTests.cs +++ b/src/Umbraco.Tests.Integration/ContainerTests.cs @@ -3,6 +3,7 @@ using LightInject; using LightInject.Microsoft.DependencyInjection; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -21,55 +22,6 @@ namespace Umbraco.Tests.Integration [TestFixture] public class ContainerTests { - [Test] - public void CrossWire() - { - // MSDI - var services = new ServiceCollection(); - services.AddSingleton(); - var msdiServiceProvider = services.BuildServiceProvider(); - - // LightInject / Umbraco - var container = UmbracoServiceProviderFactory.CreateServiceContainer(); - var serviceProviderFactory = new UmbracoServiceProviderFactory(container, false); - var umbracoContainer = serviceProviderFactory.GetContainer(); - serviceProviderFactory.CreateBuilder(services); // called during Host Builder, needed to capture services - - // Dependencies needed for creating composition/register essentials - var testHelper = new TestHelper(); - var runtimeState = Mock.Of(); - var umbracoDatabaseFactory = Mock.Of(); - var dbProviderFactoryCreator = Mock.Of(); - var typeLoader = testHelper.GetMockedTypeLoader(); - - // Register in the container - var composition = new Composition(umbracoContainer, typeLoader, - testHelper.Logger, runtimeState, testHelper.IOHelper, testHelper.AppCaches); - composition.RegisterEssentials(testHelper.Logger, testHelper.Profiler, testHelper.Logger, testHelper.MainDom, - testHelper.AppCaches, umbracoDatabaseFactory, typeLoader, runtimeState, testHelper.GetTypeFinder(), - testHelper.IOHelper, testHelper.GetUmbracoVersion(), dbProviderFactoryCreator, - testHelper.GetHostingEnvironment(), testHelper.GetBackOfficeInfo()); - - // Cross wire - this would be called by the Host Builder at the very end of ConfigureServices - var lightInjectServiceProvider = serviceProviderFactory.CreateServiceProvider(umbracoContainer.Container); - - // From MSDI - var foo1 = msdiServiceProvider.GetService(); - var foo2 = lightInjectServiceProvider.GetService(); - var foo3 = umbracoContainer.GetInstance(); - - Assert.IsNotNull(foo1); - Assert.IsNotNull(foo2); - Assert.IsNotNull(foo3); - - // These are not the same because cross wiring means copying the container, not falling back to a container - Assert.AreNotSame(foo1, foo2); - // These are the same because the umbraco container wraps the light inject container - Assert.AreSame(foo2, foo3); - - Assertions.AssertContainer(umbracoContainer.Container); - } - [Explicit("This test just shows that resolving services from the container before the host is done resolves 2 different instances")] [Test] public async Task BuildServiceProvider_Before_Host_Is_Configured() @@ -110,6 +62,58 @@ namespace Umbraco.Tests.Integration } + [Test] + public void CrossWire() + { + // MSDI + var services = new ServiceCollection(); + services.AddSingleton(); + var msdiServiceProvider = services.BuildServiceProvider(); + + // LightInject / Umbraco + var container = UmbracoServiceProviderFactory.CreateServiceContainer(); + var serviceProviderFactory = new UmbracoServiceProviderFactory(container, false); + var umbracoContainer = serviceProviderFactory.GetContainer(); + + serviceProviderFactory.CreateBuilder(services); // called during Host Builder, needed to capture services + + // Dependencies needed for creating composition/register essentials + var testHelper = new TestHelper(); + var runtimeState = Mock.Of(); + var umbracoDatabaseFactory = Mock.Of(); + var dbProviderFactoryCreator = Mock.Of(); + var typeLoader = testHelper.GetMockedTypeLoader(); + var loggerFactory = testHelper.ConsoleLoggerFactory; + var logger = testHelper.ConsoleLoggerFactory.CreateLogger("RegisterEssentials"); + + // Register in the container + var composition = new Composition(umbracoContainer, typeLoader, + testHelper.ProfilingLogger, runtimeState, testHelper.IOHelper, testHelper.AppCaches); + composition.RegisterEssentials(logger, loggerFactory, testHelper.Profiler, testHelper.ProfilingLogger, testHelper.MainDom, + testHelper.AppCaches, umbracoDatabaseFactory, typeLoader, runtimeState, testHelper.GetTypeFinder(), + testHelper.IOHelper, testHelper.GetUmbracoVersion(), dbProviderFactoryCreator, + testHelper.GetHostingEnvironment(), testHelper.GetBackOfficeInfo()); + + // Cross wire - this would be called by the Host Builder at the very end of ConfigureServices + var lightInjectServiceProvider = serviceProviderFactory.CreateServiceProvider(umbracoContainer.Container); + + // From MSDI + var foo1 = msdiServiceProvider.GetService(); + var foo2 = lightInjectServiceProvider.GetService(); + var foo3 = umbracoContainer.GetInstance(); + + Assert.IsNotNull(foo1); + Assert.IsNotNull(foo2); + Assert.IsNotNull(foo3); + + // These are not the same because cross wiring means copying the container, not falling back to a container + Assert.AreNotSame(foo1, foo2); + // These are the same because the umbraco container wraps the light inject container + Assert.AreSame(foo2, foo3); + + Assertions.AssertContainer(umbracoContainer.Container); + } + private class Foo { public Foo() diff --git a/src/Umbraco.Tests.Integration/Implementations/TestHelper.cs b/src/Umbraco.Tests.Integration/Implementations/TestHelper.cs index 9f1f9a4840..4da69d373f 100644 --- a/src/Umbraco.Tests.Integration/Implementations/TestHelper.cs +++ b/src/Umbraco.Tests.Integration/Implementations/TestHelper.cs @@ -7,6 +7,7 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.FileProviders; using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Moq; using Umbraco.Core; @@ -44,7 +45,7 @@ namespace Umbraco.Tests.Integration.Implementations var contentRoot = Assembly.GetExecutingAssembly().GetRootDirectorySafe(); var hostEnvironment = new Mock(); // this must be the assembly name for the WebApplicationFactory to work - hostEnvironment.Setup(x => x.ApplicationName).Returns(GetType().Assembly.GetName().Name); + hostEnvironment.Setup(x => x.ApplicationName).Returns(GetType().Assembly.GetName().Name); hostEnvironment.Setup(x => x.ContentRootPath).Returns(() => contentRoot); hostEnvironment.Setup(x => x.ContentRootFileProvider).Returns(() => new PhysicalFileProvider(contentRoot)); hostEnvironment.Setup(x => x.WebRootPath).Returns(() => WorkingDirectory); @@ -55,8 +56,8 @@ namespace Umbraco.Tests.Integration.Implementations _hostEnvironment = hostEnvironment.Object; _hostingLifetime = new AspNetCoreApplicationShutdownRegistry(Mock.Of()); - - Logger = new ProfilingLogger(new ConsoleLogger(new MessageTemplates()), Profiler); + ConsoleLoggerFactory = LoggerFactory.Create(builder => builder.AddConsole()); + ProfilingLogger = new ProfilingLogger(ConsoleLoggerFactory.CreateLogger("ProfilingLogger"), Profiler); } @@ -92,7 +93,8 @@ namespace Umbraco.Tests.Integration.Implementations public AppCaches AppCaches { get; } = new AppCaches(NoAppCache.Instance, NoAppCache.Instance, new IsolatedCaches(type => NoAppCache.Instance)); - public IProfilingLogger Logger { get; private set; } + public ILoggerFactory ConsoleLoggerFactory { get; private set; } + public IProfilingLogger ProfilingLogger { get; private set; } public IProfiler Profiler { get; } = new VoidProfiler(); diff --git a/src/Umbraco.Tests.Integration/Mapping/ContentTypeModelMappingTests.cs b/src/Umbraco.Tests.Integration/Mapping/ContentTypeModelMappingTests.cs index d982d4b291..0b7a702b44 100644 --- a/src/Umbraco.Tests.Integration/Mapping/ContentTypeModelMappingTests.cs +++ b/src/Umbraco.Tests.Integration/Mapping/ContentTypeModelMappingTests.cs @@ -22,7 +22,6 @@ namespace Umbraco.Tests.Models.Mapping private IDataTypeService _dataTypeService; private UmbracoMapper _sut; private IFileService _fileService; - private IEntityService _entityService; [SetUp] @@ -31,7 +30,6 @@ namespace Umbraco.Tests.Models.Mapping _sut = Services.GetRequiredService(); _dataTypeService = Services.GetRequiredService(); _fileService = Services.GetRequiredService(); - _entityService = Services.GetRequiredService(); } [Test] diff --git a/src/Umbraco.Tests.Integration/Packaging/CreatedPackagesRepositoryTests.cs b/src/Umbraco.Tests.Integration/Packaging/CreatedPackagesRepositoryTests.cs index 5bd401a5d4..2500dd97a4 100644 --- a/src/Umbraco.Tests.Integration/Packaging/CreatedPackagesRepositoryTests.cs +++ b/src/Umbraco.Tests.Integration/Packaging/CreatedPackagesRepositoryTests.cs @@ -50,7 +50,7 @@ namespace Umbraco.Tests.Packaging ContentService, ContentTypeService, DataTypeService, FileService, MacroService, LocalizationService, HostingEnvironment, - EntityXmlSerializer, Logger, + EntityXmlSerializer, LoggerFactory, UmbracoVersion, Microsoft.Extensions.Options.Options.Create(new GlobalSettings()), "createdPackages.config", diff --git a/src/Umbraco.Tests.Integration/Persistence/Repositories/AuditRepositoryTest.cs b/src/Umbraco.Tests.Integration/Persistence/Repositories/AuditRepositoryTest.cs index e92653fb98..24316eb931 100644 --- a/src/Umbraco.Tests.Integration/Persistence/Repositories/AuditRepositoryTest.cs +++ b/src/Umbraco.Tests.Integration/Persistence/Repositories/AuditRepositoryTest.cs @@ -8,6 +8,7 @@ using Umbraco.Core.Persistence.Repositories.Implement; using Umbraco.Core.Scoping; using Umbraco.Tests.Integration.Testing; using Umbraco.Tests.Testing; +using Microsoft.Extensions.Logging; namespace Umbraco.Tests.Integration.Persistence.Repositories { @@ -15,6 +16,13 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories [UmbracoTest(Database = UmbracoTestOptions.Database.NewSchemaPerTest, Logger = UmbracoTestOptions.Logger.Console)] public class AuditRepositoryTest : UmbracoIntegrationTest { + private ILogger _logger; + + [SetUp] + public void Prepare() + { + _logger = LoggerFactory.CreateLogger(); + } [Test] public void Can_Add_Audit_Entry() @@ -22,7 +30,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories var sp = ScopeProvider; using (var scope = ScopeProvider.CreateScope()) { - var repo = new AuditRepository((IScopeAccessor)sp, Logger); + var repo = new AuditRepository((IScopeAccessor)sp, _logger); repo.Save(new AuditItem(-1, AuditType.System, -1, UmbracoObjectTypes.Document.GetName(), "This is a System audit trail")); var dtos = scope.Database.Fetch("WHERE id > -1"); @@ -38,7 +46,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories var sp = ScopeProvider; using (var scope = sp.CreateScope()) { - var repo = new AuditRepository((IScopeAccessor)sp, Logger); + var repo = new AuditRepository((IScopeAccessor)sp, _logger); for (var i = 0; i < 100; i++) { @@ -51,7 +59,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories using (var scope = sp.CreateScope()) { - var repo = new AuditRepository((IScopeAccessor)sp, Logger); + var repo = new AuditRepository((IScopeAccessor)sp, _logger); var page = repo.GetPagedResultsByQuery(sp.SqlContext.Query(), 0, 10, out var total, Direction.Descending, null, null); @@ -66,7 +74,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories var sp = ScopeProvider; using (var scope = sp.CreateScope()) { - var repo = new AuditRepository((IScopeAccessor)sp, Logger); + var repo = new AuditRepository((IScopeAccessor)sp, _logger); for (var i = 0; i < 100; i++) { @@ -79,7 +87,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories using (var scope = sp.CreateScope()) { - var repo = new AuditRepository((IScopeAccessor)sp, Logger); + var repo = new AuditRepository((IScopeAccessor)sp, _logger); var query = sp.SqlContext.Query().Where(x => x.UserId == -1); @@ -109,7 +117,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories var sp = ScopeProvider; using (var scope = sp.CreateScope()) { - var repo = new AuditRepository((IScopeAccessor)sp, Logger); + var repo = new AuditRepository((IScopeAccessor)sp, _logger); for (var i = 0; i < 100; i++) { @@ -122,7 +130,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories using (var scope = sp.CreateScope()) { - var repo = new AuditRepository((IScopeAccessor)sp, Logger); + var repo = new AuditRepository((IScopeAccessor)sp, _logger); var page = repo.GetPagedResultsByQuery(sp.SqlContext.Query(), 0, 9, out var total, Direction.Descending, new[] { AuditType.Publish }, null) @@ -140,7 +148,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories var sp = ScopeProvider; using (var scope = sp.CreateScope()) { - var repo = new AuditRepository((IScopeAccessor)sp, Logger); + var repo = new AuditRepository((IScopeAccessor)sp, _logger); for (var i = 0; i < 100; i++) { @@ -153,7 +161,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories using (var scope = sp.CreateScope()) { - var repo = new AuditRepository((IScopeAccessor)sp, Logger); + var repo = new AuditRepository((IScopeAccessor)sp, _logger); var page = repo.GetPagedResultsByQuery(sp.SqlContext.Query(), 0, 8, out var total, Direction.Descending, null, sp.SqlContext.Query().Where(item => item.Comment == "Content created")) diff --git a/src/Umbraco.Tests.Integration/Persistence/Repositories/KeyValueRepositoryTests.cs b/src/Umbraco.Tests.Integration/Persistence/Repositories/KeyValueRepositoryTests.cs index c756b6273b..1b5b40cf3c 100644 --- a/src/Umbraco.Tests.Integration/Persistence/Repositories/KeyValueRepositoryTests.cs +++ b/src/Umbraco.Tests.Integration/Persistence/Repositories/KeyValueRepositoryTests.cs @@ -1,5 +1,6 @@ using System; using NUnit.Framework; +using Microsoft.Extensions.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Persistence.Repositories.Implement; @@ -66,7 +67,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories private IKeyValueRepository CreateRepository(IScopeProvider provider) { - return new KeyValueRepository((IScopeAccessor) provider, Logger); - } + return new KeyValueRepository((IScopeAccessor) provider, LoggerFactory.CreateLogger()); + } } } diff --git a/src/Umbraco.Tests.Integration/Persistence/Repositories/LanguageRepositoryTest.cs b/src/Umbraco.Tests.Integration/Persistence/Repositories/LanguageRepositoryTest.cs index 0f57598e0f..0b699823cb 100644 --- a/src/Umbraco.Tests.Integration/Persistence/Repositories/LanguageRepositoryTest.cs +++ b/src/Umbraco.Tests.Integration/Persistence/Repositories/LanguageRepositoryTest.cs @@ -1,6 +1,7 @@ using System; using System.Globalization; using System.Linq; +using Microsoft.Extensions.Logging; using NUnit.Framework; using Umbraco.Core.Cache; using Umbraco.Core.Configuration.Models; @@ -29,7 +30,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories private LanguageRepository CreateRepository(IScopeProvider provider) { - return new LanguageRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, Microsoft.Extensions.Options.Options.Create(_globalSettings)); + return new LanguageRepository((IScopeAccessor) provider, AppCaches.Disabled, LoggerFactory.CreateLogger(), Microsoft.Extensions.Options.Options.Create(_globalSettings)); } [Test] diff --git a/src/Umbraco.Tests.Integration/Persistence/Repositories/MacroRepositoryTest.cs b/src/Umbraco.Tests.Integration/Persistence/Repositories/MacroRepositoryTest.cs index 624fd9c566..901d905686 100644 --- a/src/Umbraco.Tests.Integration/Persistence/Repositories/MacroRepositoryTest.cs +++ b/src/Umbraco.Tests.Integration/Persistence/Repositories/MacroRepositoryTest.cs @@ -1,5 +1,6 @@ using System.Data.SqlClient; using System.Linq; +using Microsoft.Extensions.Logging; using NUnit.Framework; using Umbraco.Core.Cache; using Umbraco.Core.Models; @@ -15,9 +16,12 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories [UmbracoTest(Database = UmbracoTestOptions.Database.NewSchemaPerTest)] public class MacroRepositoryTest : UmbracoIntegrationTest { + private ILogger _logger; + [SetUp] public void SetUp() { + _logger = LoggerFactory.CreateLogger(); CreateTestData(); } @@ -28,7 +32,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories var provider = ScopeProvider; using (provider.CreateScope()) { - var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, ShortStringHelper); + var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, _logger, ShortStringHelper); var macro = new Macro(ShortStringHelper, "test1", "Test", "~/views/macropartials/test.cshtml"); @@ -43,7 +47,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories var provider = ScopeProvider; using (provider.CreateScope()) { - var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, ShortStringHelper); + var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, _logger, ShortStringHelper); var macro = repository.Get(1); macro.Alias = "test2"; @@ -59,7 +63,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories var provider = ScopeProvider; using (provider.CreateScope()) { - var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, ShortStringHelper); + var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, _logger, ShortStringHelper); // Assert Assert.That(repository, Is.Not.Null); @@ -73,7 +77,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories var provider = ScopeProvider; using (provider.CreateScope()) { - var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, ShortStringHelper); + var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, _logger, ShortStringHelper); // Act var macro = repository.Get(1); @@ -99,7 +103,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories var provider = ScopeProvider; using (provider.CreateScope()) { - var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, ShortStringHelper); + var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, _logger, ShortStringHelper); // Act var macros = repository.GetMany(); @@ -116,7 +120,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories var provider = ScopeProvider; using (var scope = provider.CreateScope()) { - var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, ShortStringHelper); + var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, _logger, ShortStringHelper); // Act var query = scope.SqlContext.Query().Where(x => x.Alias.ToUpper() == "TEST1"); @@ -134,7 +138,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories var provider = ScopeProvider; using (var scope = provider.CreateScope()) { - var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, ShortStringHelper); + var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, _logger, ShortStringHelper); // Act var query = scope.SqlContext.Query().Where(x => x.Name.StartsWith("Test")); @@ -152,7 +156,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories var provider = ScopeProvider; using (provider.CreateScope()) { - var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, ShortStringHelper); + var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, _logger, ShortStringHelper); // Act var macro = new Macro(ShortStringHelper, "test", "Test", "~/views/macropartials/test.cshtml"); @@ -173,7 +177,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories var provider = ScopeProvider; using (provider.CreateScope()) { - var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, ShortStringHelper); + var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, _logger, ShortStringHelper); // Act var macro = repository.Get(2); @@ -208,7 +212,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories var provider = ScopeProvider; using (provider.CreateScope()) { - var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, ShortStringHelper); + var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, _logger, ShortStringHelper); // Act var macro = repository.Get(3); @@ -229,7 +233,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories var provider = ScopeProvider; using (provider.CreateScope()) { - var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, ShortStringHelper); + var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, _logger, ShortStringHelper); // Act var exists = repository.Exists(3); @@ -248,7 +252,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories var provider = ScopeProvider; using (provider.CreateScope()) { - var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, ShortStringHelper); + var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, _logger, ShortStringHelper); var macro = repository.Get(1); macro.Properties.Add(new MacroProperty("new1", "New1", 3, "test")); @@ -274,7 +278,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories var provider = ScopeProvider; using (provider.CreateScope()) { - var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, ShortStringHelper); + var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, _logger, ShortStringHelper); var macro = new Macro(ShortStringHelper, "newmacro", "A new macro", "~/views/macropartials/test1.cshtml"); macro.Properties.Add(new MacroProperty("blah1", "New1", 4, "test.editor")); @@ -299,7 +303,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories var provider = ScopeProvider; using (provider.CreateScope()) { - var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, ShortStringHelper); + var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, _logger, ShortStringHelper); var macro = new Macro(ShortStringHelper, "newmacro", "A new macro", "~/views/macropartials/test1.cshtml"); macro.Properties.Add(new MacroProperty("blah1", "New1", 4, "test.editor")); @@ -323,7 +327,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories var provider = ScopeProvider; using (provider.CreateScope()) { - var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, ShortStringHelper); + var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, _logger, ShortStringHelper); var macro = new Macro(ShortStringHelper, "newmacro", "A new macro", "~/views/macropartials/test1.cshtml"); var prop1 = new MacroProperty("blah1", "New1", 4, "test.editor"); @@ -354,7 +358,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories var provider = ScopeProvider; using (provider.CreateScope()) { - var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, ShortStringHelper); + var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, _logger, ShortStringHelper); var macro = repository.Get(1); macro.Properties.Add(new MacroProperty("new1", "New1", 3, "test")); @@ -381,7 +385,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories var provider = ScopeProvider; using (provider.CreateScope()) { - var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, ShortStringHelper); + var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, _logger, ShortStringHelper); var macro = repository.Get(1); macro.Properties.Add(new MacroProperty("new1", "New1", 3, "test")); @@ -403,7 +407,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories var provider = ScopeProvider; using (var scope = provider.CreateScope()) { - var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, ShortStringHelper); + var repository = new MacroRepository((IScopeAccessor) provider, AppCaches.Disabled, _logger, ShortStringHelper); repository.Save(new Macro(ShortStringHelper, "test1", "Test1", "~/views/macropartials/test1.cshtml")); repository.Save(new Macro(ShortStringHelper, "test2", "Test2", "~/views/macropartials/test2.cshtml")); diff --git a/src/Umbraco.Tests.Integration/Persistence/Repositories/RedirectUrlRepositoryTests.cs b/src/Umbraco.Tests.Integration/Persistence/Repositories/RedirectUrlRepositoryTests.cs index 18cbb01c0e..ea3bbfb166 100644 --- a/src/Umbraco.Tests.Integration/Persistence/Repositories/RedirectUrlRepositoryTests.cs +++ b/src/Umbraco.Tests.Integration/Persistence/Repositories/RedirectUrlRepositoryTests.cs @@ -1,5 +1,6 @@ using System; using System.Linq; +using Microsoft.Extensions.Logging; using NUnit.Framework; using Umbraco.Core.Models; using Umbraco.Core.Persistence.Repositories; @@ -187,7 +188,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories private IRedirectUrlRepository CreateRepository(IScopeProvider provider) { - return new RedirectUrlRepository((IScopeAccessor) provider, AppCaches, Logger); + return new RedirectUrlRepository((IScopeAccessor) provider, AppCaches, LoggerFactory.CreateLogger()); } private IContent _textpage, _subpage, _otherpage, _trashed; diff --git a/src/Umbraco.Tests.Integration/Persistence/Repositories/RelationTypeRepositoryTest.cs b/src/Umbraco.Tests.Integration/Persistence/Repositories/RelationTypeRepositoryTest.cs index 9a08c3f9c8..6a93d73713 100644 --- a/src/Umbraco.Tests.Integration/Persistence/Repositories/RelationTypeRepositoryTest.cs +++ b/src/Umbraco.Tests.Integration/Persistence/Repositories/RelationTypeRepositoryTest.cs @@ -1,4 +1,5 @@ using System.Linq; +using Microsoft.Extensions.Logging; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Cache; @@ -22,7 +23,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories private RelationTypeRepository CreateRepository(IScopeProvider provider) { - return new RelationTypeRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger); + return new RelationTypeRepository((IScopeAccessor) provider, AppCaches.Disabled, LoggerFactory.CreateLogger()); } [Test] @@ -221,7 +222,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories var provider = ScopeProvider; using (var scope = provider.CreateScope()) { - var repository = new RelationTypeRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger); + var repository = new RelationTypeRepository((IScopeAccessor) provider, AppCaches.Disabled, LoggerFactory.CreateLogger()); repository.Save(relateContent);//Id 2 repository.Save(relateContentType);//Id 3 diff --git a/src/Umbraco.Tests.Integration/Persistence/Repositories/ServerRegistrationRepositoryTest.cs b/src/Umbraco.Tests.Integration/Persistence/Repositories/ServerRegistrationRepositoryTest.cs index 0ac8b3a829..3107770672 100644 --- a/src/Umbraco.Tests.Integration/Persistence/Repositories/ServerRegistrationRepositoryTest.cs +++ b/src/Umbraco.Tests.Integration/Persistence/Repositories/ServerRegistrationRepositoryTest.cs @@ -1,6 +1,7 @@ using System; using System.Data.SqlClient; using System.Linq; +using Microsoft.Extensions.Logging; using NUnit.Framework; using Umbraco.Core.Cache; using Umbraco.Core.Models; @@ -26,7 +27,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories private ServerRegistrationRepository CreateRepository(IScopeProvider provider) { - return new ServerRegistrationRepository((IScopeAccessor) provider, Logger); + return new ServerRegistrationRepository((IScopeAccessor) provider, LoggerFactory.CreateLogger()); } [Test] @@ -55,7 +56,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories var server = repository.Get(1); server.ServerIdentity = "COMPUTER2"; - + Assert.Throws(() => repository.Save(server)); } } diff --git a/src/Umbraco.Tests.Integration/Persistence/Repositories/TemplateRepositoryTest.cs b/src/Umbraco.Tests.Integration/Persistence/Repositories/TemplateRepositoryTest.cs index cb1fe9a57b..5f7c160ed4 100644 --- a/src/Umbraco.Tests.Integration/Persistence/Repositories/TemplateRepositoryTest.cs +++ b/src/Umbraco.Tests.Integration/Persistence/Repositories/TemplateRepositoryTest.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; +using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -30,15 +31,15 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories private ITemplateRepository CreateRepository(IScopeProvider provider) { - return new TemplateRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, _fileSystems, IOHelper, ShortStringHelper); + return new TemplateRepository((IScopeAccessor) provider, AppCaches.Disabled, LoggerFactory.CreateLogger(), _fileSystems, IOHelper, ShortStringHelper); } [SetUp] public void SetUp() { - var testHelper = new TestHelper(); + var testHelper = new TestHelper(); _fileSystems = Mock.Of(); - var viewsFileSystem = new PhysicalFileSystem(IOHelper, testHelper.GetHostingEnvironment(), Logger, Constants.SystemDirectories.MvcViews); + var viewsFileSystem = new PhysicalFileSystem(IOHelper, testHelper.GetHostingEnvironment(), LoggerFactory.CreateLogger(), Constants.SystemDirectories.MvcViews); Mock.Get(_fileSystems).Setup(x => x.MvcViewsFileSystem).Returns(viewsFileSystem); } @@ -261,16 +262,16 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories { var templateRepository = CreateRepository(provider); var globalSettings = new GlobalSettings(); - var tagRepository = new TagRepository(scopeAccessor, AppCaches.Disabled, Logger); + var tagRepository = new TagRepository(scopeAccessor, AppCaches.Disabled, LoggerFactory.CreateLogger()); var commonRepository = new ContentTypeCommonRepository(scopeAccessor, templateRepository, AppCaches, ShortStringHelper); - var languageRepository = new LanguageRepository(scopeAccessor, AppCaches.Disabled, Logger, Microsoft.Extensions.Options.Options.Create(globalSettings)); - var contentTypeRepository = new ContentTypeRepository(scopeAccessor, AppCaches.Disabled, Logger, commonRepository, languageRepository, ShortStringHelper); - var relationTypeRepository = new RelationTypeRepository(scopeAccessor, AppCaches.Disabled, Logger); + var languageRepository = new LanguageRepository(scopeAccessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), Microsoft.Extensions.Options.Options.Create(globalSettings)); + var contentTypeRepository = new ContentTypeRepository(scopeAccessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), commonRepository, languageRepository, ShortStringHelper); + var relationTypeRepository = new RelationTypeRepository(scopeAccessor, AppCaches.Disabled, LoggerFactory.CreateLogger()); var entityRepository = new EntityRepository(scopeAccessor); - var relationRepository = new RelationRepository(scopeAccessor, Logger, relationTypeRepository, entityRepository); + var relationRepository = new RelationRepository(scopeAccessor, LoggerFactory.CreateLogger(), relationTypeRepository, entityRepository); var propertyEditors = new Lazy(() => new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty()))); var dataValueReferences = new DataValueReferenceFactoryCollection(Enumerable.Empty()); - var contentRepo = new DocumentRepository(scopeAccessor, AppCaches.Disabled, Logger, contentTypeRepository, templateRepository, tagRepository, languageRepository, relationRepository, relationTypeRepository, propertyEditors, dataValueReferences, dataTypeService); + var contentRepo = new DocumentRepository(scopeAccessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), LoggerFactory, contentTypeRepository, templateRepository, tagRepository, languageRepository, relationRepository, relationTypeRepository, propertyEditors, dataValueReferences, dataTypeService); var contentType = MockedContentTypes.CreateSimpleContentType("umbTextpage2", "Textpage"); fileService.SaveTemplate(contentType.DefaultTemplate); // else, FK violation on contentType! @@ -570,7 +571,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories _fileSystems = null; //Delete all files - var fsViews = new PhysicalFileSystem(IOHelper, testHelper.GetHostingEnvironment(), Logger, Constants.SystemDirectories.MvcViews); + var fsViews = new PhysicalFileSystem(IOHelper, testHelper.GetHostingEnvironment(), LoggerFactory.CreateLogger(), Constants.SystemDirectories.MvcViews); var views = fsViews.GetFiles("", "*.cshtml"); foreach (var file in views) fsViews.DeleteFile(file); diff --git a/src/Umbraco.Tests.Integration/Persistence/Repositories/UserGroupRepositoryTest.cs b/src/Umbraco.Tests.Integration/Persistence/Repositories/UserGroupRepositoryTest.cs index b18d1a95c2..d1e0711d58 100644 --- a/src/Umbraco.Tests.Integration/Persistence/Repositories/UserGroupRepositoryTest.cs +++ b/src/Umbraco.Tests.Integration/Persistence/Repositories/UserGroupRepositoryTest.cs @@ -1,4 +1,5 @@ using System.Linq; +using Microsoft.Extensions.Logging; using NUnit.Framework; using Umbraco.Core.Models.Membership; using Umbraco.Core.Persistence.Repositories; @@ -16,7 +17,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories { private UserGroupRepository CreateRepository(IScopeProvider provider) { - return new UserGroupRepository((IScopeAccessor) provider, Core.Cache.AppCaches.Disabled, Logger, ShortStringHelper); + return new UserGroupRepository((IScopeAccessor) provider, Core.Cache.AppCaches.Disabled, LoggerFactory.CreateLogger(), LoggerFactory, ShortStringHelper); } [Test] @@ -127,7 +128,7 @@ namespace Umbraco.Tests.Integration.Persistence.Repositories var id = userGroup.Id; - var repository2 = new UserGroupRepository((IScopeAccessor) provider, Core.Cache.AppCaches.Disabled, Logger, ShortStringHelper); + var repository2 = new UserGroupRepository((IScopeAccessor) provider, Core.Cache.AppCaches.Disabled, LoggerFactory.CreateLogger(), LoggerFactory, ShortStringHelper); repository2.Delete(userGroup); scope.Complete(); diff --git a/src/Umbraco.Tests.Integration/Persistence/Repositories/UserRepositoryTest.cs b/src/Umbraco.Tests.Integration/Persistence/Repositories/UserRepositoryTest.cs index 5084e5ae15..1485425026 100644 --- a/src/Umbraco.Tests.Integration/Persistence/Repositories/UserRepositoryTest.cs +++ b/src/Umbraco.Tests.Integration/Persistence/Repositories/UserRepositoryTest.cs @@ -1,6 +1,7 @@ using System; using System.Linq; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -26,14 +27,14 @@ namespace Umbraco.Tests.Persistence.Repositories private UserRepository CreateRepository(IScopeProvider provider) { var accessor = (IScopeAccessor) provider; - var repository = new UserRepository(accessor, AppCaches.Disabled, Logger, Mappers, Options.Create(GlobalSettings), Options.Create(new UserPasswordConfigurationSettings()), new JsonNetSerializer()); + var repository = new UserRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), Mappers, Options.Create(GlobalSettings), Options.Create(new UserPasswordConfigurationSettings()), new JsonNetSerializer()); return repository; } private UserGroupRepository CreateUserGroupRepository(IScopeProvider provider) { var accessor = (IScopeAccessor) provider; - return new UserGroupRepository(accessor, AppCaches.Disabled, Logger, ShortStringHelper); + return new UserGroupRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), LoggerFactory, ShortStringHelper); } [Test] @@ -118,7 +119,7 @@ namespace Umbraco.Tests.Persistence.Repositories var id = user.Id; - var repository2 = new UserRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, Mock.Of(), Options.Create(GlobalSettings), Options.Create(new UserPasswordConfigurationSettings()), new JsonNetSerializer()); + var repository2 = new UserRepository((IScopeAccessor) provider, AppCaches.Disabled, LoggerFactory.CreateLogger(), Mock.Of(), Options.Create(GlobalSettings), Options.Create(new UserPasswordConfigurationSettings()), new JsonNetSerializer()); repository2.Delete(user); diff --git a/src/Umbraco.Tests.Integration/RuntimeTests.cs b/src/Umbraco.Tests.Integration/RuntimeTests.cs index ae6fe81314..87b1bdd198 100644 --- a/src/Umbraco.Tests.Integration/RuntimeTests.cs +++ b/src/Umbraco.Tests.Integration/RuntimeTests.cs @@ -5,11 +5,11 @@ using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Options; using Moq; using NUnit.Framework; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Composing; using Umbraco.Core.Configuration.Models; -using Umbraco.Core.Logging; using Umbraco.Core.Runtime; using Umbraco.Extensions; using Umbraco.Tests.Common; @@ -58,7 +58,7 @@ namespace Umbraco.Tests.Integration // Create the core runtime var coreRuntime = new CoreRuntime(globalSettings, connectionStrings, testHelper.GetUmbracoVersion(), - testHelper.IOHelper, testHelper.Logger, testHelper.Profiler, testHelper.UmbracoBootPermissionChecker, + testHelper.IOHelper, testHelper.ConsoleLoggerFactory, testHelper.Profiler, testHelper.UmbracoBootPermissionChecker, testHelper.GetHostingEnvironment(), testHelper.GetBackOfficeInfo(), testHelper.DbProviderFactoryCreator, testHelper.MainDom, testHelper.GetTypeFinder(), AppCaches.NoCache); @@ -88,7 +88,7 @@ namespace Umbraco.Tests.Integration umbracoContainer.Register(x => Options.Create(requestHandlerSettings)); umbracoContainer.Register(x => Options.Create(userPasswordConfigurationSettings)); umbracoContainer.Register(x => Options.Create(webRoutingSettings)); - + umbracoContainer.Register(typeof(ILogger<>), typeof(Logger<>), Lifetime.Singleton); coreRuntime.Start(); Assert.IsTrue(MyComponent.IsInit); @@ -206,9 +206,9 @@ namespace Umbraco.Tests.Integration public static bool IsInit { get; private set; } public static bool IsTerminated { get; private set; } - private readonly ILogger _logger; + private readonly ILogger _logger; - public MyComponent(ILogger logger) + public MyComponent(ILogger logger) { _logger = logger; } diff --git a/src/Umbraco.Tests.Integration/Services/CachedDataTypeServiceTests.cs b/src/Umbraco.Tests.Integration/Services/CachedDataTypeServiceTests.cs index 655eaf2393..c0853eac6e 100644 --- a/src/Umbraco.Tests.Integration/Services/CachedDataTypeServiceTests.cs +++ b/src/Umbraco.Tests.Integration/Services/CachedDataTypeServiceTests.cs @@ -3,7 +3,6 @@ using NUnit.Framework; using Umbraco.Core.Models; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; -using Umbraco.Core.Services.Implement; using Umbraco.Tests.Integration.Testing; using Umbraco.Tests.Testing; @@ -28,7 +27,7 @@ namespace Umbraco.Tests.Services [Test] public void DataTypeService_Can_Get_All() { - IDataType dataType = new DataType(new LabelPropertyEditor(Logger, IOHelper, DataTypeService, LocalizedTextService, LocalizationService, ShortStringHelper)) { Name = "Testing Textfield", DatabaseType = ValueStorageType.Ntext }; + IDataType dataType = new DataType(new LabelPropertyEditor(LoggerFactory, IOHelper, DataTypeService, LocalizedTextService, LocalizationService, ShortStringHelper)) { Name = "Testing Textfield", DatabaseType = ValueStorageType.Ntext }; DataTypeService.Save(dataType); //Get all the first time (no cache) diff --git a/src/Umbraco.Tests.Integration/Services/DataTypeServiceTests.cs b/src/Umbraco.Tests.Integration/Services/DataTypeServiceTests.cs index c124c291e6..d61fd5f813 100644 --- a/src/Umbraco.Tests.Integration/Services/DataTypeServiceTests.cs +++ b/src/Umbraco.Tests.Integration/Services/DataTypeServiceTests.cs @@ -29,7 +29,7 @@ namespace Umbraco.Tests.Services public void DataTypeService_Can_Persist_New_DataTypeDefinition() { // Act - IDataType dataType = new DataType(new LabelPropertyEditor(Logger, IOHelper, DataTypeService, LocalizedTextService, LocalizationService, ShortStringHelper)) { Name = "Testing Textfield", DatabaseType = ValueStorageType.Ntext }; + IDataType dataType = new DataType(new LabelPropertyEditor(LoggerFactory, IOHelper, DataTypeService, LocalizedTextService, LocalizationService, ShortStringHelper)) { Name = "Testing Textfield", DatabaseType = ValueStorageType.Ntext }; DataTypeService.Save(dataType); // Assert @@ -70,7 +70,7 @@ namespace Umbraco.Tests.Services public void Cannot_Save_DataType_With_Empty_Name() { // Act - var dataTypeDefinition = new DataType(new LabelPropertyEditor(Logger, IOHelper, DataTypeService, LocalizedTextService,LocalizationService, ShortStringHelper)) { Name = string.Empty, DatabaseType = ValueStorageType.Ntext }; + var dataTypeDefinition = new DataType(new LabelPropertyEditor(LoggerFactory, IOHelper, DataTypeService, LocalizedTextService,LocalizationService, ShortStringHelper)) { Name = string.Empty, DatabaseType = ValueStorageType.Ntext }; // Act & Assert Assert.Throws(() => DataTypeService.Save(dataTypeDefinition)); diff --git a/src/Umbraco.Tests.Integration/Services/MacroServiceTests.cs b/src/Umbraco.Tests.Integration/Services/MacroServiceTests.cs index 04c5661c35..2a5c3b0a9c 100644 --- a/src/Umbraco.Tests.Integration/Services/MacroServiceTests.cs +++ b/src/Umbraco.Tests.Integration/Services/MacroServiceTests.cs @@ -1,10 +1,10 @@ using System; using System.Linq; using System.Threading; +using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; using Umbraco.Core.Cache; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence.Repositories.Implement; using Umbraco.Core.Scoping; @@ -25,10 +25,10 @@ namespace Umbraco.Tests.Integration.Services [SetUp] public void SetupTest() { - var sp = ScopeProvider; - using (var scope = sp.CreateScope()) + var scopeProvider = ScopeProvider; + using (var scope = scopeProvider.CreateScope()) { - var repository = new MacroRepository((IScopeAccessor) sp, AppCaches.Disabled, Mock.Of(), ShortStringHelper); + var repository = new MacroRepository((IScopeAccessor) scopeProvider, AppCaches.Disabled, Mock.Of>(), ShortStringHelper); repository.Save(new Macro(ShortStringHelper, "test1", "Test1", "~/views/macropartials/test1.cshtml")); repository.Save(new Macro(ShortStringHelper, "test2", "Test2", "~/views/macropartials/test2.cshtml")); diff --git a/src/Umbraco.Tests.Integration/TestServerTest/Controllers/ContentControllerTests.cs b/src/Umbraco.Tests.Integration/TestServerTest/Controllers/ContentControllerTests.cs index 85bdfae8fa..731079da7c 100644 --- a/src/Umbraco.Tests.Integration/TestServerTest/Controllers/ContentControllerTests.cs +++ b/src/Umbraco.Tests.Integration/TestServerTest/Controllers/ContentControllerTests.cs @@ -5,15 +5,12 @@ using System.Threading.Tasks; using Newtonsoft.Json; using NUnit.Framework; using Umbraco.Core; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Services; using Umbraco.Tests.Common.Builders; using Umbraco.Tests.Common.Builders.Extensions; -using Umbraco.Tests.Testing; using Umbraco.Web.BackOffice.Controllers; using Umbraco.Web.Common.Formatters; -using Umbraco.Web.Editors; using Umbraco.Web.Models.ContentEditing; namespace Umbraco.Tests.Integration.TestServerTest.Controllers diff --git a/src/Umbraco.Tests.Integration/TestServerTest/UmbracoBuilderExtensions.cs b/src/Umbraco.Tests.Integration/TestServerTest/UmbracoBuilderExtensions.cs index 29b360d636..f7e451b03f 100644 --- a/src/Umbraco.Tests.Integration/TestServerTest/UmbracoBuilderExtensions.cs +++ b/src/Umbraco.Tests.Integration/TestServerTest/UmbracoBuilderExtensions.cs @@ -32,14 +32,14 @@ namespace Umbraco.Tests.Integration.TestServerTest testHelper.GetLoggingConfiguration(), builder.Config, // TODO: Yep that's extremely ugly - (globalSettings, connectionStrings, umbVersion, ioHelper, logger, profiler, hostingEnv, backOfficeInfo, typeFinder, appCaches, dbProviderFactoryCreator) => + (globalSettings, connectionStrings, umbVersion, ioHelper, loggerFactory, profiler, hostingEnv, backOfficeInfo, typeFinder, appCaches, dbProviderFactoryCreator) => { var runtime = UmbracoIntegrationTest.CreateTestRuntime( globalSettings, connectionStrings, umbVersion, ioHelper, - logger, + loggerFactory, profiler, hostingEnv, backOfficeInfo, diff --git a/src/Umbraco.Tests.Integration/Testing/IntegrationTestComposer.cs b/src/Umbraco.Tests.Integration/Testing/IntegrationTestComposer.cs index ce0261febf..e597158992 100644 --- a/src/Umbraco.Tests.Integration/Testing/IntegrationTestComposer.cs +++ b/src/Umbraco.Tests.Integration/Testing/IntegrationTestComposer.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Umbraco.Core; using Umbraco.Core.Cache; @@ -66,7 +67,7 @@ namespace Umbraco.Tests.Integration.Testing private ILocalizedTextService GetLocalizedTextService(IFactory factory) { var globalSettings = factory.GetInstance>(); - var logger = factory.GetInstance(); + var loggerFactory = factory.GetInstance(); var appCaches = factory.GetInstance(); var localizedTextService = new LocalizedTextService( @@ -82,12 +83,12 @@ namespace Umbraco.Tests.Integration.Testing var mainLangFolder = new DirectoryInfo(Path.Combine(netcoreUI.FullName, globalSettings.Value.UmbracoPath.TrimStart("~/"), "config", "lang")); return new LocalizedTextServiceFileSources( - logger, + loggerFactory.CreateLogger(), appCaches, mainLangFolder); }), - logger); + loggerFactory.CreateLogger()); return localizedTextService; } @@ -95,8 +96,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 profilingLogger , ILoggerFactory loggerFactory, IApplicationShutdownRegistry hostingEnvironment, IndexRebuilder indexRebuilder) + : base(mainDom, profilingLogger , loggerFactory, hostingEnvironment, indexRebuilder) { } diff --git a/src/Umbraco.Tests.Integration/Testing/LocalDbTestDatabase.cs b/src/Umbraco.Tests.Integration/Testing/LocalDbTestDatabase.cs index 01abe90b32..39f9ca5592 100644 --- a/src/Umbraco.Tests.Integration/Testing/LocalDbTestDatabase.cs +++ b/src/Umbraco.Tests.Integration/Testing/LocalDbTestDatabase.cs @@ -8,10 +8,10 @@ using System.Diagnostics; using System.IO; using System.Linq; using System.Threading; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; -using Umbraco.Core.Logging; using Umbraco.Core.Migrations.Install; using Umbraco.Core.Persistence; @@ -25,7 +25,7 @@ namespace Umbraco.Tests.Integration.Testing public const string InstanceName = "UmbracoTests"; public const string DatabaseName = "UmbracoTests"; - private readonly ILogger _logger; + private readonly ILoggerFactory _loggerFactory; private readonly LocalDb _localDb; private readonly IUmbracoVersion _umbracoVersion; private static LocalDb.Instance _instance; @@ -38,10 +38,10 @@ namespace Umbraco.Tests.Integration.Testing private DatabasePool _currentPool; //It's internal because `Umbraco.Core.Persistence.LocalDb` is internal - internal LocalDbTestDatabase(ILogger logger, LocalDb localDb, string filesPath, IUmbracoDatabaseFactory dbFactory) + internal LocalDbTestDatabase(ILoggerFactory loggerFactory, LocalDb localDb, string filesPath, IUmbracoDatabaseFactory dbFactory) { _umbracoVersion = new UmbracoVersion(); - _logger = logger; + _loggerFactory = loggerFactory; _localDb = localDb; _filesPath = filesPath; _dbFactory = dbFactory; @@ -129,7 +129,7 @@ namespace Umbraco.Tests.Integration.Testing using var trans = database.GetTransaction(); - var creator = new DatabaseSchemaCreator(database, _logger, _umbracoVersion); + var creator = new DatabaseSchemaCreator(database, _loggerFactory.CreateLogger(), _loggerFactory, _umbracoVersion); creator.InitializeDatabaseSchema(); trans.Complete(); // commit it @@ -236,10 +236,10 @@ namespace Umbraco.Tests.Integration.Testing action(); return; } - catch (SqlException e) + catch (SqlException) { - Console.Error.WriteLine($"SqlException occured, but we try again {i+1}/{maxIterations}.\n{e}"); + //Console.Error.WriteLine($"SqlException occured, but we try again {i+1}/{maxIterations}.\n{e}"); // This can occur when there's a transaction deadlock which means (i think) that the database is still in use and hasn't been closed properly yet // so we need to just wait a little bit Thread.Sleep(100 * i); @@ -249,6 +249,10 @@ namespace Umbraco.Tests.Integration.Testing throw; } } + catch (InvalidOperationException) + { + + } } } diff --git a/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs b/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs index 94c14ce2f3..36df0bbc64 100644 --- a/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs +++ b/src/Umbraco.Tests.Integration/Testing/UmbracoIntegrationTest.cs @@ -20,7 +20,6 @@ using Umbraco.Tests.Integration.Implementations; using Umbraco.Extensions; using Umbraco.Tests.Testing; using Umbraco.Web; -using ILogger = Umbraco.Core.Logging.ILogger; using Umbraco.Core.Runtime; using Umbraco.Core; using Moq; @@ -31,7 +30,12 @@ using System.Data.Common; using System.IO; using Umbraco.Core.Configuration.Models; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; +using Serilog; +using Umbraco.Core.Logging.Serilog; using ConnectionStrings = Umbraco.Core.Configuration.Models.ConnectionStrings; +using ILogger = Microsoft.Extensions.Logging.ILogger; namespace Umbraco.Tests.Integration.Testing { @@ -95,6 +99,27 @@ namespace Umbraco.Tests.Integration.Testing #region Generic Host Builder and Runtime + private ILoggerFactory CreateLoggerFactory() + { + ILoggerFactory factory; + var testOptions = TestOptionAttributeBase.GetTestOptions(); + switch (testOptions.Logger) + { + case UmbracoTestOptions.Logger.Mock: + factory = NullLoggerFactory.Instance; + break; + case UmbracoTestOptions.Logger.Serilog: + factory = Microsoft.Extensions.Logging.LoggerFactory.Create(builder => { builder.AddSerilog(); }); + break; + case UmbracoTestOptions.Logger.Console: + factory = Microsoft.Extensions.Logging.LoggerFactory.Create(builder => { builder.AddConsole(); }); + break; + default: + throw new NotSupportedException($"Logger option {testOptions.Logger} is not supported."); + } + + return factory; + } /// /// Create the Generic Host and execute startup ConfigureServices/Configure calls /// @@ -119,6 +144,7 @@ namespace Umbraco.Tests.Integration.Testing }) .ConfigureServices((hostContext, services) => { + services.AddTransient(_ => CreateLoggerFactory()); ConfigureServices(services); }); return hostBuilder; @@ -131,6 +157,7 @@ namespace Umbraco.Tests.Integration.Testing /// /// /// + /// /// /// /// @@ -143,7 +170,7 @@ namespace Umbraco.Tests.Integration.Testing GlobalSettings globalSettings, ConnectionStrings connectionStrings, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, - ILogger logger, IProfiler profiler, Core.Hosting.IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo, + ILoggerFactory loggerFactory, IProfiler profiler, Core.Hosting.IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo, ITypeFinder typeFinder, AppCaches appCaches, IDbProviderFactoryCreator dbProviderFactoryCreator) { var runtime = CreateTestRuntime( @@ -151,7 +178,7 @@ namespace Umbraco.Tests.Integration.Testing connectionStrings, umbracoVersion, ioHelper, - logger, + loggerFactory, profiler, hostingEnvironment, backOfficeInfo, @@ -172,6 +199,7 @@ namespace Umbraco.Tests.Integration.Testing /// /// /// + /// /// /// /// @@ -186,7 +214,7 @@ namespace Umbraco.Tests.Integration.Testing GlobalSettings globalSettings, ConnectionStrings connectionStrings, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, - ILogger logger, IProfiler profiler, Core.Hosting.IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo, + ILoggerFactory loggerFactory, IProfiler profiler, Core.Hosting.IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo, ITypeFinder typeFinder, AppCaches appCaches, IDbProviderFactoryCreator dbProviderFactoryCreator, IMainDom mainDom, Action eventHandler) { @@ -195,7 +223,7 @@ namespace Umbraco.Tests.Integration.Testing connectionStrings, umbracoVersion, ioHelper, - logger, + loggerFactory, profiler, Mock.Of(), hostingEnvironment, @@ -241,8 +269,6 @@ namespace Umbraco.Tests.Integration.Testing services.AddMvc(); - services.AddSingleton(new ConsoleLogger(new MessageTemplates())); - CustomTestSetup(services); } @@ -278,7 +304,7 @@ namespace Umbraco.Tests.Integration.Testing OnTestTearDown(() => runtime.Terminate()); // This will create a db, install the schema and ensure the app is configured to run - InstallTestLocalDb(args.DatabaseFactory, runtime.ProfilingLogger, runtime.State, TestHelper.WorkingDirectory, out var connectionString); + InstallTestLocalDb(args.DatabaseFactory, runtime.RuntimeLoggerFactory, runtime.State, TestHelper.WorkingDirectory, out var connectionString); TestDBConnectionString = connectionString; InMemoryConfiguration["ConnectionStrings:" + Constants.System.UmbracoConnectionName] = TestDBConnectionString; } @@ -288,13 +314,14 @@ namespace Umbraco.Tests.Integration.Testing /// /// /// + /// /// /// /// /// /// There must only be ONE instance shared between all tests in a session /// - private static LocalDbTestDatabase GetOrCreateDatabase(string filesPath, ILogger logger, IUmbracoDatabaseFactory dbFactory) + private static LocalDbTestDatabase GetOrCreateDatabase(string filesPath, ILoggerFactory loggerFactory, IUmbracoDatabaseFactory dbFactory) { lock (_dbLocker) { @@ -303,7 +330,7 @@ namespace Umbraco.Tests.Integration.Testing var localDb = new LocalDb(); if (localDb.IsAvailable == false) throw new InvalidOperationException("LocalDB is not available."); - _dbInstance = new LocalDbTestDatabase(logger, localDb, filesPath, dbFactory); + _dbInstance = new LocalDbTestDatabase(loggerFactory, localDb, filesPath, dbFactory); return _dbInstance; } } @@ -311,13 +338,15 @@ namespace Umbraco.Tests.Integration.Testing /// /// Creates a LocalDb instance to use for the test /// - /// + /// /// - /// /// + /// + /// + /// /// private void InstallTestLocalDb( - IUmbracoDatabaseFactory databaseFactory, IProfilingLogger logger, + IUmbracoDatabaseFactory databaseFactory, ILoggerFactory loggerFactory, IRuntimeState runtimeState, string workingDirectory, out string connectionString) { connectionString = null; @@ -335,7 +364,7 @@ namespace Umbraco.Tests.Integration.Testing if (!Directory.Exists(dbFilePath)) Directory.CreateDirectory(dbFilePath); - var db = GetOrCreateDatabase(dbFilePath, logger, databaseFactory); + var db = GetOrCreateDatabase(dbFilePath, loggerFactory, databaseFactory); switch (testOptions.Database) { @@ -440,9 +469,9 @@ namespace Umbraco.Tests.Integration.Testing protected IScopeAccessor ScopeAccessor => Services.GetRequiredService(); /// - /// Returns the + /// Returns the /// - protected ILogger Logger => Services.GetRequiredService(); + protected ILoggerFactory LoggerFactory => Services.GetRequiredService(); protected AppCaches AppCaches => Services.GetRequiredService(); protected IIOHelper IOHelper => Services.GetRequiredService(); diff --git a/src/Umbraco.Tests.Integration/Umbraco.Tests.Integration.csproj b/src/Umbraco.Tests.Integration/Umbraco.Tests.Integration.csproj index 8ddeb42b81..4773a5b215 100644 --- a/src/Umbraco.Tests.Integration/Umbraco.Tests.Integration.csproj +++ b/src/Umbraco.Tests.Integration/Umbraco.Tests.Integration.csproj @@ -29,6 +29,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/src/Umbraco.Tests.Integration/Umbraco.Web.BackOffice/Filters/ContentModelValidatorTests.cs b/src/Umbraco.Tests.Integration/Umbraco.Web.BackOffice/Filters/ContentModelValidatorTests.cs index 1a343a1e0b..1daae93675 100644 --- a/src/Umbraco.Tests.Integration/Umbraco.Web.BackOffice/Filters/ContentModelValidatorTests.cs +++ b/src/Umbraco.Tests.Integration/Umbraco.Web.BackOffice/Filters/ContentModelValidatorTests.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Linq; using Umbraco.Core.Services; - using Umbraco.Core.Logging; using Umbraco.Web.Models.ContentEditing; using Umbraco.Tests.Testing; using Umbraco.Core.PropertyEditors; @@ -12,6 +11,7 @@ using System.ComponentModel.DataAnnotations; using Microsoft.AspNetCore.Mvc.ModelBinding; using Microsoft.Extensions.DependencyInjection; + using Microsoft.Extensions.Logging; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Umbraco.Core; @@ -138,7 +138,7 @@ [Test] public void Validating_ContentItemSave() { - var logger = Services.GetRequiredService(); + var logger = Services.GetRequiredService>(); var backofficeSecurityFactory = Services.GetRequiredService(); backofficeSecurityFactory.EnsureBackofficeSecurity(); var backofficeSecurityAccessor = Services.GetRequiredService(); @@ -276,9 +276,9 @@ [DataEditor("complexTest", "test", "test")] public class ComplexTestEditor : NestedContentPropertyEditor { - public ComplexTestEditor(ILogger logger, Lazy propertyEditors, IDataTypeService dataTypeService, IContentTypeService contentTypeService, ILocalizationService localizationService, + public ComplexTestEditor(ILoggerFactory loggerFactory, Lazy propertyEditors, IDataTypeService dataTypeService, IContentTypeService contentTypeService, ILocalizationService localizationService, IIOHelper ioHelper, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper) - : base(logger, propertyEditors, dataTypeService, localizationService, contentTypeService, ioHelper, shortStringHelper, localizedTextService) + : base(loggerFactory, propertyEditors, dataTypeService, localizationService, contentTypeService, ioHelper, shortStringHelper, localizedTextService) { } @@ -294,12 +294,12 @@ [DataEditor("test", "test", "test")] // This alias aligns with the prop editor alias for all properties created from MockedContentTypes.CreateTextPageContentType public class TestEditor : DataEditor { - public TestEditor(ILogger logger, + public TestEditor(ILoggerFactory loggerFactory, IDataTypeService dataTypeService, ILocalizationService localizationService, ILocalizedTextService localizedTextService, IShortStringHelper shortStringHelper) - : base(logger, dataTypeService, localizationService, localizedTextService, shortStringHelper) + : base(loggerFactory, dataTypeService, localizationService, localizedTextService, shortStringHelper) { } diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Components/ComponentTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Components/ComponentTests.cs index 79bd498967..47a1b58abb 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Components/ComponentTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Components/ComponentTests.cs @@ -3,12 +3,13 @@ using System.Collections.Generic; using System.IO; using System.Linq; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Composing; -using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Hosting; using Umbraco.Core.IO; @@ -16,7 +17,6 @@ using Umbraco.Core.Logging; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Scoping; -using Umbraco.Tests.Common.Builders; using Umbraco.Tests.TestHelpers; namespace Umbraco.Tests.Components @@ -34,19 +34,20 @@ namespace Umbraco.Tests.Components // FIXME: use IUmbracoDatabaseFactory vs UmbracoDatabaseFactory, clean it all up! var mock = new Mock(); - - var logger = Mock.Of(); + var loggerFactory = NullLoggerFactory.Instance; + var logger = loggerFactory.CreateLogger("GenericLogger"); var typeFinder = TestHelper.GetTypeFinder(); var globalSettings = new GlobalSettings(); var connectionStrings = new ConnectionStrings(); - var f = new UmbracoDatabaseFactory(logger, Options.Create(globalSettings), Options.Create(connectionStrings), new Lazy(() => new MapperCollection(Enumerable.Empty())), TestHelper.DbProviderFactoryCreator); - var fs = new FileSystems(mock.Object, logger, IOHelper, Options.Create(globalSettings), Mock.Of()); + var f = new UmbracoDatabaseFactory(loggerFactory.CreateLogger(), loggerFactory, Options.Create(globalSettings), Options.Create(connectionStrings), new Lazy(() => new MapperCollection(Enumerable.Empty())), TestHelper.DbProviderFactoryCreator); + var fs = new FileSystems(mock.Object, loggerFactory.CreateLogger(), loggerFactory, IOHelper, Options.Create(globalSettings), Mock.Of()); var coreDebug = new CoreDebugSettings(); var mediaFileSystem = Mock.Of(); - var p = new ScopeProvider(f, fs, Options.Create(coreDebug), mediaFileSystem, logger, typeFinder, NoAppCache.Instance); + var p = new ScopeProvider(f, fs, Options.Create(coreDebug), mediaFileSystem, loggerFactory.CreateLogger(), loggerFactory, 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(ILoggerFactory))).Returns(loggerFactory); + mock.Setup(x => x.GetInstance(typeof (IProfilingLogger))).Returns(new ProfilingLogger(logger, Mock.Of())); mock.Setup(x => x.GetInstance(typeof (IUmbracoDatabaseFactory))).Returns(f); mock.Setup(x => x.GetInstance(typeof (IScopeProvider))).Returns(p); @@ -62,7 +63,7 @@ namespace Umbraco.Tests.Components private static TypeLoader MockTypeLoader() { var ioHelper = IOHelper; - 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()); } @@ -75,7 +76,7 @@ namespace Umbraco.Tests.Components var composition = new Composition(register, MockTypeLoader(), Mock.Of(), Mock.Of(), IOHelper, AppCaches.NoCache); var types = TypeArray(); - var composers = new Composers(composition, types, Enumerable.Empty(), 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 @@ -92,6 +93,7 @@ namespace Umbraco.Tests.Components 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(ILogger)) return Mock.Of>(); throw new NotSupportedException(type.FullName); }); }); @@ -114,7 +116,7 @@ namespace Umbraco.Tests.Components var composition = new Composition(register, MockTypeLoader(), Mock.Of(), Mock.Of(x=>x.Level == RuntimeLevel.Run), IOHelper, AppCaches.NoCache); var types = TypeArray(); - var composers = new Composers(composition, types, Enumerable.Empty(), 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 @@ -130,7 +132,7 @@ namespace Umbraco.Tests.Components var composition = new Composition(register, MockTypeLoader(), Mock.Of(), Mock.Of(), IOHelper, AppCaches.NoCache); var types = TypeArray(); - var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of()); + var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of>(), Mock.Of()); Composed.Clear(); // 21 is required by 20 // => reorder components accordingly @@ -145,7 +147,7 @@ namespace Umbraco.Tests.Components var composition = new Composition(register, MockTypeLoader(), Mock.Of(), Mock.Of(), IOHelper, AppCaches.NoCache); var types = TypeArray(); - var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of()); + var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of>(), Mock.Of()); Composed.Clear(); // i23 requires 22 // 24, 25 implement i23 @@ -162,7 +164,7 @@ namespace Umbraco.Tests.Components var composition = new Composition(register, MockTypeLoader(), Mock.Of(), Mock.Of(), IOHelper, AppCaches.NoCache); var types = TypeArray(); - var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of()); + var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of>(), Mock.Of()); Composed.Clear(); try { @@ -185,7 +187,7 @@ namespace Umbraco.Tests.Components var composition = new Composition(register, MockTypeLoader(), Mock.Of(), Mock.Of(), IOHelper, AppCaches.NoCache); var types = TypeArray(); - var composers = new Composers(composition, types, Enumerable.Empty(), 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 @@ -215,13 +217,14 @@ namespace Umbraco.Tests.Components 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(ILogger)) return Mock.Of>(); throw new NotSupportedException(type.FullName); }); }); var composition = new Composition(register, MockTypeLoader(), Mock.Of(), Mock.Of(), IOHelper, AppCaches.NoCache); var types = new[] { typeof(Composer1), typeof(Composer5), typeof(Composer5a) }; - var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of()); + var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of>(), Mock.Of()); Assert.IsEmpty(Composed); composers.Compose(); @@ -247,7 +250,7 @@ namespace Umbraco.Tests.Components var composition = new Composition(register, MockTypeLoader(), Mock.Of(), Mock.Of(), IOHelper, AppCaches.NoCache); var types = new[] { typeof(Composer6), typeof(Composer7), typeof(Composer8) }; - var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of()); + var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of>(), Mock.Of()); Composed.Clear(); composers.Compose(); Assert.AreEqual(2, Composed.Count); @@ -262,7 +265,7 @@ namespace Umbraco.Tests.Components var composition = new Composition(register, MockTypeLoader(), Mock.Of(), Mock.Of(), IOHelper, AppCaches.NoCache); var types = new[] { typeof(Composer9), typeof(Composer2), typeof(Composer4) }; - var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of()); + var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of>(), Mock.Of()); Composed.Clear(); composers.Compose(); Assert.AreEqual(2, Composed.Count); @@ -280,7 +283,7 @@ namespace Umbraco.Tests.Components var composition = new Composition(register, MockTypeLoader(), Mock.Of(), Mock.Of(x=>x.Level == RuntimeLevel.Run), IOHelper, AppCaches.NoCache); var types = new[] { typeof(Composer9), typeof(Composer2), typeof(Composer4) }; - var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of()); + var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of>(), Mock.Of()); Composed.Clear(); composers.Compose(); var builder = composition.WithCollectionBuilder(); @@ -299,32 +302,32 @@ namespace Umbraco.Tests.Components var composition = new Composition(register, MockTypeLoader(), Mock.Of(), Mock.Of(), IOHelper, AppCaches.NoCache); var types = new[] { typeof(Composer10) }; - var composers = new Composers(composition, types, Enumerable.Empty(), 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()); + 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()); + 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()); + 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()); + 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()); + composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of>(), Mock.Of()); Composed.Clear(); composers.Compose(); Assert.AreEqual(1, Composed.Count); @@ -338,7 +341,7 @@ namespace Umbraco.Tests.Components var composition = new Composition(register, MockTypeLoader(), Mock.Of(), Mock.Of(), 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()); + var composers = new Composers(composition, types, Enumerable.Empty(), Mock.Of>(), Mock.Of()); Composed.Clear(); composers.Compose(); Assert.AreEqual(2, Composed.Count); @@ -354,13 +357,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()); + 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()); + composers = new Composers(composition, types, enableDisableAttributes, Mock.Of>(), Mock.Of()); Composed.Clear(); composers.Compose(); Assert.AreEqual(2, Composed.Count); // both @@ -373,7 +376,7 @@ namespace Umbraco.Tests.Components { var ioHelper = IOHelper; var typeFinder = TestHelper.GetTypeFinder(); - var typeLoader = new TypeLoader(typeFinder, AppCaches.Disabled.RuntimeCache, new DirectoryInfo(ioHelper.MapPath("~/App_Data/TEMP")), 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(), @@ -381,7 +384,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()); + 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.UnitTests/Umbraco.Core/Composing/ComposingTestBase.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/ComposingTestBase.cs index 491122f5ad..f15d28bd37 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/ComposingTestBase.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/ComposingTestBase.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using System.IO; using System.Reflection; +using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; using Umbraco.Core.Cache; @@ -23,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); } protected virtual IEnumerable AssembliesToScan diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/CompositionTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/CompositionTests.cs index 229ba1102b..a078a9bac5 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/CompositionTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/CompositionTests.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -40,7 +41,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.IOHelper, AppCaches.NoCache); // create the factory, ensure it is the mocked factory diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/TypeFinderTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/TypeFinderTests.cs index e0e87fb1ee..b8e391a072 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/TypeFinderTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/TypeFinderTests.cs @@ -1,6 +1,8 @@ using System; using System.Linq; using System.Reflection; +using Microsoft.Extensions.Logging; +using Moq; using NUnit.Framework; using Umbraco.Core.Composing; using Umbraco.Core.Logging; @@ -39,7 +41,7 @@ namespace Umbraco.Tests.Composing [Test] public void Find_Class_Of_Type_With_Attribute() { - var typeFinder = new TypeFinder(GetTestProfilingLogger(), new DefaultUmbracoAssemblyProvider(GetType().Assembly), new VaryingRuntimeHash()); + var typeFinder = new TypeFinder(Mock.Of>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly), new VaryingRuntimeHash()); var typesFound = typeFinder.FindClassesOfTypeWithAttribute(_assemblies); Assert.AreEqual(2, typesFound.Count()); } @@ -47,7 +49,7 @@ namespace Umbraco.Tests.Composing [Test] public void Find_Classes_With_Attribute() { - var typeFinder = new TypeFinder(GetTestProfilingLogger(), new DefaultUmbracoAssemblyProvider(GetType().Assembly), new VaryingRuntimeHash()); + var typeFinder = new TypeFinder(Mock.Of>(), new DefaultUmbracoAssemblyProvider(GetType().Assembly), new VaryingRuntimeHash()); var typesFound = typeFinder.FindClassesWithAttribute(_assemblies); Assert.AreEqual(0, typesFound.Count()); // 0 classes in _assemblies are marked with [Tree] @@ -58,13 +60,6 @@ namespace Umbraco.Tests.Composing Assert.AreEqual(22, typesFound.Count()); // + classes in Umbraco.Web are marked with [Tree] } - private static IProfilingLogger GetTestProfilingLogger() - { - var logger = new DebugDiagnosticsLogger(new MessageTemplates()); - var profiler = new TestProfiler(); - return new ProfilingLogger(logger, profiler); - } - [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)] public class MyTestAttribute : Attribute { diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/TypeLoaderTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/TypeLoaderTests.cs index 1ff9020fc0..64de9a70c9 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/TypeLoaderTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Composing/TypeLoaderTests.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Reflection; using Moq; using NUnit.Framework; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Composing; @@ -28,7 +29,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.UnitTests/Umbraco.Core/Manifest/ManifestParserTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Manifest/ManifestParserTests.cs index f62bcd0ced..1e26082453 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Manifest/ManifestParserTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Manifest/ManifestParserTests.cs @@ -2,6 +2,8 @@ using System.Linq; using Moq; using System.Text; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using NUnit.Framework; using Newtonsoft.Json; using Newtonsoft.Json.Linq; @@ -35,7 +37,8 @@ namespace Umbraco.Tests.Manifest new DelimitedValueValidator(), }; _ioHelper = TestHelper.IOHelper; - _parser = new ManifestParser(AppCaches.Disabled, new ManifestValueValidatorCollection(validators), new ManifestFilterCollection(Array.Empty()), Mock.Of(), _ioHelper, Mock.Of(), Mock.Of(), new JsonNetSerializer(), Mock.Of(), Mock.Of()); + var loggerFactory = NullLoggerFactory.Instance; + _parser = new ManifestParser(AppCaches.Disabled, new ManifestValueValidatorCollection(validators), new ManifestFilterCollection(Array.Empty()), loggerFactory.CreateLogger(), loggerFactory, _ioHelper, Mock.Of(), Mock.Of(), new JsonNetSerializer(), Mock.Of(), Mock.Of()); } [Test] diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/ColorListValidatorTest.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/ColorListValidatorTest.cs index feb1b53b96..f96e265e1f 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/ColorListValidatorTest.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/ColorListValidatorTest.cs @@ -1,9 +1,11 @@ using System.Linq; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using NUnit.Framework; using Newtonsoft.Json.Linq; using Umbraco.Core.IO; -using Umbraco.Core.Logging; +using NUnit.Framework.Internal; using Umbraco.Core.Services; using Umbraco.Core.Strings; using Umbraco.Tests.TestHelpers; @@ -14,11 +16,13 @@ namespace Umbraco.Tests.PropertyEditors [TestFixture] public class ColorListValidatorTest { + private ILoggerFactory _loggerFactory = NullLoggerFactory.Instance; + [Test] public void Only_Tests_On_JArray() { var validator = new ColorPickerConfigurationEditor.ColorListValidator(); - var result = validator.Validate("hello", null, new ColorPickerPropertyEditor(Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of())); + var result = validator.Validate("hello", null, new ColorPickerPropertyEditor(_loggerFactory, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of())); Assert.AreEqual(0, result.Count()); } @@ -26,7 +30,7 @@ namespace Umbraco.Tests.PropertyEditors public void Only_Tests_On_JArray_Of_Item_JObject() { var validator = new ColorPickerConfigurationEditor.ColorListValidator(); - var result = validator.Validate(new JArray("hello", "world"), null, new ColorPickerPropertyEditor(Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of())); + var result = validator.Validate(new JArray("hello", "world"), null, new ColorPickerPropertyEditor(_loggerFactory, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of())); Assert.AreEqual(0, result.Count()); } @@ -39,7 +43,7 @@ namespace Umbraco.Tests.PropertyEditors JObject.FromObject(new { value = "zxcvzxcvxzcv" }), JObject.FromObject(new { value = "ABC" }), JObject.FromObject(new { value = "1234567" })), - null, new ColorPickerPropertyEditor(Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of())); + null, new ColorPickerPropertyEditor(_loggerFactory, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of())); Assert.AreEqual(2, result.Count()); } } diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/DataValueReferenceFactoryCollectionTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/DataValueReferenceFactoryCollectionTests.cs index aea4dab134..a2224b0c5a 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/DataValueReferenceFactoryCollectionTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/DataValueReferenceFactoryCollectionTests.cs @@ -3,6 +3,7 @@ using NUnit.Framework; using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging.Abstractions; using Umbraco.Core; using Umbraco.Core.IO; using Umbraco.Core.Logging; @@ -34,7 +35,7 @@ namespace Umbraco.Tests.PropertyEditors // label does not implement IDataValueReference var labelEditor = new LabelPropertyEditor( - Mock.Of(), + NullLoggerFactory.Instance, IOHelper, DataTypeService, LocalizedTextService, @@ -102,7 +103,7 @@ namespace Umbraco.Tests.PropertyEditors // mediaPicker does implement IDataValueReference var mediaPicker = new MediaPickerPropertyEditor( - Mock.Of(), + NullLoggerFactory.Instance, DataTypeService, LocalizationService, IOHelper, @@ -170,7 +171,7 @@ namespace Umbraco.Tests.PropertyEditors // mediaPicker does implement IDataValueReference var mediaPicker = new MediaPickerPropertyEditor( - Mock.Of(), + NullLoggerFactory.Instance, DataTypeService, LocalizationService, IOHelper, diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/EnsureUniqueValuesValidatorTest.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/EnsureUniqueValuesValidatorTest.cs index 930d039625..3383803c4a 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/EnsureUniqueValuesValidatorTest.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/EnsureUniqueValuesValidatorTest.cs @@ -1,4 +1,6 @@ using System.Linq; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using NUnit.Framework; using Newtonsoft.Json.Linq; @@ -14,11 +16,12 @@ namespace Umbraco.Tests.PropertyEditors [TestFixture] public class EnsureUniqueValuesValidatorTest { + private ILoggerFactory _loggerFactory = NullLoggerFactory.Instance; [Test] public void Only_Tests_On_JArray() { var validator = new ValueListUniqueValueValidator(); - var result = validator.Validate("hello", null, new ColorPickerPropertyEditor(Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of())); + var result = validator.Validate("hello", null, new ColorPickerPropertyEditor(_loggerFactory, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of())); Assert.AreEqual(0, result.Count()); } @@ -26,7 +29,7 @@ namespace Umbraco.Tests.PropertyEditors public void Only_Tests_On_JArray_Of_Item_JObject() { var validator = new ValueListUniqueValueValidator(); - var result = validator.Validate(new JArray("hello", "world"), null, new ColorPickerPropertyEditor(Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of())); + var result = validator.Validate(new JArray("hello", "world"), null, new ColorPickerPropertyEditor(_loggerFactory, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of())); Assert.AreEqual(0, result.Count()); } @@ -34,7 +37,7 @@ namespace Umbraco.Tests.PropertyEditors public void Allows_Unique_Values() { var validator = new ValueListUniqueValueValidator(); - var result = validator.Validate(new JArray(JObject.FromObject(new { value = "hello" }), JObject.FromObject(new { value = "world" })), null, new ColorPickerPropertyEditor(Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of())); + var result = validator.Validate(new JArray(JObject.FromObject(new { value = "hello" }), JObject.FromObject(new { value = "world" })), null, new ColorPickerPropertyEditor(_loggerFactory, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of())); Assert.AreEqual(0, result.Count()); } @@ -43,7 +46,7 @@ namespace Umbraco.Tests.PropertyEditors { var validator = new ValueListUniqueValueValidator(); var result = validator.Validate(new JArray(JObject.FromObject(new { value = "hello" }), JObject.FromObject(new { value = "hello" })), - null, new ColorPickerPropertyEditor(Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of())); + null, new ColorPickerPropertyEditor(_loggerFactory, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of())); Assert.AreEqual(1, result.Count()); } @@ -56,7 +59,7 @@ namespace Umbraco.Tests.PropertyEditors JObject.FromObject(new { value = "hello" }), JObject.FromObject(new { value = "world" }), JObject.FromObject(new { value = "world" })), - null, new ColorPickerPropertyEditor(Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of())); + null, new ColorPickerPropertyEditor(_loggerFactory, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of())); Assert.AreEqual(2, result.Count()); } } diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/MultiValuePropertyEditorTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/MultiValuePropertyEditorTests.cs index 262d55b6d7..de02ccc713 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/MultiValuePropertyEditorTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/PropertyEditors/MultiValuePropertyEditorTests.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using System.Globalization; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using Newtonsoft.Json; using NUnit.Framework; @@ -27,7 +28,7 @@ namespace Umbraco.Tests.PropertyEditors [Test] public void DropDownMultipleValueEditor_Format_Data_For_Cache() { - var dataType = new DataType(new CheckBoxListPropertyEditor(Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of())) + var dataType = new DataType(new CheckBoxListPropertyEditor(NullLoggerFactory.Instance, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of())) { Configuration = new ValueListConfiguration { @@ -59,7 +60,7 @@ namespace Umbraco.Tests.PropertyEditors [Test] public void DropDownValueEditor_Format_Data_For_Cache() { - var dataType = new DataType(new CheckBoxListPropertyEditor(Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of())) + var dataType = new DataType(new CheckBoxListPropertyEditor(NullLoggerFactory.Instance, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of())) { Configuration = new ValueListConfiguration { @@ -91,7 +92,6 @@ namespace Umbraco.Tests.PropertyEditors { // editor wants ApplicationContext.Current.Services.TextService // (that should be fixed with proper injection) - var logger = Mock.Of(); var textService = new Mock(); textService.Setup(x => x.Localize(It.IsAny(), It.IsAny(), It.IsAny>())).Returns("blah"); //var appContext = new ApplicationContext( diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Published/ConvertersTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Published/ConvertersTests.cs index 04c7abb72f..62d7f422fe 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Published/ConvertersTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Published/ConvertersTests.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -29,7 +30,7 @@ namespace Umbraco.Tests.Published }); var dataTypeServiceMock = new Mock(); - var dataType = new DataType(new VoidEditor(Mock.Of(), dataTypeServiceMock.Object, + var dataType = new DataType(new VoidEditor(Mock.Of(), dataTypeServiceMock.Object, Mock.Of(), Mock.Of(), Mock.Of())) { Id = 1 }; dataTypeServiceMock.Setup(x => x.GetAll()).Returns(dataType.Yield); @@ -112,7 +113,7 @@ namespace Umbraco.Tests.Published }); var dataTypeServiceMock = new Mock(); - var dataType = new DataType(new VoidEditor(Mock.Of(), dataTypeServiceMock.Object, + var dataType = new DataType(new VoidEditor(Mock.Of(), dataTypeServiceMock.Object, Mock.Of(), Mock.Of(), Mock.Of())) { Id = 1 }; dataTypeServiceMock.Setup(x => x.GetAll()).Returns(dataType.Yield); diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Published/NestedContentTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Published/NestedContentTests.cs index 49362183a9..a3aae7b7dc 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Published/NestedContentTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Published/NestedContentTests.cs @@ -2,6 +2,8 @@ using System.Collections; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -25,12 +27,13 @@ namespace Umbraco.Tests.Published private (IPublishedContentType, IPublishedContentType) CreateContentTypes() { var logger = Mock.Of(); + var loggerFactory = NullLoggerFactory.Instance; var profiler = Mock.Of(); var proflog = new ProfilingLogger(logger, profiler); var localizationService = Mock.Of(); PropertyEditorCollection editors = null; - var editor = new NestedContentPropertyEditor(logger, new Lazy(() => editors), Mock.Of(),localizationService, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of()); + var editor = new NestedContentPropertyEditor(loggerFactory, new Lazy(() => editors), Mock.Of(),localizationService, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of()); editors = new PropertyEditorCollection(new DataEditorCollection(new DataEditor[] { editor })); var dataType1 = new DataType(editor) @@ -61,7 +64,7 @@ namespace Umbraco.Tests.Published } }; - var dataType3 = new DataType(new TextboxPropertyEditor(logger, Mock.Of(), localizationService, Mock.Of(), Mock.Of(), Mock.Of())) + var dataType3 = new DataType(new TextboxPropertyEditor(loggerFactory, Mock.Of(), localizationService, Mock.Of(), Mock.Of(), Mock.Of())) { Id = 3 }; diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Published/PropertyCacheLevelTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Published/PropertyCacheLevelTests.cs index cd0c3263dc..42a2234d64 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Published/PropertyCacheLevelTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Published/PropertyCacheLevelTests.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -31,7 +32,7 @@ namespace Umbraco.Tests.Published }); var dataTypeServiceMock = new Mock(); - var dataType = new DataType(new VoidEditor(Mock.Of(), dataTypeServiceMock.Object, + var dataType = new DataType(new VoidEditor(NullLoggerFactory.Instance, dataTypeServiceMock.Object, Mock.Of(), Mock.Of(), Mock.Of())) { Id = 1 }; dataTypeServiceMock.Setup(x => x.GetAll()).Returns(dataType.Yield); @@ -116,7 +117,7 @@ namespace Umbraco.Tests.Published }); var dataTypeServiceMock = new Mock(); - var dataType = new DataType(new VoidEditor(Mock.Of(), dataTypeServiceMock.Object, + var dataType = new DataType(new VoidEditor(NullLoggerFactory.Instance, dataTypeServiceMock.Object, Mock.Of(), Mock.Of(), Mock.Of())) { Id = 1 }; dataTypeServiceMock.Setup(x => x.GetAll()).Returns(dataType.Yield); @@ -196,7 +197,7 @@ namespace Umbraco.Tests.Published }); var dataTypeServiceMock = new Mock(); - var dataType = new DataType(new VoidEditor(Mock.Of(), dataTypeServiceMock.Object, + var dataType = new DataType(new VoidEditor(NullLoggerFactory.Instance, dataTypeServiceMock.Object, Mock.Of(), Mock.Of(), Mock.Of())) { Id = 1 }; dataTypeServiceMock.Setup(x => x.GetAll()).Returns(dataType.Yield); diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Services/LocalizedTextServiceTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Services/LocalizedTextServiceTests.cs index 126ca1821e..d413481475 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Services/LocalizedTextServiceTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Services/LocalizedTextServiceTests.cs @@ -3,9 +3,9 @@ using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Xml.Linq; -using Moq; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using NUnit.Framework; -using Umbraco.Core.Logging; using Umbraco.Core.Services.Implement; namespace Umbraco.Tests.Services @@ -13,6 +13,7 @@ namespace Umbraco.Tests.Services [TestFixture] public class LocalizedTextServiceTests { + private static ILoggerFactory _loggerFactory = NullLoggerFactory.Instance; [Test] public void Using_Dictionary_Gets_All_Stored_Values() { @@ -39,7 +40,7 @@ namespace Umbraco.Tests.Services }, } } - }, Mock.Of()); + }, _loggerFactory.CreateLogger()); var result = txtService.GetAllStoredValues(culture); @@ -71,7 +72,7 @@ namespace Umbraco.Tests.Services new XElement("key", new XAttribute("alias", "blah1"), "blahValue1"), new XElement("key", new XAttribute("alias", "blah2"), "blahValue2"))))) } - }, Mock.Of()); + }, _loggerFactory.CreateLogger()); var result = txtService.GetAllStoredValues(culture); @@ -102,7 +103,7 @@ namespace Umbraco.Tests.Services new XElement("key", new XAttribute("alias", "testKey1"), "testValue1"), new XElement("key", new XAttribute("alias", "testKey1"), "testValue1"))))) } - }, Mock.Of()); + }, _loggerFactory.CreateLogger()); var result = txtService.GetAllStoredValues(culture); @@ -128,7 +129,7 @@ namespace Umbraco.Tests.Services } } } - }, Mock.Of()); + }, _loggerFactory.CreateLogger()); var result = txtService.Localize("testArea/testKey", culture); @@ -153,7 +154,7 @@ namespace Umbraco.Tests.Services } } } - }, Mock.Of()); + }, _loggerFactory.CreateLogger()); var result = txtService.Localize("testKey", culture); @@ -178,7 +179,7 @@ namespace Umbraco.Tests.Services } } } - }, Mock.Of()); + }, _loggerFactory.CreateLogger()); var result = txtService.Localize("testArea/doNotFind", culture); @@ -204,7 +205,7 @@ namespace Umbraco.Tests.Services } } } - }, Mock.Of()); + }, _loggerFactory.CreateLogger()); var result = txtService.Localize("doNotFind", culture); @@ -229,7 +230,7 @@ namespace Umbraco.Tests.Services } } } - }, Mock.Of()); + }, _loggerFactory.CreateLogger()); var result = txtService.Localize("testKey", culture, new Dictionary { { "0", "world" }, { "1", "great" }, { "2", "planet" } }); @@ -250,7 +251,7 @@ namespace Umbraco.Tests.Services new XElement("key", new XAttribute("alias", "testKey"), "testValue")))) } - }, Mock.Of()); + }, _loggerFactory.CreateLogger()); var result = txtService.Localize("testArea/testKey", culture); @@ -270,7 +271,7 @@ namespace Umbraco.Tests.Services new XElement("key", new XAttribute("alias", "testKey"), "testValue")))) } - }, Mock.Of()); + }, _loggerFactory.CreateLogger()); var result = txtService.Localize("testKey", culture); @@ -290,7 +291,7 @@ namespace Umbraco.Tests.Services new XElement("key", new XAttribute("alias", "testKey"), "testValue")))) } - }, Mock.Of()); + }, _loggerFactory.CreateLogger()); var result = txtService.Localize("testArea/doNotFind", culture); @@ -311,7 +312,7 @@ namespace Umbraco.Tests.Services new XElement("key", new XAttribute("alias", "testKey"), "testValue")))) } - }, Mock.Of()); + }, _loggerFactory.CreateLogger()); var result = txtService.Localize("doNotFind", culture); @@ -331,7 +332,7 @@ namespace Umbraco.Tests.Services new XElement("key", new XAttribute("alias", "testKey"), "Hello %0%, you are such a %1% %2%")))) } - }, Mock.Of()); + }, _loggerFactory.CreateLogger()); var result = txtService.Localize("testKey", culture, new Dictionary { { "0", "world" }, { "1", "great" }, { "2", "planet" } }); @@ -357,7 +358,7 @@ namespace Umbraco.Tests.Services } } } - }, Mock.Of()); + }, _loggerFactory.CreateLogger()); Assert.AreEqual("[testKey]", txtService.Localize("testArea/testKey", CultureInfo.GetCultureInfo("en-AU"))); } @@ -375,7 +376,7 @@ namespace Umbraco.Tests.Services new XElement("key", new XAttribute("alias", "testKey"), "testValue")))) } - }, Mock.Of()); + }, _loggerFactory.CreateLogger()); Assert.AreEqual("[testKey]", txtService.Localize("testArea/testKey", CultureInfo.GetCultureInfo("en-AU"))); } diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PathValidationTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PathValidationTests.cs index 017d2c7774..117b9d87cc 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PathValidationTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Models/PathValidationTests.cs @@ -1,7 +1,7 @@ using System; using Moq; using NUnit.Framework; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; using Umbraco.Tests.Common.Builders; @@ -54,7 +54,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models .Build(); //no id assigned - Assert.Throws(() => entity.EnsureValidPath(Mock.Of(), umbracoEntity => new EntitySlim(), umbracoEntity => { })); + Assert.Throws(() => entity.EnsureValidPath(Mock.Of>(), umbracoEntity => new EntitySlim(), umbracoEntity => { })); } [Test] @@ -66,7 +66,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models .Build(); //no parent found - Assert.Throws(() => entity.EnsureValidPath(Mock.Of(), umbracoEntity => null, umbracoEntity => { })); + Assert.Throws(() => entity.EnsureValidPath(Mock.Of>(), umbracoEntity => null, umbracoEntity => { })); } [Test] @@ -76,7 +76,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models .WithId(1234) .Build(); - entity.EnsureValidPath(Mock.Of(), umbracoEntity => null, umbracoEntity => { }); + entity.EnsureValidPath(Mock.Of>(), umbracoEntity => null, umbracoEntity => { }); //works because it's under the root Assert.AreEqual("-1,1234", entity.Path); @@ -90,7 +90,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models .WithParentId(888) .Build(); - entity.EnsureValidPath(Mock.Of(), umbracoEntity => umbracoEntity.ParentId == 888 ? new EntitySlim { Id = 888, Path = "-1,888" } : null, umbracoEntity => { }); + entity.EnsureValidPath(Mock.Of>(), umbracoEntity => umbracoEntity.ParentId == 888 ? new EntitySlim { Id = 888, Path = "-1,888" } : null, umbracoEntity => { }); //works because the parent was found Assert.AreEqual("-1,888,1234", entity.Path); @@ -140,7 +140,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.Models }; //this will recursively fix all paths - entity.EnsureValidPath(Mock.Of(), getParent, umbracoEntity => { }); + entity.EnsureValidPath(Mock.Of>(), getParent, umbracoEntity => { }); Assert.AreEqual("-1,999", parentA.Path); Assert.AreEqual("-1,999,888", parentB.Path); diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Web.Website/Controllers/SurfaceControllerTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Web.Website/Controllers/SurfaceControllerTests.cs index b1f7bbde79..ee2d5f3eab 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Web.Website/Controllers/SurfaceControllerTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Web.Website/Controllers/SurfaceControllerTests.cs @@ -203,7 +203,7 @@ namespace Umbraco.Tests.Integration private readonly IPublishedContentQuery _publishedContentQuery; public TestSurfaceController(IUmbracoContextAccessor umbracoContextAccessor, IPublishedContentQuery publishedContentQuery, IPublishedUrlProvider publishedUrlProvider) - : base(umbracoContextAccessor, null, ServiceContext.CreatePartial(), AppCaches.Disabled, null, null, publishedUrlProvider) + : base(umbracoContextAccessor, null, ServiceContext.CreatePartial(), AppCaches.Disabled, null, publishedUrlProvider) { _publishedContentQuery = publishedContentQuery; } diff --git a/src/Umbraco.Tests/IO/FileSystemsTests.cs b/src/Umbraco.Tests/IO/FileSystemsTests.cs index 6f7af8e605..d35f950e75 100644 --- a/src/Umbraco.Tests/IO/FileSystemsTests.cs +++ b/src/Umbraco.Tests/IO/FileSystemsTests.cs @@ -1,6 +1,8 @@ using System; using System.IO; using System.Text; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -30,8 +32,9 @@ namespace Umbraco.Tests.IO var composition = new Composition(_register, TestHelper.GetMockedTypeLoader(), Mock.Of(), Mock.Of(), TestHelper.IOHelper, AppCaches.NoCache); - composition.Register(_ => Mock.Of()); composition.Register(_ => Mock.Of()); + composition.Register(NullLoggerFactory.Instance); + composition.Register(typeof(ILogger<>), typeof(Logger<>)); composition.Register(_ => TestHelper.ShortStringHelper); composition.Register(_ => TestHelper.IOHelper); composition.RegisterUnique(); @@ -41,6 +44,7 @@ namespace Umbraco.Tests.IO var globalSettings = new GlobalSettings(); composition.Register(x => Microsoft.Extensions.Options.Options.Create(globalSettings)); + composition.ComposeFileSystems(); _factory = composition.CreateFactory(); diff --git a/src/Umbraco.Tests/IO/PhysicalFileSystemTests.cs b/src/Umbraco.Tests/IO/PhysicalFileSystemTests.cs index f1e705c9cb..bd26bbcc66 100644 --- a/src/Umbraco.Tests/IO/PhysicalFileSystemTests.cs +++ b/src/Umbraco.Tests/IO/PhysicalFileSystemTests.cs @@ -2,10 +2,10 @@ using System.IO; using System.Text; using System.Threading; +using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Tests.TestHelpers; @@ -16,7 +16,7 @@ namespace Umbraco.Tests.IO public class PhysicalFileSystemTests : AbstractFileSystemTests { public PhysicalFileSystemTests() - : base(new PhysicalFileSystem(TestHelper.IOHelper, TestHelper.GetHostingEnvironment(), Mock.Of(), Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "FileSysTests"), "/Media/")) + : base(new PhysicalFileSystem(TestHelper.IOHelper, TestHelper.GetHostingEnvironment(), Mock.Of>(), Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "FileSysTests"), "/Media/")) { } [SetUp] diff --git a/src/Umbraco.Tests/IO/ShadowFileSystemTests.cs b/src/Umbraco.Tests/IO/ShadowFileSystemTests.cs index dfd061b3ac..39052b7894 100644 --- a/src/Umbraco.Tests/IO/ShadowFileSystemTests.cs +++ b/src/Umbraco.Tests/IO/ShadowFileSystemTests.cs @@ -3,13 +3,14 @@ using System.IO; using System.Linq; using System.Text; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Composing; using Umbraco.Core.Configuration.Models; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Tests.TestHelpers; using IHostingEnvironment = Umbraco.Core.Hosting.IHostingEnvironment; @@ -23,7 +24,7 @@ namespace Umbraco.Tests.IO // SetUp and TearDown run before/after each test // SetUp does not start before the previous TearDown returns - private readonly ILogger _logger = Mock.Of(); + private readonly ILogger _logger = Mock.Of>(); private readonly IHostingEnvironment _hostingEnvironment = TestHelper.GetHostingEnvironment(); private readonly IIOHelper _ioHelper = TestHelper.IOHelper; @@ -391,6 +392,7 @@ namespace Umbraco.Tests.IO [Test] public void ShadowScopeComplete() { + var loggerFactory = NullLoggerFactory.Instance; var path = _ioHelper.MapPath("FileSysTests"); var shadowfs = _ioHelper.MapPath(Constants.SystemDirectories.TempData.EnsureEndsWith('/') + "ShadowFs"); Directory.CreateDirectory(path); @@ -402,7 +404,7 @@ namespace Umbraco.Tests.IO var container = Mock.Of(); var globalSettings = Options.Create(new GlobalSettings()); - var fileSystems = new FileSystems(container, _logger, _ioHelper, globalSettings, _hostingEnvironment) { IsScoped = () => scopedFileSystems }; + var fileSystems = new FileSystems(container, Mock.Of>(), loggerFactory, _ioHelper, globalSettings, _hostingEnvironment) { IsScoped = () => scopedFileSystems }; var fs = fileSystems.GetFileSystem(phy); var sw = (ShadowWrapper) fs.InnerFileSystem; @@ -495,7 +497,7 @@ namespace Umbraco.Tests.IO var container = Mock.Of(); var globalSettings = Options.Create(new GlobalSettings()); - var fileSystems = new FileSystems(container, _logger, _ioHelper, globalSettings, _hostingEnvironment) { IsScoped = () => scopedFileSystems }; + var fileSystems = new FileSystems(container, Mock.Of>(), NullLoggerFactory.Instance, _ioHelper, globalSettings, _hostingEnvironment) { IsScoped = () => scopedFileSystems }; var fs = fileSystems.GetFileSystem( phy); var sw = (ShadowWrapper) fs.InnerFileSystem; @@ -547,7 +549,7 @@ namespace Umbraco.Tests.IO var container = Mock.Of(); var globalSettings = Options.Create(new GlobalSettings()); - var fileSystems = new FileSystems(container, _logger, _ioHelper, globalSettings, _hostingEnvironment) { IsScoped = () => scopedFileSystems }; + var fileSystems = new FileSystems(container, Mock.Of>(), NullLoggerFactory.Instance, _ioHelper, globalSettings, _hostingEnvironment) { IsScoped = () => scopedFileSystems }; var fs = fileSystems.GetFileSystem( phy); var sw = (ShadowWrapper)fs.InnerFileSystem; diff --git a/src/Umbraco.Tests/Integration/ContentEventsTests.cs b/src/Umbraco.Tests/Integration/ContentEventsTests.cs index 575215c41f..7dfc705284 100644 --- a/src/Umbraco.Tests/Integration/ContentEventsTests.cs +++ b/src/Umbraco.Tests/Integration/ContentEventsTests.cs @@ -6,7 +6,7 @@ using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Web.Composing; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence.Repositories.Implement; using Umbraco.Core.Sync; @@ -33,7 +33,7 @@ namespace Umbraco.Tests.Integration { base.SetUp(); - _h1 = new DistributedCacheBinder(new DistributedCache(Current.ServerMessenger, Current.CacheRefreshers), Mock.Of(), Mock.Of()); + _h1 = new DistributedCacheBinder(new DistributedCache(Current.ServerMessenger, Current.CacheRefreshers), Mock.Of(), Mock.Of>()); _h1.BindEvents(true); _events = new List(); @@ -94,7 +94,7 @@ namespace Umbraco.Tests.Integration { _events = new List(); _msgCount = 0; - Current.Logger.Debug("RESET EVENTS"); + Current.Logger.LogDebug("RESET EVENTS"); } private IContent CreateContent(int parentId = -1) diff --git a/src/Umbraco.Tests/LegacyXmlPublishedCache/DictionaryPublishedContent.cs b/src/Umbraco.Tests/LegacyXmlPublishedCache/DictionaryPublishedContent.cs index 04c02f34d2..c472778f9f 100644 --- a/src/Umbraco.Tests/LegacyXmlPublishedCache/DictionaryPublishedContent.cs +++ b/src/Umbraco.Tests/LegacyXmlPublishedCache/DictionaryPublishedContent.cs @@ -4,9 +4,9 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Xml.XPath; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Cache; -using Umbraco.Core.Logging; using Umbraco.Core.Models.PublishedContent; using Umbraco.Web.Composing; using Umbraco.Web.Models; @@ -108,7 +108,7 @@ namespace Umbraco.Tests.LegacyXmlPublishedCache else { // this is a property that does not correspond to anything, ignore and log - Current.Logger.Warn("Dropping property '{PropertyKey}' because it does not belong to the content type.", i.Key); + Current.Logger.LogWarning("Dropping property '{PropertyKey}' because it does not belong to the content type.", i.Key); } } } diff --git a/src/Umbraco.Tests/LegacyXmlPublishedCache/PreviewContent.cs b/src/Umbraco.Tests/LegacyXmlPublishedCache/PreviewContent.cs index c058c9ac48..7f8793b098 100644 --- a/src/Umbraco.Tests/LegacyXmlPublishedCache/PreviewContent.cs +++ b/src/Umbraco.Tests/LegacyXmlPublishedCache/PreviewContent.cs @@ -2,9 +2,9 @@ using System.IO; using System.Linq; using System.Xml; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Tests.TestHelpers; using Umbraco.Web.Composing; @@ -41,7 +41,7 @@ namespace Umbraco.Tests.LegacyXmlPublishedCache } catch (Exception ex) { - Current.Logger.Error(ex, "Could not load preview set {PreviewSet} for user {UserId}.", _previewSet, _userId); + Current.Logger.LogError(ex, "Could not load preview set {PreviewSet} for user {UserId}.", _previewSet, _userId); ClearPreviewSet(); @@ -147,7 +147,7 @@ namespace Umbraco.Tests.LegacyXmlPublishedCache } catch (Exception ex) { - Current.Logger.Error(ex, "Couldn't delete preview set {FileName} for user {UserId}", file.Name, userId); + Current.Logger.LogError(ex, "Couldn't delete preview set {FileName} for user {UserId}", file.Name, userId); } } diff --git a/src/Umbraco.Tests/LegacyXmlPublishedCache/PublishedMediaCache.cs b/src/Umbraco.Tests/LegacyXmlPublishedCache/PublishedMediaCache.cs index 8221a391b0..02510d8e88 100644 --- a/src/Umbraco.Tests/LegacyXmlPublishedCache/PublishedMediaCache.cs +++ b/src/Umbraco.Tests/LegacyXmlPublishedCache/PublishedMediaCache.cs @@ -5,12 +5,12 @@ using System.IO; using System.Linq; using System.Threading; using System.Xml.XPath; +using Microsoft.Extensions.Logging; using Examine; using Examine.Search; using Lucene.Net.Store; using Umbraco.Core; using Umbraco.Core.Cache; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.PublishedContent; using Umbraco.Core.Services; @@ -134,13 +134,13 @@ namespace Umbraco.Tests.LegacyXmlPublishedCache //See this thread: http://examine.cdodeplex.com/discussions/264341 //Catch the exception here for the time being, and just fallback to GetMedia // TODO: Need to fix examine in LB scenarios! - Current.Logger.Error(ex, "Could not load data from Examine index for media"); + Current.Logger.LogError(ex, "Could not load data from Examine index for media"); } else if (ex is AlreadyClosedException) { //If the app domain is shutting down and the site is under heavy load the index reader will be closed and it really cannot //be re-opened since the app domain is shutting down. In this case we have no option but to try to load the data from the db. - Current.Logger.Error(ex, "Could not load data from Examine index for media, the app domain is most likely in a shutdown state"); + Current.Logger.LogError(ex, "Could not load data from Examine index for media, the app domain is most likely in a shutdown state"); } else throw; } @@ -302,13 +302,13 @@ namespace Umbraco.Tests.LegacyXmlPublishedCache //See this thread: http://examine.cdodeplex.com/discussions/264341 //Catch the exception here for the time being, and just fallback to GetMedia // TODO: Need to fix examine in LB scenarios! - Current.Logger.Error(ex, "Could not load data from Examine index for media"); + Current.Logger.LogError(ex, "Could not load data from Examine index for media"); } else if (ex is AlreadyClosedException) { //If the app domain is shutting down and the site is under heavy load the index reader will be closed and it really cannot //be re-opened since the app domain is shutting down. In this case we have no option but to try to load the data from the db. - Current.Logger.Error(ex, "Could not load data from Examine index for media, the app domain is most likely in a shutdown state"); + Current.Logger.LogError(ex, "Could not load data from Examine index for media, the app domain is most likely in a shutdown state"); } else throw; } @@ -326,7 +326,7 @@ namespace Umbraco.Tests.LegacyXmlPublishedCache var miss = Interlocked.CompareExchange(ref _examineIndexMiss, 0, 0); // volatile read if (miss < ExamineIndexMissMax && Interlocked.Increment(ref _examineIndexMiss) == ExamineIndexMissMax) - Current.Logger.Warn("Failed ({ExamineIndexMissMax} times) to retrieve medias from Examine index and had to load" + Current.Logger.LogWarning("Failed ({ExamineIndexMissMax} times) to retrieve medias from Examine index and had to load" + " them from DB. This may indicate that the Examine index is corrupted.", ExamineIndexMissMax); return ConvertFromIMedia(media); @@ -344,7 +344,7 @@ namespace Umbraco.Tests.LegacyXmlPublishedCache : ConvertFromXPathNavigator(media.Current); } - Current.Logger.Warn("Could not retrieve media {MediaId} from Examine index or from legacy library.GetMedia method", id); + Current.Logger.LogWarning("Could not retrieve media {MediaId} from Examine index or from legacy library.GetMedia method", id); return null; } diff --git a/src/Umbraco.Tests/LegacyXmlPublishedCache/XmlPublishedSnapshotService.cs b/src/Umbraco.Tests/LegacyXmlPublishedCache/XmlPublishedSnapshotService.cs index a913ba06bd..2bc89e0842 100644 --- a/src/Umbraco.Tests/LegacyXmlPublishedCache/XmlPublishedSnapshotService.cs +++ b/src/Umbraco.Tests/LegacyXmlPublishedCache/XmlPublishedSnapshotService.cs @@ -1,12 +1,12 @@ using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Hosting; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Membership; using Umbraco.Core.Models.PublishedContent; @@ -56,7 +56,7 @@ namespace Umbraco.Tests.LegacyXmlPublishedCache IUmbracoContextAccessor umbracoContextAccessor, IDocumentRepository documentRepository, IMediaRepository mediaRepository, IMemberRepository memberRepository, IDefaultCultureAccessor defaultCultureAccessor, - ILogger logger, + ILoggerFactory loggerFactory, GlobalSettings globalSettings, IHostingEnvironment hostingEnvironment, IApplicationShutdownRegistry hostingLifetime, @@ -70,7 +70,7 @@ namespace Umbraco.Tests.LegacyXmlPublishedCache publishedSnapshotAccessor, variationContextAccessor, umbracoContextAccessor, documentRepository, mediaRepository, memberRepository, defaultCultureAccessor, - logger, globalSettings, hostingEnvironment, hostingLifetime, shortStringHelper, siteDomainHelper, entitySerializer, null, mainDom, testing, enableRepositoryEvents) + loggerFactory, globalSettings, hostingEnvironment, hostingLifetime, shortStringHelper, siteDomainHelper, entitySerializer, null, mainDom, testing, enableRepositoryEvents) { _umbracoContextAccessor = umbracoContextAccessor; } @@ -84,7 +84,7 @@ namespace Umbraco.Tests.LegacyXmlPublishedCache IUmbracoContextAccessor umbracoContextAccessor, IDocumentRepository documentRepository, IMediaRepository mediaRepository, IMemberRepository memberRepository, IDefaultCultureAccessor defaultCultureAccessor, - ILogger logger, + ILoggerFactory loggerFactory, GlobalSettings globalSettings, IHostingEnvironment hostingEnvironment, IApplicationShutdownRegistry hostingLifetime, @@ -99,7 +99,7 @@ namespace Umbraco.Tests.LegacyXmlPublishedCache _routesCache = new RoutesCache(); _publishedContentTypeFactory = publishedContentTypeFactory; _contentTypeCache = contentTypeCache - ?? new PublishedContentTypeCache(serviceContext.ContentTypeService, serviceContext.MediaTypeService, serviceContext.MemberTypeService, publishedContentTypeFactory, logger); + ?? new PublishedContentTypeCache(serviceContext.ContentTypeService, serviceContext.MediaTypeService, serviceContext.MemberTypeService, publishedContentTypeFactory, loggerFactory.CreateLogger()); _xmlStore = new XmlStore(serviceContext.ContentTypeService, serviceContext.ContentService, scopeProvider, _routesCache, _contentTypeCache, publishedSnapshotAccessor, mainDom, testing, enableRepositoryEvents, diff --git a/src/Umbraco.Tests/LegacyXmlPublishedCache/XmlStore.cs b/src/Umbraco.Tests/LegacyXmlPublishedCache/XmlStore.cs index dadf8b6824..41705c7774 100644 --- a/src/Umbraco.Tests/LegacyXmlPublishedCache/XmlStore.cs +++ b/src/Umbraco.Tests/LegacyXmlPublishedCache/XmlStore.cs @@ -5,12 +5,12 @@ using System.IO; using System.Linq; using System.Text; using System.Xml; +using Microsoft.Extensions.Logging; using NPoco; using Umbraco.Core; using Umbraco.Core.Configuration; using Umbraco.Core.Hosting; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Repositories; @@ -138,7 +138,7 @@ namespace Umbraco.Tests.LegacyXmlPublishedCache { if (SyncToXmlFile == false) return; - var logger = Current.Logger; + var loggerFactory = Current.LoggerFactory; // there's always be one task keeping a ref to the runner // so it's safe to just create it as a local var here @@ -147,10 +147,10 @@ namespace Umbraco.Tests.LegacyXmlPublishedCache LongRunning = true, KeepAlive = true, Hosted = false // main domain will take care of stopping the runner (see below) - }, logger, _hostingLifetime); + }, loggerFactory.CreateLogger>(), _hostingLifetime); // create (and add to runner) - _persisterTask = new XmlStoreFilePersister(runner, this, logger); + _persisterTask = new XmlStoreFilePersister(runner, this, loggerFactory.CreateLogger()); var registered = mainDom.Register( null, @@ -286,8 +286,8 @@ namespace Umbraco.Tests.LegacyXmlPublishedCache throw new Exception("Cannot run with both ContinouslyUpdateXmlDiskCache and XmlContentCheckForDiskChanges being true."); if (XmlIsImmutable == false) - //Current.Logger.Warn("Running with CloneXmlContent being false is a bad idea."); - Current.Logger.Warn("CloneXmlContent is false - ignored, we always clone."); + //Current.Logger.LogWarning("Running with CloneXmlContent being false is a bad idea."); + Current.Logger.LogWarning("CloneXmlContent is false - ignored, we always clone."); // note: if SyncFromXmlFile then we should also disable / warn that local edits are going to cause issues... } @@ -415,7 +415,7 @@ namespace Umbraco.Tests.LegacyXmlPublishedCache } catch (Exception ex) { - Current.Logger.Error(ex, "Failed to build a DTD for the Xml cache."); + Current.Logger.LogError(ex, "Failed to build a DTD for the Xml cache."); } dtd.AppendLine("]>"); @@ -426,7 +426,7 @@ namespace Umbraco.Tests.LegacyXmlPublishedCache // assumes xml lock (file is always locked) private void LoadXmlLocked(SafeXmlReaderWriter safeXml, out bool registerXmlChange) { - Current.Logger.Debug("Loading Xml..."); + Current.Logger.LogDebug("Loading Xml..."); // try to get it from the file if (XmlFileEnabled && (safeXml.Xml = LoadXmlFromFile()) != null) @@ -674,7 +674,7 @@ AND (umbracoNode.id=@id)"; // (no need to test _released) internal void SaveXmlToFile() { - Current.Logger.Info("Save Xml to file..."); + Current.Logger.LogInformation("Save Xml to file..."); try { @@ -698,14 +698,14 @@ AND (umbracoNode.id=@id)"; fs.Write(bytes, 0, bytes.Length); } - Current.Logger.Info("Saved Xml to file."); + Current.Logger.LogInformation("Saved Xml to file."); } catch (Exception ex) { // if something goes wrong remove the file DeleteXmlFile(); - Current.Logger.Error(ex, "Failed to save Xml to file '{FileName}'.", _xmlFileName); + Current.Logger.LogError(ex, "Failed to save Xml to file '{FileName}'.", _xmlFileName); } } @@ -714,7 +714,7 @@ AND (umbracoNode.id=@id)"; // (no need to test _released) internal async Task SaveXmlToFileAsync() { - Current.Logger.Info("Save Xml to file..."); + Current.Logger.LogInformation("Save Xml to file..."); try { @@ -738,14 +738,14 @@ AND (umbracoNode.id=@id)"; await fs.WriteAsync(bytes, 0, bytes.Length); } - Current.Logger.Info("Saved Xml to file."); + Current.Logger.LogInformation("Saved Xml to file."); } catch (Exception ex) { // if something goes wrong remove the file DeleteXmlFile(); - Current.Logger.Error(ex, "Failed to save Xml to file '{FileName}'.", _xmlFileName); + Current.Logger.LogError(ex, "Failed to save Xml to file '{FileName}'.", _xmlFileName); } } @@ -782,7 +782,7 @@ AND (umbracoNode.id=@id)"; // do NOT try to load if we are not the main domain anymore if (_released) return null; - Current.Logger.Info("Load Xml from file..."); + Current.Logger.LogInformation("Load Xml from file..."); try { @@ -792,17 +792,17 @@ AND (umbracoNode.id=@id)"; xml.Load(fs); } _lastFileRead = DateTime.UtcNow; - Current.Logger.Info("Loaded Xml from file."); + Current.Logger.LogInformation("Loaded Xml from file."); return xml; } catch (FileNotFoundException) { - Current.Logger.Warn("Failed to load Xml, file does not exist."); + Current.Logger.LogWarning("Failed to load Xml, file does not exist."); return null; } catch (Exception ex) { - Current.Logger.Error(ex, "Failed to load Xml from file '{FileName}'.", _xmlFileName); + Current.Logger.LogError(ex, "Failed to load Xml from file '{FileName}'.", _xmlFileName); try { DeleteXmlFile(); @@ -834,7 +834,7 @@ AND (umbracoNode.id=@id)"; _nextFileCheck = now.AddSeconds(1); // check every 1s if (XmlFileLastWriteTime <= _lastFileRead) return; - Current.Logger.Debug("Xml file change detected, reloading."); + Current.Logger.LogDebug("Xml file change detected, reloading."); // time to read @@ -1042,7 +1042,7 @@ ORDER BY umbracoNode.level, umbracoNode.sortOrder"; { foreach (var payload in payloads) { - Current.Logger.Debug("Notified {ChangeTypes} for content {ContentId}", payload.ChangeTypes, payload.Id); + Current.Logger.LogDebug("Notified {ChangeTypes} for content {ContentId}", payload.ChangeTypes, payload.Id); if (payload.ChangeTypes.HasType(TreeChangeTypes.RefreshAll)) { @@ -1075,7 +1075,7 @@ ORDER BY umbracoNode.level, umbracoNode.sortOrder"; if (content == null || content.Published == false || content.Trashed) { // no published version - Current.Logger.Debug("Notified, content {ContentId} has no published version.", payload.Id); + Current.Logger.LogDebug("Notified, content {ContentId} has no published version.", payload.Id); if (current != null) { @@ -1114,7 +1114,7 @@ ORDER BY umbracoNode.level, umbracoNode.sortOrder"; if (dtos.MoveNext() == false) { // gone fishing, remove (possible race condition) - Current.Logger.Debug("Notified, content {ContentId} gone fishing.", payload.Id); + Current.Logger.LogDebug("Notified, content {ContentId} gone fishing.", payload.Id); if (current != null) { @@ -1228,7 +1228,7 @@ ORDER BY umbracoNode.level, umbracoNode.sortOrder"; .ToArray(); foreach (var payload in payloads) - Current.Logger.Debug("Notified {ChangeTypes} for content type {ContentTypeId}", payload.ChangeTypes, payload.Id); + Current.Logger.LogDebug("Notified {ChangeTypes} for content type {ContentTypeId}", payload.ChangeTypes, payload.Id); if (ids.Length > 0) // must have refreshes, not only removes RefreshContentTypes(ids); @@ -1247,7 +1247,7 @@ ORDER BY umbracoNode.level, umbracoNode.sortOrder"; _contentTypeCache.ClearDataType(payload.Id); foreach (var payload in payloads) - Current.Logger.Debug("Notified {RemovedStatus} for data type {payload.Id}", + Current.Logger.LogDebug("Notified {RemovedStatus} for data type {payload.Id}", payload.Removed ? "Removed" : "Refreshed", payload.Id); diff --git a/src/Umbraco.Tests/LegacyXmlPublishedCache/XmlStoreFilePersister.cs b/src/Umbraco.Tests/LegacyXmlPublishedCache/XmlStoreFilePersister.cs index 56c09b18ac..52f639f829 100644 --- a/src/Umbraco.Tests/LegacyXmlPublishedCache/XmlStoreFilePersister.cs +++ b/src/Umbraco.Tests/LegacyXmlPublishedCache/XmlStoreFilePersister.cs @@ -1,7 +1,7 @@ using System; using System.Threading; +using Microsoft.Extensions.Logging; using Umbraco.Core; -using Umbraco.Core.Logging; using Umbraco.Web.Scheduling; namespace Umbraco.Tests.LegacyXmlPublishedCache @@ -18,7 +18,7 @@ namespace Umbraco.Tests.LegacyXmlPublishedCache internal class XmlStoreFilePersister : LatchedBackgroundTaskBase { private readonly IBackgroundTaskRunner _runner; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly XmlStore _store; private readonly object _locko = new object(); private bool _released; @@ -39,12 +39,12 @@ namespace Umbraco.Tests.LegacyXmlPublishedCache public override bool RunsOnShutdown => _timer != null; // initialize the first instance, which is inactive (not touched yet) - public XmlStoreFilePersister(IBackgroundTaskRunner runner, XmlStore store, ILogger logger) + public XmlStoreFilePersister(IBackgroundTaskRunner runner, XmlStore store, ILogger logger) : this(runner, store, logger, false) { } // initialize further instances, which are active (touched) - private XmlStoreFilePersister(IBackgroundTaskRunner runner, XmlStore store, ILogger logger, bool touched) + private XmlStoreFilePersister(IBackgroundTaskRunner runner, XmlStore store, ILogger logger, bool touched) { _runner = runner; _store = store; @@ -61,7 +61,7 @@ namespace Umbraco.Tests.LegacyXmlPublishedCache if (touched == false) return; - _logger.Debug("Created, save in {WaitMilliseconds}ms.", WaitMilliseconds); + _logger.LogDebug("Created, save in {WaitMilliseconds}ms.", WaitMilliseconds); _initialTouch = DateTime.Now; _timer = new Timer(_ => TimerRelease()); _timer.Change(WaitMilliseconds, 0); @@ -83,22 +83,22 @@ namespace Umbraco.Tests.LegacyXmlPublishedCache { if (_released) // our timer has triggered OR the runner is shutting down { - _logger.Debug("Touched, was released..."); + _logger.LogDebug("Touched, was released..."); // release: has run or is running, too late, return a new task (adds itself to runner) if (_runner == null) { - _logger.Debug("Runner is down, run now."); + _logger.LogDebug("Runner is down, run now."); runNow = true; } else { - _logger.Debug("Create new..."); + _logger.LogDebug("Create new..."); ret = new XmlStoreFilePersister(_runner, _store, _logger, true); if (ret._runner == null) { // could not enlist with the runner, runner is completed, must run now - _logger.Debug("Runner is down, run now."); + _logger.LogDebug("Runner is down, run now."); runNow = true; } } @@ -106,7 +106,7 @@ namespace Umbraco.Tests.LegacyXmlPublishedCache else if (_timer == null) // we don't have a timer yet { - _logger.Debug("Touched, was idle, start and save in {WaitMilliseconds}ms.", WaitMilliseconds); + _logger.LogDebug("Touched, was idle, start and save in {WaitMilliseconds}ms.", WaitMilliseconds); _initialTouch = DateTime.Now; _timer = new Timer(_ => TimerRelease()); _timer.Change(WaitMilliseconds, 0); @@ -119,12 +119,12 @@ namespace Umbraco.Tests.LegacyXmlPublishedCache if (DateTime.Now - _initialTouch < TimeSpan.FromMilliseconds(MaxWaitMilliseconds)) { - _logger.Debug("Touched, was waiting, can delay, save in {WaitMilliseconds}ms.", WaitMilliseconds); + _logger.LogDebug("Touched, was waiting, can delay, save in {WaitMilliseconds}ms.", WaitMilliseconds); _timer.Change(WaitMilliseconds, 0); } else { - _logger.Debug("Touched, was waiting, cannot delay."); + _logger.LogDebug("Touched, was waiting, cannot delay."); } } } @@ -135,7 +135,7 @@ namespace Umbraco.Tests.LegacyXmlPublishedCache if (runNow) //Run(); - _logger.Warn("Cannot write now because we are going down, changes may be lost."); + _logger.LogWarning("Cannot write now because we are going down, changes may be lost."); return ret; // this, by default, unless we created a new one } @@ -144,7 +144,7 @@ namespace Umbraco.Tests.LegacyXmlPublishedCache { lock (_locko) { - _logger.Debug("Timer: release."); + _logger.LogDebug("Timer: release."); _released = true; Release(); @@ -157,7 +157,7 @@ namespace Umbraco.Tests.LegacyXmlPublishedCache { lock (_locko) { - _logger.Debug("Run now (sync)."); + _logger.LogDebug("Run now (sync)."); // not really needed but safer (it's only us invoking Run, but the method is public...) _released = true; } diff --git a/src/Umbraco.Tests/Logging/LogviewerTests.cs b/src/Umbraco.Tests/Logging/LogviewerTests.cs index 0a193b4446..04d0150f75 100644 --- a/src/Umbraco.Tests/Logging/LogviewerTests.cs +++ b/src/Umbraco.Tests/Logging/LogviewerTests.cs @@ -4,8 +4,8 @@ using Serilog; using System; using System.IO; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core; -using Umbraco.Core.Logging; using Umbraco.Core.Logging.Viewer; using Umbraco.Tests.TestHelpers; @@ -55,7 +55,7 @@ namespace Umbraco.Tests.Logging File.Copy(exampleLogfilePath, _newLogfilePath, true); File.Copy(exampleSearchfilePath, _newSearchfilePath, true); - var logger = Mock.Of(); + var logger = Mock.Of>(); var logViewerConfig = new LogViewerConfig(hostingEnv); _logViewer = new SerilogJsonLogViewer(logger, logViewerConfig, loggingConfiguration, Log.Logger); } diff --git a/src/Umbraco.Tests/Migrations/AdvancedMigrationTests.cs b/src/Umbraco.Tests/Migrations/AdvancedMigrationTests.cs index 90b2da5500..474528a8ec 100644 --- a/src/Umbraco.Tests/Migrations/AdvancedMigrationTests.cs +++ b/src/Umbraco.Tests/Migrations/AdvancedMigrationTests.cs @@ -1,8 +1,10 @@ using System; using System.Linq; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using NUnit.Framework; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Core.Migrations; using Umbraco.Core.Migrations.Install; using Umbraco.Core.Migrations.Upgrade; @@ -19,11 +21,11 @@ namespace Umbraco.Tests.Migrations [UmbracoTest(Database = UmbracoTestOptions.Database.NewEmptyPerTest)] public class AdvancedMigrationTests : TestWithDatabaseBase { + private ILoggerFactory _loggerFactory = NullLoggerFactory.Instance; + [Test] public void CreateTableOfTDto() { - var logger = new DebugDiagnosticsLogger(new MessageTemplates()); - var builder = Mock.Of(); Mock.Get(builder) .Setup(x => x.Build(It.IsAny(), It.IsAny())) @@ -41,9 +43,9 @@ namespace Umbraco.Tests.Migrations .From(string.Empty) .To("done")); - upgrader.Execute(ScopeProvider, builder, Mock.Of(), logger); + upgrader.Execute(ScopeProvider, builder, Mock.Of(), _loggerFactory.CreateLogger(), _loggerFactory); - var helper = new DatabaseSchemaCreator(scope.Database, logger, UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, LoggerFactory.CreateLogger(), LoggerFactory, UmbracoVersion); var exists = helper.TableExists("umbracoUser"); Assert.IsTrue(exists); @@ -54,8 +56,6 @@ namespace Umbraco.Tests.Migrations [Test] public void DeleteKeysAndIndexesOfTDto() { - var logger = new DebugDiagnosticsLogger(new MessageTemplates()); - var builder = Mock.Of(); Mock.Get(builder) .Setup(x => x.Build(It.IsAny(), It.IsAny())) @@ -80,7 +80,7 @@ namespace Umbraco.Tests.Migrations .To("a") .To("done")); - upgrader.Execute(ScopeProvider, builder, Mock.Of(), logger); + upgrader.Execute(ScopeProvider, builder, Mock.Of(), _loggerFactory.CreateLogger(), _loggerFactory); scope.Complete(); } } @@ -88,8 +88,6 @@ namespace Umbraco.Tests.Migrations [Test] public void CreateKeysAndIndexesOfTDto() { - var logger = new DebugDiagnosticsLogger(new MessageTemplates()); - var builder = Mock.Of(); Mock.Get(builder) .Setup(x => x.Build(It.IsAny(), It.IsAny())) @@ -117,7 +115,7 @@ namespace Umbraco.Tests.Migrations .To("b") .To("done")); - upgrader.Execute(ScopeProvider, builder, Mock.Of(), logger); + upgrader.Execute(ScopeProvider, builder, Mock.Of(), _loggerFactory.CreateLogger(), _loggerFactory); scope.Complete(); } } @@ -125,8 +123,6 @@ namespace Umbraco.Tests.Migrations [Test] public void CreateKeysAndIndexes() { - var logger = new DebugDiagnosticsLogger(new MessageTemplates()); - var builder = Mock.Of(); Mock.Get(builder) .Setup(x => x.Build(It.IsAny(), It.IsAny())) @@ -154,7 +150,7 @@ namespace Umbraco.Tests.Migrations .To("b") .To("done")); - upgrader.Execute(ScopeProvider, builder, Mock.Of(), logger); + upgrader.Execute(ScopeProvider, builder, Mock.Of(), _loggerFactory.CreateLogger(), _loggerFactory); scope.Complete(); } } @@ -162,8 +158,6 @@ namespace Umbraco.Tests.Migrations [Test] public void CreateColumn() { - var logger = new DebugDiagnosticsLogger(new MessageTemplates()); - var builder = Mock.Of(); Mock.Get(builder) .Setup(x => x.Build(It.IsAny(), It.IsAny())) @@ -188,7 +182,7 @@ namespace Umbraco.Tests.Migrations .To("a") .To("done")); - upgrader.Execute(ScopeProvider, builder, Mock.Of(), logger); + upgrader.Execute(ScopeProvider, builder, Mock.Of(), _loggerFactory.CreateLogger(), _loggerFactory); scope.Complete(); } } diff --git a/src/Umbraco.Tests/Migrations/AlterMigrationTests.cs b/src/Umbraco.Tests/Migrations/AlterMigrationTests.cs index 8cbd5c5764..2d8dd7d18e 100644 --- a/src/Umbraco.Tests/Migrations/AlterMigrationTests.cs +++ b/src/Umbraco.Tests/Migrations/AlterMigrationTests.cs @@ -2,11 +2,11 @@ using System.Diagnostics; using System.Data.Common; using System.Linq; +using Microsoft.Extensions.Logging; using Moq; using NPoco; using NUnit.Framework; using Umbraco.Core; -using Umbraco.Core.Logging; using Umbraco.Core.Migrations; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.SqlSyntax; @@ -20,19 +20,19 @@ namespace Umbraco.Tests.Migrations [TestFixture] public class AlterMigrationTests { - private ILogger _logger; + private ILogger _logger; private ISqlSyntaxProvider _sqlSyntax; private IUmbracoDatabase _database; [SetUp] public void Setup() { - _logger = Mock.Of(); + _logger = Mock.Of>(); _sqlSyntax = new SqlCeSyntaxProvider(); var dbProviderFactory = DbProviderFactories.GetFactory(Constants.DbProviderNames.SqlServer); var sqlContext = new SqlContext(_sqlSyntax, DatabaseType.SqlServer2008, Mock.Of()); - _database = new UmbracoDatabase("cstr", sqlContext, dbProviderFactory, _logger, TestHelper.BulkSqlInsertProvider); + _database = new UmbracoDatabase("cstr", sqlContext, dbProviderFactory, Mock.Of>(), TestHelper.BulkSqlInsertProvider); } [Test] diff --git a/src/Umbraco.Tests/Migrations/MigrationPlanTests.cs b/src/Umbraco.Tests/Migrations/MigrationPlanTests.cs index 31ceb1bdbf..0a8c6cfb3f 100644 --- a/src/Umbraco.Tests/Migrations/MigrationPlanTests.cs +++ b/src/Umbraco.Tests/Migrations/MigrationPlanTests.cs @@ -1,11 +1,12 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using NPoco; using NUnit.Framework; using Umbraco.Core; -using Umbraco.Core.Logging; using Umbraco.Core.Migrations; using Umbraco.Core.Migrations.Upgrade; using Umbraco.Core.Persistence; @@ -24,7 +25,7 @@ namespace Umbraco.Tests.Migrations [Test] public void CanExecute() { - var logger = Mock.Of(); + var loggerFactory = NullLoggerFactory.Instance; var database = new TestDatabase(); var scope = Mock.Of(); @@ -66,7 +67,7 @@ namespace Umbraco.Tests.Migrations var sourceState = kvs.GetValue("Umbraco.Tests.MigrationPlan") ?? string.Empty; // execute plan - state = plan.Execute(s, sourceState, migrationBuilder, logger); + state = plan.Execute(s, sourceState, migrationBuilder, loggerFactory.CreateLogger(), loggerFactory); // save new state kvs.SetValue("Umbraco.Tests.MigrationPlan", sourceState, state); diff --git a/src/Umbraco.Tests/Migrations/MigrationTests.cs b/src/Umbraco.Tests/Migrations/MigrationTests.cs index bfadd45b0d..46d9b04b1b 100644 --- a/src/Umbraco.Tests/Migrations/MigrationTests.cs +++ b/src/Umbraco.Tests/Migrations/MigrationTests.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Data; +using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; using Semver; @@ -10,7 +11,6 @@ using Umbraco.Core.Migrations.Upgrade; using Umbraco.Core.Persistence; using Umbraco.Core.Scoping; using Umbraco.Core.Services; -using ILogger = Umbraco.Core.Logging.ILogger; namespace Umbraco.Tests.Migrations { @@ -46,7 +46,7 @@ namespace Umbraco.Tests.Migrations throw new NotImplementedException(); } - + public IScopeContext Context { get; set; } public ISqlContext SqlContext { get; set; } @@ -63,7 +63,7 @@ namespace Umbraco.Tests.Migrations [Test] public void RunGoodMigration() { - var migrationContext = new MigrationContext(Mock.Of(), Mock.Of()); + var migrationContext = new MigrationContext(Mock.Of(), Mock.Of>()); IMigration migration = new GoodMigration(migrationContext); migration.Migrate(); } @@ -71,7 +71,7 @@ namespace Umbraco.Tests.Migrations [Test] public void DetectBadMigration1() { - var migrationContext = new MigrationContext(Mock.Of(), Mock.Of()); + var migrationContext = new MigrationContext(Mock.Of(), Mock.Of>()); IMigration migration = new BadMigration1(migrationContext); Assert.Throws(() => migration.Migrate()); } @@ -79,7 +79,7 @@ namespace Umbraco.Tests.Migrations [Test] public void DetectBadMigration2() { - var migrationContext = new MigrationContext(Mock.Of(), Mock.Of()); + var migrationContext = new MigrationContext(Mock.Of(), Mock.Of>()); IMigration migration = new BadMigration2(migrationContext); Assert.Throws(() => migration.Migrate()); } diff --git a/src/Umbraco.Tests/Migrations/PostMigrationTests.cs b/src/Umbraco.Tests/Migrations/PostMigrationTests.cs index d9dcbc1d34..ba265b3fd2 100644 --- a/src/Umbraco.Tests/Migrations/PostMigrationTests.cs +++ b/src/Umbraco.Tests/Migrations/PostMigrationTests.cs @@ -1,8 +1,9 @@ using System; +using Microsoft.Extensions.Logging.Abstractions; +using Microsoft.Extensions.Logging; using Moq; using NPoco; using NUnit.Framework; -using Umbraco.Core.Logging; using Umbraco.Core.Migrations; using Umbraco.Core.Migrations.Upgrade; using Umbraco.Core.Persistence; @@ -17,11 +18,10 @@ namespace Umbraco.Tests.Migrations [TestFixture] public class PostMigrationTests { + private static ILoggerFactory _loggerFactory = NullLoggerFactory.Instance; [Test] public void ExecutesPlanPostMigration() { - var logger = Mock.Of(); - var builder = Mock.Of(); Mock.Get(builder) .Setup(x => x.Build(It.IsAny(), It.IsAny())) @@ -54,7 +54,7 @@ namespace Umbraco.Tests.Migrations TestPostMigration.MigrateCount = 0; var upgrader = new Upgrader(plan); - upgrader.Execute(scopeProvider, builder, Mock.Of(), logger); + upgrader.Execute(scopeProvider, builder, Mock.Of(), _loggerFactory.CreateLogger(), _loggerFactory); Assert.AreEqual(1, TestPostMigration.MigrateCount); } @@ -62,8 +62,6 @@ namespace Umbraco.Tests.Migrations [Test] public void MigrationCanAddPostMigration() { - var logger = Mock.Of(); - var builder = Mock.Of(); Mock.Get(builder) .Setup(x => x.Build(It.IsAny(), It.IsAny())) @@ -97,10 +95,10 @@ namespace Umbraco.Tests.Migrations TestMigration.MigrateCount = 0; TestPostMigration.MigrateCount = 0; - new MigrationContext(database, logger); + new MigrationContext(database, _loggerFactory.CreateLogger()); var upgrader = new Upgrader(plan); - upgrader.Execute(scopeProvider, builder, Mock.Of(), logger); + upgrader.Execute(scopeProvider, builder, Mock.Of(), _loggerFactory.CreateLogger(), _loggerFactory); Assert.AreEqual(1, TestMigration.MigrateCount); Assert.AreEqual(1, TestPostMigration.MigrateCount); diff --git a/src/Umbraco.Tests/Models/ContentExtensionsTests.cs b/src/Umbraco.Tests/Models/ContentExtensionsTests.cs index 1b2f30db16..ae59e377d0 100644 --- a/src/Umbraco.Tests/Models/ContentExtensionsTests.cs +++ b/src/Umbraco.Tests/Models/ContentExtensionsTests.cs @@ -1,11 +1,11 @@ using System; using System.Linq; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Composing.CompositionExtensions; using Umbraco.Core.Configuration.UmbracoSettings; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; @@ -25,13 +25,12 @@ namespace Umbraco.Tests.Models { base.Compose(); - Composition.Register(_ => Mock.Of()); Composition.ComposeFileSystems(); Composition.Register(_ => Mock.Of()); // all this is required so we can validate properties... - var editor = new TextboxPropertyEditor(Mock.Of(), Mock.Of(), Mock.Of(), IOHelper, ShortStringHelper, LocalizedTextService) { Alias = "test" }; + var editor = new TextboxPropertyEditor(NullLoggerFactory.Instance, Mock.Of(), Mock.Of(), IOHelper, ShortStringHelper, LocalizedTextService) { Alias = "test" }; Composition.Register(_ => new DataEditorCollection(new[] { editor })); Composition.Register(); var dataType = Mock.Of(); diff --git a/src/Umbraco.Tests/Models/ContentTests.cs b/src/Umbraco.Tests/Models/ContentTests.cs index ca56a25f68..8fb3f60cc8 100644 --- a/src/Umbraco.Tests/Models/ContentTests.cs +++ b/src/Umbraco.Tests/Models/ContentTests.cs @@ -4,16 +4,13 @@ using System.Diagnostics; using System.Globalization; using System.Linq; using System.Threading; -using Microsoft.CodeAnalysis.Options; -using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using Newtonsoft.Json; using Umbraco.Core; using NUnit.Framework; using Umbraco.Core.Cache; -using Umbraco.Core.Composing; using Umbraco.Core.Composing.CompositionExtensions; -using Umbraco.Core.Configuration.UmbracoSettings; using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; @@ -24,7 +21,6 @@ using Umbraco.Tests.TestHelpers.Entities; using Umbraco.Tests.TestHelpers.Stubs; using Umbraco.Tests.Testing; using Umbraco.Web.PropertyEditors; -using Umbraco.Tests.TestHelpers; namespace Umbraco.Tests.Models { @@ -37,13 +33,12 @@ namespace Umbraco.Tests.Models { base.Compose(); - Composition.Register(_ => Mock.Of()); Composition.ComposeFileSystems(); Composition.Register(_ => Mock.Of()); // all this is required so we can validate properties... - var editor = new TextboxPropertyEditor(Mock.Of(), Mock.Of(), Mock.Of(), IOHelper, ShortStringHelper, LocalizedTextService) { Alias = "test" }; + var editor = new TextboxPropertyEditor(NullLoggerFactory.Instance, Mock.Of(), Mock.Of(), IOHelper, ShortStringHelper, LocalizedTextService) { Alias = "test" }; Composition.Register(_ => new DataEditorCollection(new [] { editor })); Composition.Register(); var dataType = Mock.Of(); @@ -238,7 +233,7 @@ namespace Umbraco.Tests.Models private static IProfilingLogger GetTestProfilingLogger() { - var logger = new DebugDiagnosticsLogger(new MessageTemplates()); + var logger = NullLoggerFactory.Instance.CreateLogger("ProfilingLogger"); var profiler = new TestProfiler(); return new ProfilingLogger(logger, profiler); } diff --git a/src/Umbraco.Tests/Models/MediaXmlTest.cs b/src/Umbraco.Tests/Models/MediaXmlTest.cs index b6236ec944..646dc7f2a0 100644 --- a/src/Umbraco.Tests/Models/MediaXmlTest.cs +++ b/src/Umbraco.Tests/Models/MediaXmlTest.cs @@ -1,5 +1,7 @@ using System.Linq; using System.Xml.Linq; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -28,12 +30,12 @@ namespace Umbraco.Tests.Models // reference, so static ctor runs, so event handlers register // and then, this will reset the width, height... because the file does not exist, of course ;-( - var logger = Mock.Of(); + var loggerFactory = NullLoggerFactory.Instance; var scheme = Mock.Of(); var contentSettings = new ContentSettings(); - var mediaFileSystem = new MediaFileSystem(Mock.Of(), scheme, logger, ShortStringHelper); - var ignored = new FileUploadPropertyEditor(Mock.Of(), mediaFileSystem, Microsoft.Extensions.Options.Options.Create(contentSettings), DataTypeService, LocalizationService, LocalizedTextService, ShortStringHelper, UploadAutoFillProperties); + var mediaFileSystem = new MediaFileSystem(Mock.Of(), scheme, loggerFactory.CreateLogger(), ShortStringHelper); + var ignored = new FileUploadPropertyEditor(loggerFactory, mediaFileSystem, Microsoft.Extensions.Options.Options.Create(contentSettings), DataTypeService, LocalizationService, LocalizedTextService, ShortStringHelper, UploadAutoFillProperties); var media = MockedMedia.CreateMediaImage(mediaType, -1); media.WriterId = -1; // else it's zero and that's not a user and it breaks the tests diff --git a/src/Umbraco.Tests/Models/VariationTests.cs b/src/Umbraco.Tests/Models/VariationTests.cs index b8868a8d0d..df63461f4d 100644 --- a/src/Umbraco.Tests/Models/VariationTests.cs +++ b/src/Umbraco.Tests/Models/VariationTests.cs @@ -1,16 +1,15 @@ using System; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Composing; -using Umbraco.Core.Configuration; using Umbraco.Core.Models; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; using Umbraco.Core.Strings; using Umbraco.Tests.TestHelpers; using Umbraco.Tests.TestHelpers.Entities; -using ILogger = Umbraco.Core.Logging.ILogger; using Current = Umbraco.Web.Composing.Current; namespace Umbraco.Tests.Models @@ -38,7 +37,7 @@ namespace Umbraco.Tests.Models var dataEditors = new DataEditorCollection(new IDataEditor[] { - new DataEditor(Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of()) { Alias = "editor", ExplicitValueEditor = MockedValueEditors.CreateDataValueEditor("view") } + new DataEditor(NullLoggerFactory.Instance, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of()) { Alias = "editor", ExplicitValueEditor = MockedValueEditors.CreateDataValueEditor("view") } }); var propertyEditors = new PropertyEditorCollection(dataEditors); diff --git a/src/Umbraco.Tests/Packaging/PackageDataInstallationTests.cs b/src/Umbraco.Tests/Packaging/PackageDataInstallationTests.cs index c5c71e0277..6aaab9a698 100644 --- a/src/Umbraco.Tests/Packaging/PackageDataInstallationTests.cs +++ b/src/Umbraco.Tests/Packaging/PackageDataInstallationTests.cs @@ -2,13 +2,13 @@ using System.Linq; using System.Threading; using System.Xml.Linq; +using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Composing; using Umbraco.Core.Composing.CompositionExtensions; using Umbraco.Core.Configuration.Models; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Packaging; using Umbraco.Core.Packaging; @@ -32,8 +32,8 @@ namespace Umbraco.Tests.Packaging [DataEditor("7e062c13-7c41-4ad9-b389-41d88aeef87c", "Editor1", "editor1")] public class Editor1 : DataEditor { - public Editor1(ILogger logger) - : base(logger, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of()) + public Editor1(ILoggerFactory loggerFactory) + : base(loggerFactory, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of()) { } } @@ -42,8 +42,8 @@ namespace Umbraco.Tests.Packaging [DataEditor("d15e1281-e456-4b24-aa86-1dda3e4299d5", "Editor2", "editor2")] public class Editor2 : DataEditor { - public Editor2(ILogger logger) - : base(logger, Mock.Of(), Mock.Of(), Mock.Of(),Mock.Of()) + public Editor2(ILoggerFactory loggerFactory) + : base(loggerFactory, Mock.Of(), Mock.Of(), Mock.Of(),Mock.Of()) { } } diff --git a/src/Umbraco.Tests/Packaging/PackageInstallationTest.cs b/src/Umbraco.Tests/Packaging/PackageInstallationTest.cs index 5d0f878ebd..4dfc3503aa 100644 --- a/src/Umbraco.Tests/Packaging/PackageInstallationTest.cs +++ b/src/Umbraco.Tests/Packaging/PackageInstallationTest.cs @@ -2,6 +2,8 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -50,7 +52,7 @@ namespace Umbraco.Tests.Packaging Microsoft.Extensions.Options.Options.Create(new GlobalSettings())); private PackageDataInstallation PackageDataInstallation => new PackageDataInstallation( - Logger, ServiceContext.FileService, ServiceContext.MacroService, ServiceContext.LocalizationService, + NullLoggerFactory.Instance.CreateLogger(), NullLoggerFactory.Instance, ServiceContext.FileService, ServiceContext.MacroService, ServiceContext.LocalizationService, ServiceContext.DataTypeService, ServiceContext.EntityService, ServiceContext.ContentTypeService, ServiceContext.ContentService, Factory.GetInstance(), @@ -122,7 +124,7 @@ namespace Umbraco.Tests.Packaging public void Can_Read_Compiled_Package_Warnings() { //copy a file to the same path that the package will install so we can detect file conflicts - + var filePath = Path.Combine(_testBaseFolder.FullName, "bin", "Auros.DocumentTypePicker.dll"); Directory.CreateDirectory(Path.GetDirectoryName(filePath)); File.WriteAllText(filePath, "test"); diff --git a/src/Umbraco.Tests/Persistence/DatabaseContextTests.cs b/src/Umbraco.Tests/Persistence/DatabaseContextTests.cs index d7d58f8d4e..a69eaf849f 100644 --- a/src/Umbraco.Tests/Persistence/DatabaseContextTests.cs +++ b/src/Umbraco.Tests/Persistence/DatabaseContextTests.cs @@ -4,13 +4,14 @@ using System.Data.SqlServerCe; using System.IO; using System.Threading; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using NPoco; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; -using Umbraco.Core.Logging; using Umbraco.Core.Migrations.Install; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Mappers; @@ -25,7 +26,8 @@ namespace Umbraco.Tests.Persistence public class DatabaseContextTests { private IUmbracoDatabaseFactory _databaseFactory; - private ILogger _logger; + private ILogger _logger; + private ILoggerFactory _loggerFactory; private SqlCeSyntaxProvider _sqlCeSyntaxProvider; private ISqlSyntaxProvider[] _sqlSyntaxProviders; private IUmbracoVersion _umbracoVersion; @@ -36,11 +38,12 @@ namespace Umbraco.Tests.Persistence // create the database factory and database context _sqlCeSyntaxProvider = new SqlCeSyntaxProvider(); _sqlSyntaxProviders = new[] { (ISqlSyntaxProvider) _sqlCeSyntaxProvider }; - _logger = Mock.Of(); + _logger = Mock.Of>(); + _loggerFactory = NullLoggerFactory.Instance; _umbracoVersion = TestHelper.GetUmbracoVersion(); var globalSettings = new GlobalSettings(); var connectionStrings = new ConnectionStrings(); - _databaseFactory = new UmbracoDatabaseFactory(_logger, Options.Create(globalSettings), Options.Create(connectionStrings), new Lazy(() => Mock.Of()), TestHelper.DbProviderFactoryCreator); + _databaseFactory = new UmbracoDatabaseFactory(_logger, _loggerFactory, Options.Create(globalSettings), Options.Create(connectionStrings), new Lazy(() => Mock.Of()), TestHelper.DbProviderFactoryCreator); } [TearDown] @@ -73,7 +76,7 @@ namespace Umbraco.Tests.Persistence } // re-create the database factory and database context with proper connection string - _databaseFactory = new UmbracoDatabaseFactory(_logger, connString, Constants.DbProviderNames.SqlCe, new Lazy(() => Mock.Of()), TestHelper.DbProviderFactoryCreator); + _databaseFactory = new UmbracoDatabaseFactory(_logger, NullLoggerFactory.Instance, connString, Constants.DbProviderNames.SqlCe, new Lazy(() => Mock.Of()), TestHelper.DbProviderFactoryCreator); // test get database type (requires an actual database) using (var database = _databaseFactory.CreateDatabase()) @@ -94,7 +97,7 @@ namespace Umbraco.Tests.Persistence using (var database = _databaseFactory.CreateDatabase()) using (var transaction = database.GetTransaction()) { - schemaHelper = new DatabaseSchemaCreator(database, _logger, _umbracoVersion); + schemaHelper = new DatabaseSchemaCreator(database, _loggerFactory.CreateLogger(), _loggerFactory, _umbracoVersion); schemaHelper.InitializeDatabaseSchema(); transaction.Complete(); } diff --git a/src/Umbraco.Tests/Persistence/FaultHandling/ConnectionRetryTest.cs b/src/Umbraco.Tests/Persistence/FaultHandling/ConnectionRetryTest.cs index bab0617ec6..fd3b525039 100644 --- a/src/Umbraco.Tests/Persistence/FaultHandling/ConnectionRetryTest.cs +++ b/src/Umbraco.Tests/Persistence/FaultHandling/ConnectionRetryTest.cs @@ -1,9 +1,10 @@ using System; using System.Data.SqlClient; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using NUnit.Framework; using Umbraco.Core; -using Umbraco.Core.Logging; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.SqlSyntax; @@ -20,7 +21,7 @@ namespace Umbraco.Tests.Persistence.FaultHandling { const string connectionString = @"server=.\SQLEXPRESS;database=EmptyForTest;user id=x;password=umbraco"; const string providerName = Constants.DbProviderNames.SqlServer; - var factory = new UmbracoDatabaseFactory(Mock.Of(), connectionString, providerName, new Lazy(() => Mock.Of()), TestHelper.DbProviderFactoryCreator); + var factory = new UmbracoDatabaseFactory(Mock.Of>(), NullLoggerFactory.Instance, connectionString, providerName, new Lazy(() => Mock.Of()), TestHelper.DbProviderFactoryCreator); using (var database = factory.CreateDatabase()) { @@ -34,7 +35,7 @@ namespace Umbraco.Tests.Persistence.FaultHandling { const string connectionString = @"server=.\SQLEXPRESS;database=EmptyForTest;user id=umbraco;password=umbraco"; const string providerName = Constants.DbProviderNames.SqlServer; - var factory = new UmbracoDatabaseFactory(Mock.Of(), connectionString, providerName, new Lazy(() => Mock.Of()), TestHelper.DbProviderFactoryCreator); + var factory = new UmbracoDatabaseFactory(Mock.Of>(), NullLoggerFactory.Instance, connectionString, providerName, new Lazy(() => Mock.Of()), TestHelper.DbProviderFactoryCreator); using (var database = factory.CreateDatabase()) { diff --git a/src/Umbraco.Tests/Persistence/NPocoTests/NPocoBulkInsertTests.cs b/src/Umbraco.Tests/Persistence/NPocoTests/NPocoBulkInsertTests.cs index 6c4a23fa00..5a0e4b6ed2 100644 --- a/src/Umbraco.Tests/Persistence/NPocoTests/NPocoBulkInsertTests.cs +++ b/src/Umbraco.Tests/Persistence/NPocoTests/NPocoBulkInsertTests.cs @@ -3,8 +3,9 @@ using System.Collections.Generic; using System.Data; using System.Linq; using System.Text.RegularExpressions; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using NUnit.Framework; -using Umbraco.Core.Logging; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Dtos; using Umbraco.Tests.TestHelpers; @@ -18,7 +19,7 @@ namespace Umbraco.Tests.Persistence.NPocoTests [UmbracoTest(Database = UmbracoTestOptions.Database.NewSchemaPerTest)] public class NPocoBulkInsertTests : TestWithDatabaseBase { - + [NUnit.Framework.Ignore("Ignored because you need to configure your own SQL Server to test thsi with")] [Test] @@ -27,7 +28,7 @@ namespace Umbraco.Tests.Persistence.NPocoTests // create the db // prob not what we want, this is not a real database, but hey, the test is ignored anyways // we'll fix this when we have proper testing infrastructure - var dbSqlServer = TestObjects.GetUmbracoSqlServerDatabase(new DebugDiagnosticsLogger(new MessageTemplates())); + var dbSqlServer = TestObjects.GetUmbracoSqlServerDatabase(new NullLogger()); //drop the table dbSqlServer.Execute("DROP TABLE [umbracoServer]"); diff --git a/src/Umbraco.Tests/Persistence/Querying/ExpressionTests.cs b/src/Umbraco.Tests/Persistence/Querying/ExpressionTests.cs index 656e34846a..3da803505f 100644 --- a/src/Umbraco.Tests/Persistence/Querying/ExpressionTests.cs +++ b/src/Umbraco.Tests/Persistence/Querying/ExpressionTests.cs @@ -12,6 +12,7 @@ using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Tests.TestHelpers; using System.Linq; +using Microsoft.Extensions.Logging.Abstractions; using Umbraco.Core.Persistence.Dtos; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; @@ -26,7 +27,7 @@ namespace Umbraco.Tests.Persistence.Querying [Test] public void Equals_Claus_With_Two_Entity_Values() { - var dataType = new DataType(new VoidEditor(Mock.Of(), Mock.Of(), Mock.Of(),Mock.Of(), Mock.Of())) + var dataType = new DataType(new VoidEditor(NullLoggerFactory.Instance, Mock.Of(), Mock.Of(),Mock.Of(), Mock.Of())) { Id = 12345 }; diff --git a/src/Umbraco.Tests/Persistence/Repositories/ContentTypeRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/ContentTypeRepositoryTest.cs index a5074bf758..860c37bc67 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/ContentTypeRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/ContentTypeRepositoryTest.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Cache; @@ -37,42 +38,42 @@ namespace Umbraco.Tests.Persistence.Repositories private DocumentRepository CreateRepository(IScopeAccessor scopeAccessor, out ContentTypeRepository contentTypeRepository) { - var langRepository = new LanguageRepository(scopeAccessor, AppCaches.Disabled, Logger, _globalSettings); - var templateRepository = new TemplateRepository(scopeAccessor, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock(), IOHelper, ShortStringHelper); - var tagRepository = new TagRepository(scopeAccessor, AppCaches.Disabled, Logger); + var langRepository = new LanguageRepository(scopeAccessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), _globalSettings); + var templateRepository = new TemplateRepository(scopeAccessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), TestObjects.GetFileSystemsMock(), IOHelper, ShortStringHelper); + var tagRepository = new TagRepository(scopeAccessor, AppCaches.Disabled, LoggerFactory.CreateLogger()); var commonRepository = new ContentTypeCommonRepository(scopeAccessor, templateRepository, AppCaches.Disabled, ShortStringHelper); - contentTypeRepository = new ContentTypeRepository(scopeAccessor, AppCaches.Disabled, Logger, commonRepository, langRepository, ShortStringHelper); - var languageRepository = new LanguageRepository(scopeAccessor, AppCaches.Disabled, Logger, _globalSettings); - var relationTypeRepository = new RelationTypeRepository(scopeAccessor, AppCaches.Disabled, Logger); + contentTypeRepository = new ContentTypeRepository(scopeAccessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), commonRepository, langRepository, ShortStringHelper); + var languageRepository = new LanguageRepository(scopeAccessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), _globalSettings); + var relationTypeRepository = new RelationTypeRepository(scopeAccessor, AppCaches.Disabled, LoggerFactory.CreateLogger()); var entityRepository = new EntityRepository(scopeAccessor); - var relationRepository = new RelationRepository(scopeAccessor, Logger, relationTypeRepository, entityRepository); + var relationRepository = new RelationRepository(scopeAccessor, LoggerFactory.CreateLogger(), relationTypeRepository, entityRepository); var propertyEditors = new Lazy(() => new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty()))); var dataValueReferences = new DataValueReferenceFactoryCollection(Enumerable.Empty()); - var repository = new DocumentRepository(scopeAccessor, AppCaches.Disabled, Logger, contentTypeRepository, templateRepository, tagRepository, languageRepository, relationRepository, relationTypeRepository, propertyEditors, dataValueReferences, DataTypeService); + var repository = new DocumentRepository(scopeAccessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), LoggerFactory, contentTypeRepository, templateRepository, tagRepository, languageRepository, relationRepository, relationTypeRepository, propertyEditors, dataValueReferences, DataTypeService); return repository; } private ContentTypeRepository CreateRepository(IScopeAccessor scopeAccessor) { - var langRepository = new LanguageRepository(scopeAccessor, AppCaches.Disabled, Logger, _globalSettings); - var templateRepository = new TemplateRepository(scopeAccessor, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock(), IOHelper, ShortStringHelper); + var langRepository = new LanguageRepository(scopeAccessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), _globalSettings); + var templateRepository = new TemplateRepository(scopeAccessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), TestObjects.GetFileSystemsMock(), IOHelper, ShortStringHelper); var commonRepository = new ContentTypeCommonRepository(scopeAccessor, templateRepository, AppCaches.Disabled, ShortStringHelper); - var contentTypeRepository = new ContentTypeRepository(scopeAccessor, AppCaches.Disabled, Logger, commonRepository, langRepository, ShortStringHelper); + var contentTypeRepository = new ContentTypeRepository(scopeAccessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), commonRepository, langRepository, ShortStringHelper); return contentTypeRepository; } private MediaTypeRepository CreateMediaTypeRepository(IScopeAccessor scopeAccessor) { - var templateRepository = new TemplateRepository(scopeAccessor, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock(), IOHelper, ShortStringHelper); + var templateRepository = new TemplateRepository(scopeAccessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), TestObjects.GetFileSystemsMock(), IOHelper, ShortStringHelper); var commonRepository = new ContentTypeCommonRepository(scopeAccessor, templateRepository, AppCaches.Disabled, ShortStringHelper); - var langRepository = new LanguageRepository(scopeAccessor, AppCaches.Disabled, Logger, _globalSettings); - var contentTypeRepository = new MediaTypeRepository(scopeAccessor, AppCaches.Disabled, Logger, commonRepository, langRepository, ShortStringHelper); + var langRepository = new LanguageRepository(scopeAccessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), _globalSettings); + var contentTypeRepository = new MediaTypeRepository(scopeAccessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), commonRepository, langRepository, ShortStringHelper); return contentTypeRepository; } private EntityContainerRepository CreateContainerRepository(IScopeAccessor scopeAccessor, Guid containerEntityType) { - return new EntityContainerRepository(scopeAccessor, AppCaches.Disabled, Logger, containerEntityType); + return new EntityContainerRepository(scopeAccessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), containerEntityType); } // TODO: Add test to verify SetDefaultTemplates updates both AllowedTemplates and DefaultTemplate(id). @@ -81,10 +82,10 @@ namespace Umbraco.Tests.Persistence.Repositories public void Maps_Templates_Correctly() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { - var templateRepo = new TemplateRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock(), IOHelper, ShortStringHelper); + var templateRepo = new TemplateRepository((IScopeAccessor) provider, AppCaches.Disabled, LoggerFactory.CreateLogger(), TestObjects.GetFileSystemsMock(), IOHelper, ShortStringHelper); var repository = CreateRepository((IScopeAccessor) provider); var templates = new[] { @@ -116,7 +117,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Move() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var containerRepository = CreateContainerRepository((IScopeAccessor) provider, Constants.ObjectTypes.DocumentTypeContainer); @@ -162,7 +163,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Create_Container() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var containerRepository = CreateContainerRepository((IScopeAccessor) provider, Constants.ObjectTypes.DocumentTypeContainer); @@ -181,7 +182,7 @@ namespace Umbraco.Tests.Persistence.Repositories { EntityContainer container1, container2, container3; - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var containerRepository = CreateContainerRepository((IScopeAccessor) provider, Constants.ObjectTypes.DocumentTypeContainer); @@ -211,7 +212,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Delete_Container() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var containerRepository = CreateContainerRepository((IScopeAccessor) provider, Constants.ObjectTypes.DocumentTypeContainer); @@ -231,7 +232,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Create_Container_Containing_Media_Types() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var containerRepository = CreateContainerRepository((IScopeAccessor) provider, Constants.ObjectTypes.MediaTypeContainer); @@ -252,7 +253,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Delete_Container_Containing_Media_Types() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var containerRepository = CreateContainerRepository((IScopeAccessor) provider, Constants.ObjectTypes.MediaTypeContainer); @@ -283,7 +284,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Add_On_ContentTypeRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor) provider); @@ -318,7 +319,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Add_On_ContentTypeRepository_After_Model_Mapping() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor) provider); @@ -370,7 +371,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Update_On_ContentTypeRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor) provider); @@ -446,7 +447,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Update_On_ContentTypeRepository_After_Model_Mapping() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor) provider); @@ -509,7 +510,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Delete_On_ContentTypeRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor) provider); @@ -533,7 +534,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Delete_With_Heirarchy_On_ContentTypeRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor) provider); @@ -565,7 +566,7 @@ namespace Umbraco.Tests.Persistence.Repositories IContentType contentType; // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor) provider); @@ -600,7 +601,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Get_On_ContentTypeRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor) provider); @@ -618,7 +619,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Get_By_Guid_On_ContentTypeRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor) provider); @@ -640,7 +641,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Get_By_Missing_Guid_On_ContentTypeRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor) provider); @@ -656,7 +657,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_GetAll_On_ContentTypeRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor) provider); @@ -678,7 +679,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_GetAll_By_Guid_On_ContentTypeRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor) provider); @@ -701,7 +702,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Exists_On_ContentTypeRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor) provider); @@ -718,7 +719,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Update_ContentType_With_PropertyType_Removed() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor) provider); @@ -742,7 +743,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Verify_PropertyTypes_On_SimpleTextpage() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor) provider); @@ -760,7 +761,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Verify_PropertyTypes_On_Textpage() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor) provider); @@ -778,7 +779,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Verify_PropertyType_With_No_Group() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor) provider); @@ -819,7 +820,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Verify_AllowedChildContentTypes_On_ContentType() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor) provider); @@ -853,7 +854,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Verify_Removal_Of_Used_PropertyType_From_ContentType() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { ContentTypeRepository repository; @@ -880,7 +881,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Verify_Addition_Of_PropertyType_After_ContentType_Is_Used() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { ContentTypeRepository repository; @@ -908,7 +909,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Verify_Usage_Of_New_PropertyType_On_Content() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { ContentTypeRepository repository; @@ -942,7 +943,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Verify_That_A_Combination_Of_Adding_And_Deleting_PropertyTypes_Doesnt_Cause_Issues_For_Content_And_ContentType() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { ContentTypeRepository repository; @@ -982,7 +983,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Verify_Content_Type_Has_Content_Nodes() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { ContentTypeRepository repository; diff --git a/src/Umbraco.Tests/Persistence/Repositories/DataTypeDefinitionRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/DataTypeDefinitionRepositoryTest.cs index e1c79b9d26..ec7416d4cd 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/DataTypeDefinitionRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/DataTypeDefinitionRepositoryTest.cs @@ -1,4 +1,5 @@ using System.Linq; +using Microsoft.Extensions.Logging; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Cache; @@ -25,20 +26,20 @@ namespace Umbraco.Tests.Persistence.Repositories private EntityContainerRepository CreateContainerRepository(IScopeAccessor scopeAccessor) { - return new EntityContainerRepository(scopeAccessor, AppCaches.Disabled, Logger, Constants.ObjectTypes.DataTypeContainer); + return new EntityContainerRepository(scopeAccessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), Constants.ObjectTypes.DataTypeContainer); } [Test] public void Can_Find_Usages() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (provider.CreateScope()) { var dtRepo = CreateRepository(); - IDataType dataType1 = new DataType(new RadioButtonsPropertyEditor(Logger, IOHelper, DataTypeService, LocalizationService, LocalizedTextService, ShortStringHelper)) { Name = "dt1" }; + IDataType dataType1 = new DataType(new RadioButtonsPropertyEditor(LoggerFactory, IOHelper, DataTypeService, LocalizationService, LocalizedTextService, ShortStringHelper)) { Name = "dt1" }; dtRepo.Save(dataType1); - IDataType dataType2 = new DataType(new RadioButtonsPropertyEditor(Logger, IOHelper, DataTypeService, LocalizationService, LocalizedTextService, ShortStringHelper)) { Name = "dt2" }; + IDataType dataType2 = new DataType(new RadioButtonsPropertyEditor(LoggerFactory, IOHelper, DataTypeService, LocalizationService, LocalizedTextService, ShortStringHelper)) { Name = "dt2" }; dtRepo.Save(dataType2); var ctRepo = Factory.GetInstance(); @@ -93,7 +94,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Move() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); var accessor = (IScopeAccessor) provider; using (provider.CreateScope()) @@ -106,14 +107,14 @@ namespace Umbraco.Tests.Persistence.Repositories var container2 = new EntityContainer(Constants.ObjectTypes.DataType) { Name = "blah2", ParentId = container1.Id }; containerRepository.Save(container2); - var dataType = (IDataType) new DataType(new RadioButtonsPropertyEditor(Logger, IOHelper, DataTypeService, LocalizationService, LocalizedTextService, ShortStringHelper), container2.Id) + var dataType = (IDataType) new DataType(new RadioButtonsPropertyEditor(LoggerFactory, IOHelper, DataTypeService, LocalizationService, LocalizedTextService, ShortStringHelper), container2.Id) { Name = "dt1" }; repository.Save(dataType); //create a - var dataType2 = (IDataType)new DataType(new RadioButtonsPropertyEditor(Logger, IOHelper, DataTypeService, LocalizationService, LocalizedTextService, ShortStringHelper), dataType.Id) + var dataType2 = (IDataType)new DataType(new RadioButtonsPropertyEditor(LoggerFactory, IOHelper, DataTypeService, LocalizationService, LocalizedTextService, ShortStringHelper), dataType.Id) { Name = "dt2" }; @@ -136,7 +137,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Create_Container() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); var accessor = (IScopeAccessor) provider; using (provider.CreateScope()) @@ -155,7 +156,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Delete_Container() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); var accessor = (IScopeAccessor) provider; using (provider.CreateScope()) @@ -175,7 +176,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Create_Container_Containing_Data_Types() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); var accessor = (IScopeAccessor) provider; using (provider.CreateScope()) @@ -185,7 +186,7 @@ namespace Umbraco.Tests.Persistence.Repositories var container = new EntityContainer(Constants.ObjectTypes.DataType) { Name = "blah" }; containerRepository.Save(container); - var dataTypeDefinition = new DataType(new RadioButtonsPropertyEditor(Logger, IOHelper, DataTypeService, LocalizationService, LocalizedTextService, ShortStringHelper), container.Id) { Name = "test" }; + var dataTypeDefinition = new DataType(new RadioButtonsPropertyEditor(LoggerFactory, IOHelper, DataTypeService, LocalizationService, LocalizedTextService, ShortStringHelper), container.Id) { Name = "test" }; repository.Save(dataTypeDefinition); Assert.AreEqual(container.Id, dataTypeDefinition.ParentId); @@ -195,7 +196,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Delete_Container_Containing_Data_Types() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); var accessor = (IScopeAccessor) provider; using (provider.CreateScope()) @@ -205,7 +206,7 @@ namespace Umbraco.Tests.Persistence.Repositories var container = new EntityContainer(Constants.ObjectTypes.DataType) { Name = "blah" }; containerRepository.Save(container); - IDataType dataType = new DataType(new RadioButtonsPropertyEditor(Logger, IOHelper, DataTypeService, LocalizationService, LocalizedTextService, ShortStringHelper), container.Id) { Name = "test" }; + IDataType dataType = new DataType(new RadioButtonsPropertyEditor(LoggerFactory, IOHelper, DataTypeService, LocalizationService, LocalizedTextService, ShortStringHelper), container.Id) { Name = "test" }; repository.Save(dataType); // Act @@ -223,12 +224,12 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Create() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (provider.CreateScope()) { var repository = CreateRepository(); - IDataType dataType = new DataType(new RadioButtonsPropertyEditor(Logger, IOHelper, DataTypeService, LocalizationService, LocalizedTextService, ShortStringHelper)) {Name = "test"}; + IDataType dataType = new DataType(new RadioButtonsPropertyEditor(LoggerFactory, IOHelper, DataTypeService, LocalizationService, LocalizedTextService, ShortStringHelper)) {Name = "test"}; repository.Save(dataType); @@ -248,7 +249,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Perform_Get_On_DataTypeDefinitionRepository() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (provider.CreateScope()) { @@ -266,7 +267,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Perform_GetAll_On_DataTypeDefinitionRepository() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (provider.CreateScope()) { @@ -286,7 +287,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Perform_GetAll_With_Params_On_DataTypeDefinitionRepository() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (provider.CreateScope()) { @@ -306,7 +307,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Perform_GetByQuery_On_DataTypeDefinitionRepository() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { @@ -326,7 +327,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Perform_Count_On_DataTypeDefinitionRepository() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { @@ -344,12 +345,12 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Perform_Add_On_DataTypeDefinitionRepository() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (provider.CreateScope()) { var repository = CreateRepository(); - var dataTypeDefinition = new DataType(new LabelPropertyEditor(Logger, IOHelper, DataTypeService, LocalizedTextService, LocalizationService, ShortStringHelper)) + var dataTypeDefinition = new DataType(new LabelPropertyEditor(LoggerFactory, IOHelper, DataTypeService, LocalizedTextService, LocalizationService, ShortStringHelper)) { DatabaseType = ValueStorageType.Integer, Name = "AgeDataType", @@ -382,12 +383,12 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Perform_Update_On_DataTypeDefinitionRepository() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (provider.CreateScope()) { var repository = CreateRepository(); - var dataTypeDefinition = new DataType(new IntegerPropertyEditor(Logger, DataTypeService, LocalizationService, ShortStringHelper, LocalizedTextService)) + var dataTypeDefinition = new DataType(new IntegerPropertyEditor(LoggerFactory, DataTypeService, LocalizationService, ShortStringHelper, LocalizedTextService)) { DatabaseType = ValueStorageType.Integer, Name = "AgeDataType", @@ -398,7 +399,7 @@ namespace Umbraco.Tests.Persistence.Repositories // Act var definition = repository.Get(dataTypeDefinition.Id); definition.Name = "AgeDataType Updated"; - definition.Editor = new LabelPropertyEditor(Logger, IOHelper, DataTypeService, LocalizedTextService, LocalizationService, ShortStringHelper); //change + definition.Editor = new LabelPropertyEditor(LoggerFactory, IOHelper, DataTypeService, LocalizedTextService, LocalizationService, ShortStringHelper); //change repository.Save(definition); var definitionUpdated = repository.Get(dataTypeDefinition.Id); @@ -413,12 +414,12 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Perform_Delete_On_DataTypeDefinitionRepository() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (provider.CreateScope()) { var repository = CreateRepository(); - var dataTypeDefinition = new DataType(new LabelPropertyEditor(Logger, IOHelper, DataTypeService,LocalizedTextService, LocalizationService, ShortStringHelper)) + var dataTypeDefinition = new DataType(new LabelPropertyEditor(LoggerFactory, IOHelper, DataTypeService,LocalizedTextService, LocalizationService, ShortStringHelper)) { DatabaseType = ValueStorageType.Integer, Name = "AgeDataType", @@ -443,7 +444,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Perform_Exists_On_DataTypeDefinitionRepository() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (provider.CreateScope()) { diff --git a/src/Umbraco.Tests/Persistence/Repositories/DocumentRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/DocumentRepositoryTest.cs index 45539094ec..51e6633648 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/DocumentRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/DocumentRepositoryTest.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -52,7 +53,7 @@ namespace Umbraco.Tests.Persistence.Repositories TemplateRepository tr; var ctRepository = CreateRepository(scopeAccessor, out contentTypeRepository, out tr); var editors = new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty())); - dtdRepository = new DataTypeRepository(scopeAccessor, appCaches, new Lazy(() => editors), Logger); + dtdRepository = new DataTypeRepository(scopeAccessor, appCaches, new Lazy(() => editors), LoggerFactory.CreateLogger(), LoggerFactory); return ctRepository; } @@ -68,17 +69,17 @@ namespace Umbraco.Tests.Persistence.Repositories appCaches = appCaches ?? AppCaches; - templateRepository = new TemplateRepository(scopeAccessor, appCaches, Logger, TestObjects.GetFileSystemsMock(), IOHelper, ShortStringHelper); - var tagRepository = new TagRepository(scopeAccessor, appCaches, Logger); + templateRepository = new TemplateRepository(scopeAccessor, appCaches, LoggerFactory.CreateLogger(), TestObjects.GetFileSystemsMock(), IOHelper, ShortStringHelper); + var tagRepository = new TagRepository(scopeAccessor, appCaches, LoggerFactory.CreateLogger()); var commonRepository = new ContentTypeCommonRepository(scopeAccessor, templateRepository, appCaches, ShortStringHelper); - var languageRepository = new LanguageRepository(scopeAccessor, appCaches, Logger, globalSettings); - contentTypeRepository = new ContentTypeRepository(scopeAccessor, appCaches, Logger, commonRepository, languageRepository, ShortStringHelper); - var relationTypeRepository = new RelationTypeRepository(scopeAccessor, AppCaches.Disabled, Logger); + var languageRepository = new LanguageRepository(scopeAccessor, appCaches, LoggerFactory.CreateLogger(), globalSettings); + contentTypeRepository = new ContentTypeRepository(scopeAccessor, appCaches, LoggerFactory.CreateLogger(), commonRepository, languageRepository, ShortStringHelper); + var relationTypeRepository = new RelationTypeRepository(scopeAccessor, AppCaches.Disabled, LoggerFactory.CreateLogger()); var entityRepository = new EntityRepository(scopeAccessor); - var relationRepository = new RelationRepository(scopeAccessor, Logger, relationTypeRepository, entityRepository); + var relationRepository = new RelationRepository(scopeAccessor, LoggerFactory.CreateLogger(), relationTypeRepository, entityRepository); var propertyEditors = new Lazy(() => new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty()))); var dataValueReferences = new DataValueReferenceFactoryCollection(Enumerable.Empty()); - var repository = new DocumentRepository(scopeAccessor, appCaches, Logger, contentTypeRepository, templateRepository, tagRepository, languageRepository, relationRepository, + var repository = new DocumentRepository(scopeAccessor, appCaches, LoggerFactory.CreateLogger(), LoggerFactory, contentTypeRepository, templateRepository, tagRepository, languageRepository, relationRepository, relationTypeRepository, propertyEditors, dataValueReferences, DataTypeService); return repository; } @@ -91,7 +92,7 @@ namespace Umbraco.Tests.Persistence.Repositories new DictionaryAppCache(), new IsolatedCaches(t => new ObjectCacheAppCache())); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor)provider, out var contentTypeRepository, appCaches: realCache); @@ -132,7 +133,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void CreateVersions() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor)provider, out var contentTypeRepository, out DataTypeRepository _); @@ -306,7 +307,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void PropertyDataAssignedCorrectly() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor)provider, out var contentTypeRepository, out DataTypeRepository _); @@ -358,12 +359,12 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void PropertyValuesWithSpecialTypes() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor)provider, out var contentTypeRepository, out DataTypeRepository dataTypeDefinitionRepository); - var editor = new DecimalPropertyEditor(Logger, DataTypeService, LocalizationService, LocalizedTextService, ShortStringHelper); + var editor = new DecimalPropertyEditor(LoggerFactory, DataTypeService, LocalizationService, LocalizedTextService, ShortStringHelper); var dtd = new DataType(editor) { Name = "test", DatabaseType = ValueStorageType.Decimal }; dataTypeDefinitionRepository.Save(dtd); @@ -405,7 +406,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void SaveContent() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor)provider, out var contentTypeRepository); @@ -426,7 +427,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void SaveContentWithDefaultTemplate() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor)provider, out var contentTypeRepository, out TemplateRepository templateRepository); @@ -461,7 +462,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void SaveContentWithAtSignInName() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor)provider, out var contentTypeRepository); @@ -494,7 +495,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void SaveContentMultiple() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor)provider, out var contentTypeRepository); @@ -523,7 +524,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void GetContentIsNotDirty() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor)provider, out _); @@ -538,7 +539,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void UpdateContent() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor)provider, out _); @@ -567,7 +568,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void UpdateContentWithNullTemplate() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor)provider, out _); @@ -586,7 +587,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void DeleteContent() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor)provider, out var contentTypeRepository); @@ -610,7 +611,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void GetContent() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor)provider, out _); @@ -631,7 +632,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void QueryContent() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor)provider, out _); @@ -648,7 +649,7 @@ namespace Umbraco.Tests.Persistence.Repositories { IContent[] result; - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor)provider, out _); @@ -761,7 +762,7 @@ namespace Umbraco.Tests.Persistence.Repositories Assert.IsTrue(child1.Name.StartsWith("VAR")); Assert.IsTrue(child1.GetCultureName("en-US").StartsWith("VAR")); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor)provider, out _); @@ -808,7 +809,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void GetPagedResultsByQuery_CustomPropertySort() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor)provider, out _); @@ -840,7 +841,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void GetPagedResultsByQuery_FirstPage() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor)provider, out _); @@ -869,7 +870,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void GetPagedResultsByQuery_SecondPage() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor)provider, out _); @@ -886,7 +887,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void GetPagedResultsByQuery_SinglePage() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor)provider, out _); @@ -903,7 +904,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void GetPagedResultsByQuery_DescendingOrder() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor)provider, out _); @@ -920,7 +921,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void GetPagedResultsByQuery_FilterMatchingSome() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor)provider, out _); @@ -939,7 +940,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void GetPagedResultsByQuery_FilterMatchingAll() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor)provider, out _); @@ -958,7 +959,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void GetAllContentByIds() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor)provider, out _); @@ -975,7 +976,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void GetAllContent() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor)provider, out _); @@ -1001,7 +1002,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void ExistContent() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor)provider, out _); @@ -1015,7 +1016,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void CountContent() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor)provider, out _); @@ -1030,7 +1031,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void QueryContentByUniqueId() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository((IScopeAccessor)provider, out _); diff --git a/src/Umbraco.Tests/Persistence/Repositories/DomainRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/DomainRepositoryTest.cs index 2e531626cf..e09587fa8c 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/DomainRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/DomainRepositoryTest.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Data; using System.Linq; +using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; using Umbraco.Core.Configuration.Models; @@ -26,24 +27,24 @@ namespace Umbraco.Tests.Persistence.Repositories var globalSettings = Microsoft.Extensions.Options.Options.Create(new GlobalSettings()); var accessor = (IScopeAccessor) provider; - var templateRepository = new TemplateRepository(accessor, Core.Cache.AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock(), IOHelper, ShortStringHelper); - var tagRepository = new TagRepository(accessor, Core.Cache.AppCaches.Disabled, Logger); + var templateRepository = new TemplateRepository(accessor, Core.Cache.AppCaches.Disabled, LoggerFactory.CreateLogger(), TestObjects.GetFileSystemsMock(), IOHelper, ShortStringHelper); + var tagRepository = new TagRepository(accessor, Core.Cache.AppCaches.Disabled, LoggerFactory.CreateLogger()); var commonRepository = new ContentTypeCommonRepository(accessor, templateRepository, AppCaches, ShortStringHelper); - languageRepository = new LanguageRepository(accessor, Core.Cache.AppCaches.Disabled, Logger, globalSettings); - contentTypeRepository = new ContentTypeRepository(accessor, Core.Cache.AppCaches.Disabled, Logger, commonRepository, languageRepository, ShortStringHelper); - var relationTypeRepository = new RelationTypeRepository(accessor, Core.Cache.AppCaches.Disabled, Logger); + languageRepository = new LanguageRepository(accessor, Core.Cache.AppCaches.Disabled, LoggerFactory.CreateLogger(), globalSettings); + contentTypeRepository = new ContentTypeRepository(accessor, Core.Cache.AppCaches.Disabled, LoggerFactory.CreateLogger(), commonRepository, languageRepository, ShortStringHelper); + var relationTypeRepository = new RelationTypeRepository(accessor, Core.Cache.AppCaches.Disabled, LoggerFactory.CreateLogger()); var entityRepository = new EntityRepository(accessor); - var relationRepository = new RelationRepository(accessor, Logger, relationTypeRepository, entityRepository); + var relationRepository = new RelationRepository(accessor, LoggerFactory.CreateLogger(), relationTypeRepository, entityRepository); var propertyEditors = new Lazy(() => new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty()))); var dataValueReferences = new DataValueReferenceFactoryCollection(Enumerable.Empty()); - documentRepository = new DocumentRepository(accessor, Core.Cache.AppCaches.Disabled, Logger, contentTypeRepository, templateRepository, tagRepository, languageRepository, relationRepository, relationTypeRepository, propertyEditors, dataValueReferences, DataTypeService); - var domainRepository = new DomainRepository(accessor, Core.Cache.AppCaches.Disabled, Logger); + documentRepository = new DocumentRepository(accessor, Core.Cache.AppCaches.Disabled, LoggerFactory.CreateLogger(), LoggerFactory, contentTypeRepository, templateRepository, tagRepository, languageRepository, relationRepository, relationTypeRepository, propertyEditors, dataValueReferences, DataTypeService); + var domainRepository = new DomainRepository(accessor, Core.Cache.AppCaches.Disabled, LoggerFactory.CreateLogger()); return domainRepository; } private int CreateTestData(string isoName, out ContentType ct) { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { DocumentRepository documentRepo; @@ -71,7 +72,7 @@ namespace Umbraco.Tests.Persistence.Repositories ContentType ct; var contentId = CreateTestData("en-AU", out ct); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { DocumentRepository documentRepo; @@ -105,7 +106,7 @@ namespace Umbraco.Tests.Persistence.Repositories ContentType ct; var contentId = CreateTestData("en-AU", out ct); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { DocumentRepository documentRepo; @@ -137,7 +138,7 @@ namespace Umbraco.Tests.Persistence.Repositories ContentType ct; var contentId = CreateTestData("en-AU", out ct); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { DocumentRepository documentRepo; @@ -164,7 +165,7 @@ namespace Umbraco.Tests.Persistence.Repositories ContentType ct; var contentId = CreateTestData("en-AU", out ct); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { DocumentRepository documentRepo; @@ -195,7 +196,7 @@ namespace Umbraco.Tests.Persistence.Repositories ContentType ct; var contentId1 = CreateTestData("en-AU", out ct); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { DocumentRepository documentRepo; @@ -243,7 +244,7 @@ namespace Umbraco.Tests.Persistence.Repositories ContentType ct; var contentId = CreateTestData("en-AU", out ct); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { DocumentRepository documentRepo; @@ -273,7 +274,7 @@ namespace Umbraco.Tests.Persistence.Repositories ContentType ct; var contentId = CreateTestData("en-AU", out ct); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { DocumentRepository documentRepo; @@ -303,7 +304,7 @@ namespace Umbraco.Tests.Persistence.Repositories ContentType ct; var contentId = CreateTestData("en-AU", out ct); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { DocumentRepository documentRepo; @@ -333,7 +334,7 @@ namespace Umbraco.Tests.Persistence.Repositories ContentType ct; var contentId = CreateTestData("en-AU", out ct); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { DocumentRepository documentRepo; @@ -365,7 +366,7 @@ namespace Umbraco.Tests.Persistence.Repositories ContentType ct; var contentId = CreateTestData("en-AU", out ct); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { DocumentRepository documentRepo; @@ -399,7 +400,7 @@ namespace Umbraco.Tests.Persistence.Repositories ContentType ct; var contentId = CreateTestData("en-AU", out ct); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { DocumentRepository documentRepo; @@ -448,7 +449,7 @@ namespace Umbraco.Tests.Persistence.Repositories ContentType ct; var contentId = CreateTestData("en-AU", out ct); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { DocumentRepository documentRepo; diff --git a/src/Umbraco.Tests/Persistence/Repositories/MediaRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/MediaRepositoryTest.cs index 6318627c66..d5efa77606 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/MediaRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/MediaRepositoryTest.cs @@ -1,5 +1,6 @@ using System; using System.Linq; +using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -36,18 +37,18 @@ namespace Umbraco.Tests.Persistence.Repositories appCaches = appCaches ?? AppCaches; var scopeAccessor = (IScopeAccessor) provider; var globalSettings = new GlobalSettings(); - var templateRepository = new TemplateRepository(scopeAccessor, appCaches, Logger, TestObjects.GetFileSystemsMock(), IOHelper, ShortStringHelper); + var templateRepository = new TemplateRepository(scopeAccessor, appCaches, LoggerFactory.CreateLogger(), TestObjects.GetFileSystemsMock(), IOHelper, ShortStringHelper); var commonRepository = new ContentTypeCommonRepository(scopeAccessor, templateRepository, appCaches, ShortStringHelper); - var languageRepository = new LanguageRepository(scopeAccessor, appCaches, Logger, Microsoft.Extensions.Options.Options.Create(globalSettings)); - mediaTypeRepository = new MediaTypeRepository(scopeAccessor, appCaches, Logger, commonRepository, languageRepository, ShortStringHelper); - var tagRepository = new TagRepository(scopeAccessor, appCaches, Logger); - var relationTypeRepository = new RelationTypeRepository(scopeAccessor, AppCaches.Disabled, Logger); + var languageRepository = new LanguageRepository(scopeAccessor, appCaches, LoggerFactory.CreateLogger(), Microsoft.Extensions.Options.Options.Create(globalSettings)); + mediaTypeRepository = new MediaTypeRepository(scopeAccessor, appCaches, LoggerFactory.CreateLogger(), commonRepository, languageRepository, ShortStringHelper); + var tagRepository = new TagRepository(scopeAccessor, appCaches, LoggerFactory.CreateLogger()); + var relationTypeRepository = new RelationTypeRepository(scopeAccessor, AppCaches.Disabled, LoggerFactory.CreateLogger()); var entityRepository = new EntityRepository(scopeAccessor); - var relationRepository = new RelationRepository(scopeAccessor, Logger, relationTypeRepository, entityRepository); + var relationRepository = new RelationRepository(scopeAccessor, LoggerFactory.CreateLogger(), relationTypeRepository, entityRepository); var propertyEditors = new Lazy(() => new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty()))); var mediaUrlGenerators = new MediaUrlGeneratorCollection(Enumerable.Empty()); var dataValueReferences = new DataValueReferenceFactoryCollection(Enumerable.Empty()); - var repository = new MediaRepository(scopeAccessor, appCaches, Logger, mediaTypeRepository, tagRepository, Mock.Of(), relationRepository, relationTypeRepository, propertyEditors, mediaUrlGenerators, dataValueReferences, DataTypeService); + var repository = new MediaRepository(scopeAccessor, appCaches, LoggerFactory.CreateLogger(), LoggerFactory, mediaTypeRepository, tagRepository, Mock.Of(), relationRepository, relationTypeRepository, propertyEditors, mediaUrlGenerators, dataValueReferences, DataTypeService); return repository; } @@ -61,7 +62,7 @@ namespace Umbraco.Tests.Persistence.Repositories new DictionaryAppCache(), new IsolatedCaches(t => new ObjectCacheAppCache())); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository(provider, out mediaTypeRepository, appCaches: realCache); @@ -103,7 +104,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void SaveMedia() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { MediaTypeRepository mediaTypeRepository; @@ -130,7 +131,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void SaveMediaMultiple() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { MediaTypeRepository mediaTypeRepository; @@ -159,7 +160,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void GetMediaIsNotDirty() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { MediaTypeRepository mediaTypeRepository; @@ -178,7 +179,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void UpdateMedia() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { MediaTypeRepository mediaTypeRepository; @@ -201,7 +202,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void DeleteMedia() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { MediaTypeRepository mediaTypeRepository; @@ -224,7 +225,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void GetMedia() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { MediaTypeRepository mediaTypeRepository; @@ -251,7 +252,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void QueryMedia() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { MediaTypeRepository mediaTypeRepository; @@ -271,7 +272,7 @@ namespace Umbraco.Tests.Persistence.Repositories { // Arrange var folderMediaType = ServiceContext.MediaTypeService.Get(1031); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository(provider, out MediaTypeRepository mediaTypeRepository); @@ -302,7 +303,7 @@ namespace Umbraco.Tests.Persistence.Repositories // Arrange var folderMediaType = ServiceContext.MediaTypeService.Get(1031); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository(provider, out MediaTypeRepository mediaTypeRepository); @@ -328,7 +329,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void GetPagedResultsByQuery_FirstPage() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository(provider, out MediaTypeRepository mediaTypeRepository); @@ -349,7 +350,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void GetPagedResultsByQuery_SecondPage() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { MediaTypeRepository mediaTypeRepository; @@ -371,7 +372,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void GetPagedResultsByQuery_SinglePage() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { MediaTypeRepository mediaTypeRepository; @@ -393,7 +394,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void GetPagedResultsByQuery_DescendingOrder() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { MediaTypeRepository mediaTypeRepository; @@ -415,7 +416,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void GetPagedResultsByQuery_AlternateOrder() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { MediaTypeRepository mediaTypeRepository; @@ -436,7 +437,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void GetPagedResultsByQuery_FilterMatchingSome() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { MediaTypeRepository mediaTypeRepository; @@ -459,7 +460,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void GetPagedResultsByQuery_FilterMatchingAll() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository(provider, out _); @@ -481,7 +482,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void GetAllMediaByIds() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { MediaTypeRepository mediaTypeRepository; @@ -501,7 +502,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void GetAllMedia() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { MediaTypeRepository mediaTypeRepository; @@ -531,7 +532,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void ExistMedia() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { MediaTypeRepository mediaTypeRepository; @@ -553,7 +554,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void CountMedia() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { MediaTypeRepository mediaTypeRepository; diff --git a/src/Umbraco.Tests/Persistence/Repositories/MediaTypeRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/MediaTypeRepositoryTest.cs index 692ac522d9..b9b64bdd5d 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/MediaTypeRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/MediaTypeRepositoryTest.cs @@ -1,5 +1,6 @@ using System; using System.Linq; +using Microsoft.Extensions.Logging; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Cache; @@ -23,22 +24,22 @@ namespace Umbraco.Tests.Persistence.Repositories { var cacheHelper = AppCaches.Disabled; var globalSettings = new GlobalSettings(); - var templateRepository = new TemplateRepository((IScopeAccessor)provider, cacheHelper, Logger, TestObjects.GetFileSystemsMock(), IOHelper, ShortStringHelper); + var templateRepository = new TemplateRepository((IScopeAccessor)provider, cacheHelper, LoggerFactory.CreateLogger(), TestObjects.GetFileSystemsMock(), IOHelper, ShortStringHelper); var commonRepository = new ContentTypeCommonRepository((IScopeAccessor)provider, templateRepository, AppCaches, ShortStringHelper); - var languageRepository = new LanguageRepository((IScopeAccessor)provider, AppCaches, Logger, Microsoft.Extensions.Options.Options.Create(globalSettings)); - return new MediaTypeRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, commonRepository, languageRepository, ShortStringHelper); + var languageRepository = new LanguageRepository((IScopeAccessor)provider, AppCaches, LoggerFactory.CreateLogger(), Microsoft.Extensions.Options.Options.Create(globalSettings)); + return new MediaTypeRepository((IScopeAccessor) provider, AppCaches.Disabled, LoggerFactory.CreateLogger(), commonRepository, languageRepository, ShortStringHelper); } private EntityContainerRepository CreateContainerRepository(IScopeProvider provider) { - return new EntityContainerRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, Constants.ObjectTypes.MediaTypeContainer); + return new EntityContainerRepository((IScopeAccessor) provider, AppCaches.Disabled, LoggerFactory.CreateLogger(), Constants.ObjectTypes.MediaTypeContainer); } [Test] public void Can_Move() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var containerRepository = CreateContainerRepository(provider); @@ -85,7 +86,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Create_Container() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var containerRepository = CreateContainerRepository(provider); @@ -103,7 +104,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Delete_Container() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var containerRepository = CreateContainerRepository(provider); @@ -125,7 +126,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Create_Container_Containing_Media_Types() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var containerRepository = CreateContainerRepository(provider); @@ -147,7 +148,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Delete_Container_Containing_Media_Types() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var containerRepository = CreateContainerRepository(provider); @@ -179,7 +180,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Add_On_MediaTypeRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository(provider); @@ -207,7 +208,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Update_On_MediaTypeRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository(provider); @@ -245,7 +246,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Delete_On_MediaTypeRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository(provider); @@ -270,7 +271,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Get_On_MediaTypeRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository(provider); @@ -289,7 +290,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Get_By_Guid_On_MediaTypeRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository(provider); @@ -310,7 +311,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_GetAll_On_MediaTypeRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository(provider); @@ -332,7 +333,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_GetAll_By_Guid_On_MediaTypeRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository(provider); @@ -358,7 +359,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Exists_On_MediaTypeRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository(provider); @@ -375,7 +376,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Update_MediaType_With_PropertyType_Removed() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository(provider); @@ -403,7 +404,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Verify_PropertyTypes_On_Video_MediaType() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository(provider); @@ -425,7 +426,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Verify_PropertyTypes_On_File_MediaType() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository(provider); diff --git a/src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs index 2da5b4c283..04bf37c8d8 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs @@ -1,6 +1,7 @@ using System; using System.Diagnostics; using System.Linq; +using Microsoft.Extensions.Logging; using Moq; using NPoco; using NUnit.Framework; @@ -31,23 +32,23 @@ namespace Umbraco.Tests.Persistence.Repositories var globalSettings = new GlobalSettings(); var templateRepository = Mock.Of(); var commonRepository = new ContentTypeCommonRepository(accessor, templateRepository, AppCaches, ShortStringHelper); - var languageRepository = new LanguageRepository(accessor, AppCaches.Disabled, Logger, Microsoft.Extensions.Options.Options.Create(globalSettings)); - memberTypeRepository = new MemberTypeRepository(accessor, AppCaches.Disabled, Logger, commonRepository, languageRepository, ShortStringHelper); - memberGroupRepository = new MemberGroupRepository(accessor, AppCaches.Disabled, Logger); - var tagRepo = new TagRepository(accessor, AppCaches.Disabled, Logger); - var relationTypeRepository = new RelationTypeRepository(accessor, AppCaches.Disabled, Logger); + var languageRepository = new LanguageRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), Microsoft.Extensions.Options.Options.Create(globalSettings)); + memberTypeRepository = new MemberTypeRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), commonRepository, languageRepository, ShortStringHelper); + memberGroupRepository = new MemberGroupRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger()); + var tagRepo = new TagRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger()); + var relationTypeRepository = new RelationTypeRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger()); var entityRepository = new EntityRepository(accessor); - var relationRepository = new RelationRepository(accessor, Logger, relationTypeRepository, entityRepository); + var relationRepository = new RelationRepository(accessor, LoggerFactory.CreateLogger(), relationTypeRepository, entityRepository); var propertyEditors = new Lazy(() => new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty()))); var dataValueReferences = new DataValueReferenceFactoryCollection(Enumerable.Empty()); - var repository = new MemberRepository(accessor, AppCaches.Disabled, Logger, memberTypeRepository, memberGroupRepository, tagRepo, Mock.Of(), relationRepository, relationTypeRepository, PasswordHasher, propertyEditors, dataValueReferences, DataTypeService); + var repository = new MemberRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), memberTypeRepository, memberGroupRepository, tagRepo, Mock.Of(), relationRepository, relationTypeRepository, PasswordHasher, propertyEditors, dataValueReferences, DataTypeService); return repository; } [Test] public void GetMember() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { MemberTypeRepository memberTypeRepository; @@ -66,7 +67,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void GetMembers() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { MemberTypeRepository memberTypeRepository; @@ -89,7 +90,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void GetAllMembers() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { MemberTypeRepository memberTypeRepository; @@ -115,7 +116,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void QueryMember() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { MemberTypeRepository memberTypeRepository; @@ -138,7 +139,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void SaveMember() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { MemberTypeRepository memberTypeRepository; @@ -163,7 +164,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void MemberHasBuiltinProperties() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { MemberTypeRepository memberTypeRepository; @@ -195,7 +196,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void SavingPreservesPassword() { IMember sut; - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { MemberTypeRepository memberTypeRepository; @@ -225,7 +226,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void SavingUpdatesNameAndEmail() { IMember sut; - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { MemberTypeRepository memberTypeRepository; @@ -255,7 +256,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void QueryMember_WithSubQuery() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); var query = provider.SqlContext.Query().Where(x => ((Member) x).LongStringPropertyValue.Contains("1095") && @@ -275,7 +276,7 @@ namespace Umbraco.Tests.Persistence.Repositories private IMember CreateTestMember(IMemberType memberType = null, string name = null, string email = null, string password = null, string username = null, Guid? key = null) { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { MemberTypeRepository memberTypeRepository; @@ -299,7 +300,7 @@ namespace Umbraco.Tests.Persistence.Repositories private IMemberType CreateTestMemberType(string alias = null) { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { MemberTypeRepository memberTypeRepository; @@ -315,7 +316,7 @@ namespace Umbraco.Tests.Persistence.Repositories private Sql GetBaseQuery(bool isCount) { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); if (isCount) { var sqlCount = provider.SqlContext.Sql() @@ -355,7 +356,7 @@ namespace Umbraco.Tests.Persistence.Repositories private Sql GetSubquery() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); var sql = provider.SqlContext.Sql(); sql.Select("umbracoNode.id") .From() diff --git a/src/Umbraco.Tests/Persistence/Repositories/MemberTypeRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/MemberTypeRepositoryTest.cs index 11c9363a4f..0a89c2dbe7 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/MemberTypeRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/MemberTypeRepositoryTest.cs @@ -1,11 +1,11 @@ using System; using System.Linq; using Moq; +using Microsoft.Extensions.Logging; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Configuration.Models; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Repositories; @@ -26,14 +26,14 @@ namespace Umbraco.Tests.Persistence.Repositories var templateRepository = Mock.Of(); var globalSettings = new GlobalSettings(); var commonRepository = new ContentTypeCommonRepository((IScopeAccessor)provider, templateRepository, AppCaches, ShortStringHelper); - var languageRepository = new LanguageRepository((IScopeAccessor)provider, AppCaches.Disabled, Mock.Of(), Microsoft.Extensions.Options.Options.Create(globalSettings)); - return new MemberTypeRepository((IScopeAccessor) provider, AppCaches.Disabled, Mock.Of(), commonRepository, languageRepository, ShortStringHelper); + var languageRepository = new LanguageRepository((IScopeAccessor)provider, AppCaches.Disabled, Mock.Of>(), Microsoft.Extensions.Options.Options.Create(globalSettings)); + return new MemberTypeRepository((IScopeAccessor) provider, AppCaches.Disabled, Mock.Of>(), commonRepository, languageRepository, ShortStringHelper); } [Test] public void Can_Persist_Member_Type() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository(provider); @@ -59,7 +59,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Persist_Member_Type_Same_Property_Keys() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository(provider); @@ -85,7 +85,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Cannot_Persist_Member_Type_Without_Alias() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository(provider); @@ -101,7 +101,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Get_All_Member_Types() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository(provider); @@ -126,7 +126,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Get_All_Member_Types_By_Guid_Ids() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository(provider); @@ -151,7 +151,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Get_Member_Types_By_Guid_Id() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository(provider); @@ -178,7 +178,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Get_All_Members_When_No_Properties_Assigned() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository(provider); @@ -205,7 +205,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Get_Member_Type_By_Id() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository(provider); @@ -221,7 +221,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Get_Member_Type_By_Guid_Id() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository(provider); @@ -240,7 +240,7 @@ namespace Umbraco.Tests.Persistence.Repositories { var stubs = ConventionsHelper.GetStandardPropertyTypeStubs(ShortStringHelper); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (provider.CreateScope()) { var repository = CreateRepository(provider); @@ -285,7 +285,7 @@ namespace Umbraco.Tests.Persistence.Repositories { var stubs = ConventionsHelper.GetStandardPropertyTypeStubs(ShortStringHelper); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (provider.CreateScope()) { var repository = CreateRepository(provider); @@ -316,7 +316,7 @@ namespace Umbraco.Tests.Persistence.Repositories { var stubs = ConventionsHelper.GetStandardPropertyTypeStubs(ShortStringHelper); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (provider.CreateScope()) { var repository = CreateRepository(provider); @@ -350,7 +350,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Built_In_Member_Type_Properties_Are_Not_Reused_For_Different_Member_Types() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository(provider); @@ -372,7 +372,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Delete_MemberType() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository(provider); diff --git a/src/Umbraco.Tests/Persistence/Repositories/PartialViewRepositoryTests.cs b/src/Umbraco.Tests/Persistence/Repositories/PartialViewRepositoryTests.cs index f7744303e3..3c1a003a15 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/PartialViewRepositoryTests.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/PartialViewRepositoryTests.cs @@ -1,4 +1,5 @@ using System.Linq; +using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -23,7 +24,7 @@ namespace Umbraco.Tests.Persistence.Repositories { base.SetUp(); - _fileSystem = new PhysicalFileSystem(IOHelper, HostingEnvironment, Logger, Constants.SystemDirectories.MvcViews + "/Partials/"); + _fileSystem = new PhysicalFileSystem(IOHelper, HostingEnvironment, LoggerFactory.CreateLogger(), Constants.SystemDirectories.MvcViews + "/Partials/"); } protected override void Compose() @@ -41,7 +42,7 @@ namespace Umbraco.Tests.Persistence.Repositories var fileSystems = Mock.Of(); Mock.Get(fileSystems).Setup(x => x.PartialViewsFileSystem).Returns(_fileSystem); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = new PartialViewRepository(fileSystems, IOHelper); diff --git a/src/Umbraco.Tests/Persistence/Repositories/PublicAccessRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/PublicAccessRepositoryTest.cs index 9677ac8982..d2f606c973 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/PublicAccessRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/PublicAccessRepositoryTest.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using NUnit.Framework; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Models; @@ -24,10 +25,10 @@ namespace Umbraco.Tests.Persistence.Repositories { var content = CreateTestData(3).ToArray(); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { - var repo = new PublicAccessRepository((IScopeAccessor) provider, AppCaches, Logger); + var repo = new PublicAccessRepository((IScopeAccessor) provider, AppCaches, LoggerFactory.CreateLogger()); var entry = new PublicAccessEntry(content[0], content[1], content[2], new[] { @@ -53,11 +54,11 @@ namespace Umbraco.Tests.Persistence.Repositories { var content = CreateTestData(3).ToArray(); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { scope.Database.AsUmbracoDatabase().EnableSqlTrace = true; - var repo = new PublicAccessRepository((IScopeAccessor) provider, AppCaches, Logger); + var repo = new PublicAccessRepository((IScopeAccessor) provider, AppCaches, LoggerFactory.CreateLogger()); var entry = new PublicAccessEntry(content[0], content[1], content[2], new[] { @@ -93,11 +94,11 @@ namespace Umbraco.Tests.Persistence.Repositories { var content = CreateTestData(3).ToArray(); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { scope.Database.AsUmbracoDatabase().EnableSqlTrace = true; - var repo = new PublicAccessRepository((IScopeAccessor) provider, AppCaches, Logger); + var repo = new PublicAccessRepository((IScopeAccessor) provider, AppCaches, LoggerFactory.CreateLogger()); var entry = new PublicAccessEntry(content[0], content[1], content[2], new[] { @@ -139,10 +140,10 @@ namespace Umbraco.Tests.Persistence.Repositories { var content = CreateTestData(3).ToArray(); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { - var repo = new PublicAccessRepository((IScopeAccessor) provider, AppCaches, Logger); + var repo = new PublicAccessRepository((IScopeAccessor) provider, AppCaches, LoggerFactory.CreateLogger()); var entry = new PublicAccessEntry(content[0], content[1], content[2], new[] { @@ -177,10 +178,10 @@ namespace Umbraco.Tests.Persistence.Repositories { var content = CreateTestData(3).ToArray(); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { - var repo = new PublicAccessRepository((IScopeAccessor) provider, AppCaches, Logger); + var repo = new PublicAccessRepository((IScopeAccessor) provider, AppCaches, LoggerFactory.CreateLogger()); var entry = new PublicAccessEntry(content[0], content[1], content[2], new[] { @@ -205,10 +206,10 @@ namespace Umbraco.Tests.Persistence.Repositories { var content = CreateTestData(30).ToArray(); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { - var repo = new PublicAccessRepository((IScopeAccessor) provider, AppCaches, Logger); + var repo = new PublicAccessRepository((IScopeAccessor) provider, AppCaches, LoggerFactory.CreateLogger()); var allEntries = new List(); for (int i = 0; i < 10; i++) @@ -269,10 +270,10 @@ namespace Umbraco.Tests.Persistence.Repositories { var content = CreateTestData(3).ToArray(); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { - var repo = new PublicAccessRepository((IScopeAccessor) provider, AppCaches, Logger); + var repo = new PublicAccessRepository((IScopeAccessor) provider, AppCaches, LoggerFactory.CreateLogger()); var entry1 = new PublicAccessEntry(content[0], content[1], content[2], new[] { @@ -306,23 +307,23 @@ namespace Umbraco.Tests.Persistence.Repositories { var accessor = (IScopeAccessor) provider; var globalSettings = new GlobalSettings(); - var templateRepository = new TemplateRepository(accessor, AppCaches, Logger, TestObjects.GetFileSystemsMock(), IOHelper, ShortStringHelper); - var tagRepository = new TagRepository(accessor, AppCaches, Logger); + var templateRepository = new TemplateRepository(accessor, AppCaches, LoggerFactory.CreateLogger(), TestObjects.GetFileSystemsMock(), IOHelper, ShortStringHelper); + var tagRepository = new TagRepository(accessor, AppCaches, LoggerFactory.CreateLogger()); var commonRepository = new ContentTypeCommonRepository(accessor, templateRepository, AppCaches, ShortStringHelper); - var languageRepository = new LanguageRepository(accessor, AppCaches, Logger, Microsoft.Extensions.Options.Options.Create(globalSettings)); - contentTypeRepository = new ContentTypeRepository(accessor, AppCaches, Logger, commonRepository, languageRepository, ShortStringHelper); - var relationTypeRepository = new RelationTypeRepository(accessor, AppCaches, Logger); + var languageRepository = new LanguageRepository(accessor, AppCaches, LoggerFactory.CreateLogger(), Microsoft.Extensions.Options.Options.Create(globalSettings)); + contentTypeRepository = new ContentTypeRepository(accessor, AppCaches, LoggerFactory.CreateLogger(), commonRepository, languageRepository, ShortStringHelper); + var relationTypeRepository = new RelationTypeRepository(accessor, AppCaches, LoggerFactory.CreateLogger()); var entityRepository = new EntityRepository(accessor); - var relationRepository = new RelationRepository(accessor, Logger, relationTypeRepository, entityRepository); + var relationRepository = new RelationRepository(accessor, LoggerFactory.CreateLogger(), relationTypeRepository, entityRepository); var propertyEditors = new Lazy(() => new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty()))); var dataValueReferences = new DataValueReferenceFactoryCollection(Enumerable.Empty()); - var repository = new DocumentRepository(accessor, AppCaches, Logger, contentTypeRepository, templateRepository, tagRepository, languageRepository, relationRepository, relationTypeRepository, propertyEditors, dataValueReferences, DataTypeService); + var repository = new DocumentRepository(accessor, AppCaches, LoggerFactory.CreateLogger(), LoggerFactory, contentTypeRepository, templateRepository, tagRepository, languageRepository, relationRepository, relationTypeRepository, propertyEditors, dataValueReferences, DataTypeService); return repository; } private IEnumerable CreateTestData(int count) { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { ContentTypeRepository ctRepo; diff --git a/src/Umbraco.Tests/Persistence/Repositories/RelationRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/RelationRepositoryTest.cs index 209d5de4b3..9cdd0d7c4a 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/RelationRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/RelationRepositoryTest.cs @@ -1,11 +1,11 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Cache; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; using Umbraco.Core.Persistence.Dtos; @@ -32,9 +32,9 @@ namespace Umbraco.Tests.Persistence.Repositories private RelationRepository CreateRepository(IScopeProvider provider, out RelationTypeRepository relationTypeRepository) { var accessor = (IScopeAccessor) provider; - relationTypeRepository = new RelationTypeRepository(accessor, AppCaches.Disabled, Mock.Of()); + relationTypeRepository = new RelationTypeRepository(accessor, AppCaches.Disabled, Mock.Of>()); var entityRepository = new EntityRepository(accessor); - var repository = new RelationRepository(accessor, Mock.Of(), relationTypeRepository, entityRepository); + var repository = new RelationRepository(accessor, Mock.Of>(), relationTypeRepository, entityRepository); return repository; } @@ -42,7 +42,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Add_On_RelationRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { RelationTypeRepository repositoryType; @@ -64,7 +64,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Update_On_RelationRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { RelationTypeRepository repositoryType; @@ -89,7 +89,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Delete_On_RelationRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { RelationTypeRepository repositoryType; @@ -111,7 +111,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Get_On_RelationRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { RelationTypeRepository repositoryType; @@ -133,7 +133,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_GetAll_On_RelationRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { RelationTypeRepository repositoryType; @@ -154,7 +154,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_GetAll_With_Params_On_RelationRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { RelationTypeRepository repositoryType; @@ -176,7 +176,7 @@ namespace Umbraco.Tests.Persistence.Repositories { CreateTestDataForPagingTests(out var createdContent, out var createdMembers, out var createdMedia); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository(provider, out var relationTypeRepository); @@ -214,7 +214,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Get_Paged_Parent_Child_Entities_With_Same_Entity_Relation() { - //Create a media item and create a relationship between itself (parent -> child) + //Create a media item and create a relationship between itself (parent -> child) var imageType = MockedContentTypes.CreateImageMediaType("myImage"); ServiceContext.MediaTypeService.Save(imageType); var media = MockedMedia.CreateMediaImage(imageType, -1); @@ -222,7 +222,7 @@ namespace Umbraco.Tests.Persistence.Repositories var relType = ServiceContext.RelationService.GetRelationTypeByAlias(Constants.Conventions.RelationTypes.RelatedMediaAlias); ServiceContext.RelationService.Relate(media.Id, media.Id, relType); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository(provider, out var relationTypeRepository); @@ -244,7 +244,7 @@ namespace Umbraco.Tests.Persistence.Repositories { CreateTestDataForPagingTests(out var createdContent, out var createdMembers, out var createdMedia); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateRepository(provider, out var relationTypeRepository); @@ -325,7 +325,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Exists_On_RelationRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { RelationTypeRepository repositoryType; @@ -345,7 +345,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Count_On_RelationRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { RelationTypeRepository repositoryType; @@ -364,7 +364,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_GetByQuery_On_RelationRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { RelationTypeRepository repositoryType; @@ -386,7 +386,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Delete_Content_And_Verify_Relation_Is_Removed() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { RelationTypeRepository repositoryType; @@ -414,7 +414,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void CreateTestData() { var relateContent = new RelationType( - "Relate Content on Copy", "relateContentOnCopy", true, + "Relate Content on Copy", "relateContentOnCopy", true, Constants.ObjectTypes.Document, new Guid("C66BA18E-EAF3-4CFF-8A22-41B16D66A972")); @@ -424,13 +424,13 @@ namespace Umbraco.Tests.Persistence.Repositories Constants.ObjectTypes.DocumentType, new Guid("A2CB7800-F571-4787-9638-BC48539A0EFB")); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var accessor = (IScopeAccessor)provider; - var relationTypeRepository = new RelationTypeRepository(accessor, AppCaches.Disabled, Mock.Of()); + var relationTypeRepository = new RelationTypeRepository(accessor, AppCaches.Disabled, Mock.Of>()); var entityRepository = new EntityRepository(accessor); - var relationRepository = new RelationRepository(accessor, Mock.Of(), relationTypeRepository, entityRepository); + var relationRepository = new RelationRepository(accessor, Mock.Of>(), relationTypeRepository, entityRepository); relationTypeRepository.Save(relateContent); relationTypeRepository.Save(relateContentType); diff --git a/src/Umbraco.Tests/Persistence/Repositories/ScriptRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/ScriptRepositoryTest.cs index 9ff27b8e50..0a9632b9ad 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/ScriptRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/ScriptRepositoryTest.cs @@ -2,6 +2,7 @@ using System.IO; using System.Linq; using System.Text; +using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -32,7 +33,7 @@ namespace Umbraco.Tests.Persistence.Repositories base.SetUp(); _fileSystems = Mock.Of(); - _fileSystem = new PhysicalFileSystem(IOHelper, HostingEnvironment, Logger, new GlobalSettings().UmbracoScriptsPath); + _fileSystem = new PhysicalFileSystem(IOHelper, HostingEnvironment, LoggerFactory.CreateLogger(), new GlobalSettings().UmbracoScriptsPath); Mock.Get(_fileSystems).Setup(x => x.ScriptsFileSystem).Returns(_fileSystem); using (var stream = CreateStream("Umbraco.Sys.registerNamespace(\"Umbraco.Utils\");")) { @@ -57,7 +58,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Instantiate_Repository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = ScopeProvider.CreateScope()) { // Act @@ -72,7 +73,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Add_On_ScriptRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = ScopeProvider.CreateScope()) { var repository = CreateRepository(); @@ -91,7 +92,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Update_On_ScriptRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = ScopeProvider.CreateScope()) { var repository = CreateRepository(); @@ -117,7 +118,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Delete_On_ScriptRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = ScopeProvider.CreateScope()) { var repository = CreateRepository(); @@ -137,7 +138,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Get_On_ScriptRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = ScopeProvider.CreateScope()) { var repository = CreateRepository(); @@ -156,7 +157,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_GetAll_On_ScriptRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = ScopeProvider.CreateScope()) { var repository = CreateRepository(); @@ -184,7 +185,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_GetAll_With_Params_On_ScriptRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = ScopeProvider.CreateScope()) { var repository = CreateRepository(); @@ -212,7 +213,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Exists_On_ScriptRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = ScopeProvider.CreateScope()) { var repository = CreateRepository(); @@ -231,7 +232,7 @@ namespace Umbraco.Tests.Persistence.Repositories const string content = "/// "; // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = ScopeProvider.CreateScope()) { var repository = CreateRepository(); @@ -264,7 +265,7 @@ namespace Umbraco.Tests.Persistence.Repositories { // unless noted otherwise, no changes / 7.2.8 - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = ScopeProvider.CreateScope()) { var repository = CreateRepository(); diff --git a/src/Umbraco.Tests/Persistence/Repositories/StylesheetRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/StylesheetRepositoryTest.cs index 2be1843489..2ba2e7679e 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/StylesheetRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/StylesheetRepositoryTest.cs @@ -3,6 +3,7 @@ using System.Data; using System.IO; using System.Linq; using System.Text; +using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -31,7 +32,7 @@ namespace Umbraco.Tests.Persistence.Repositories base.SetUp(); _fileSystems = Mock.Of(); - _fileSystem = new PhysicalFileSystem(IOHelper, HostingEnvironment, Logger, new GlobalSettings().UmbracoCssPath); + _fileSystem = new PhysicalFileSystem(IOHelper, HostingEnvironment, LoggerFactory.CreateLogger(), new GlobalSettings().UmbracoCssPath); Mock.Get(_fileSystems).Setup(x => x.StylesheetsFileSystem).Returns(_fileSystem); var stream = CreateStream("body {background:#EE7600; color:#FFF;}"); _fileSystem.AddFile("styles.css", stream); diff --git a/src/Umbraco.Tests/Persistence/Repositories/TagRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/TagRepositoryTest.cs index 9bbfc8a076..5037541fae 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/TagRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/TagRepositoryTest.cs @@ -1,5 +1,6 @@ using System; using System.Linq; +using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; using Umbraco.Core.Cache; @@ -22,7 +23,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Perform_Add_On_Repository() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (ScopeProvider.CreateScope()) { var repository = CreateRepository(provider); @@ -42,7 +43,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Perform_Multiple_Adds_On_Repository() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (ScopeProvider.CreateScope()) { var repository = CreateRepository(provider); @@ -72,7 +73,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Create_Tag_Relations() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (ScopeProvider.CreateScope()) { var contentRepository = CreateDocumentRepository(provider, out var contentTypeRepository); @@ -102,7 +103,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Append_Tag_Relations() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (ScopeProvider.CreateScope()) { var contentRepository = CreateDocumentRepository(provider, out var contentTypeRepository); @@ -141,7 +142,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Replace_Tag_Relations() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (ScopeProvider.CreateScope()) { var contentRepository = CreateDocumentRepository(provider, out var contentTypeRepository); @@ -183,7 +184,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Merge_Tag_Relations() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (ScopeProvider.CreateScope()) { var contentRepository = CreateDocumentRepository(provider, out var contentTypeRepository); @@ -223,7 +224,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Clear_Tag_Relations() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (ScopeProvider.CreateScope()) { var contentRepository = CreateDocumentRepository(provider, out var contentTypeRepository); @@ -259,7 +260,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Remove_Specific_Tags_From_Property() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (ScopeProvider.CreateScope()) { var contentRepository = CreateDocumentRepository(provider, out var contentTypeRepository); @@ -303,7 +304,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Get_Tags_For_Content_By_Id() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (ScopeProvider.CreateScope()) { var contentRepository = CreateDocumentRepository(provider, out var contentTypeRepository); @@ -347,7 +348,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Get_Tags_For_Content_By_Key() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (ScopeProvider.CreateScope()) { var contentRepository = CreateDocumentRepository(provider, out var contentTypeRepository); @@ -392,7 +393,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Get_All() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (ScopeProvider.CreateScope()) { var contentRepository = CreateDocumentRepository(provider, out var contentTypeRepository); @@ -427,7 +428,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Get_All_With_Ids() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (ScopeProvider.CreateScope()) { var contentRepository = CreateDocumentRepository(provider, out var contentTypeRepository); @@ -467,7 +468,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Get_Tags_For_Content_For_Group() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (ScopeProvider.CreateScope()) { var contentRepository = CreateDocumentRepository(provider, out var contentTypeRepository); @@ -511,7 +512,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Get_Tags_For_Property_By_Id() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (ScopeProvider.CreateScope()) { var contentRepository = CreateDocumentRepository(provider, out var contentTypeRepository); @@ -555,7 +556,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Get_Tags_For_Property_By_Key() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (ScopeProvider.CreateScope()) { var contentRepository = CreateDocumentRepository(provider, out var contentTypeRepository); @@ -599,7 +600,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Get_Tags_For_Property_For_Group() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (ScopeProvider.CreateScope()) { var contentRepository = CreateDocumentRepository(provider, out var contentTypeRepository); @@ -644,7 +645,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Get_Tags_For_Entity_Type() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (ScopeProvider.CreateScope()) { var contentRepository = CreateDocumentRepository(provider, out var contentTypeRepository); @@ -701,7 +702,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Get_Tags_For_Entity_Type_For_Group() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (ScopeProvider.CreateScope()) { var contentRepository = CreateDocumentRepository(provider, out var contentTypeRepository); @@ -753,7 +754,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Cascade_Deletes_Tag_Relations() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = ScopeProvider.CreateScope()) { var contentRepository = CreateDocumentRepository(provider, out var contentTypeRepository); @@ -789,7 +790,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Get_Tagged_Entities_For_Tag_Group() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (ScopeProvider.CreateScope()) { var contentRepository = CreateDocumentRepository(provider, out var contentTypeRepository); @@ -869,7 +870,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Get_Tagged_Entities_For_Tag() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (ScopeProvider.CreateScope()) { var contentRepository = CreateDocumentRepository(provider, out var contentTypeRepository); @@ -948,24 +949,24 @@ namespace Umbraco.Tests.Persistence.Repositories private TagRepository CreateRepository(IScopeProvider provider) { - return new TagRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger); + return new TagRepository((IScopeAccessor) provider, AppCaches.Disabled, LoggerFactory.CreateLogger()); } private DocumentRepository CreateDocumentRepository(IScopeProvider provider, out ContentTypeRepository contentTypeRepository) { var accessor = (IScopeAccessor) provider; var globalSettings = new GlobalSettings(); - var templateRepository = new TemplateRepository(accessor, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock(), IOHelper, ShortStringHelper); - var tagRepository = new TagRepository(accessor, AppCaches.Disabled, Logger); + var templateRepository = new TemplateRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), TestObjects.GetFileSystemsMock(), IOHelper, ShortStringHelper); + var tagRepository = new TagRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger()); var commonRepository = new ContentTypeCommonRepository(accessor, templateRepository, AppCaches.Disabled, ShortStringHelper); - var languageRepository = new LanguageRepository(accessor, AppCaches.Disabled, Logger, Microsoft.Extensions.Options.Options.Create(globalSettings)); - contentTypeRepository = new ContentTypeRepository(accessor, AppCaches.Disabled, Logger, commonRepository, languageRepository, ShortStringHelper); - var relationTypeRepository = new RelationTypeRepository(accessor, AppCaches.Disabled, Logger); + var languageRepository = new LanguageRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), Microsoft.Extensions.Options.Options.Create(globalSettings)); + contentTypeRepository = new ContentTypeRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), commonRepository, languageRepository, ShortStringHelper); + var relationTypeRepository = new RelationTypeRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger()); var entityRepository = new EntityRepository(accessor); - var relationRepository = new RelationRepository(accessor, Logger, relationTypeRepository, entityRepository); + var relationRepository = new RelationRepository(accessor, LoggerFactory.CreateLogger(), relationTypeRepository, entityRepository); var propertyEditors = new Lazy(() => new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty()))); var dataValueReferences = new DataValueReferenceFactoryCollection(Enumerable.Empty()); - var repository = new DocumentRepository(accessor, AppCaches.Disabled, Logger, contentTypeRepository, templateRepository, tagRepository, languageRepository, relationRepository, relationTypeRepository, propertyEditors, dataValueReferences, DataTypeService); + var repository = new DocumentRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), LoggerFactory, contentTypeRepository, templateRepository, tagRepository, languageRepository, relationRepository, relationTypeRepository, propertyEditors, dataValueReferences, DataTypeService); return repository; } @@ -973,18 +974,18 @@ namespace Umbraco.Tests.Persistence.Repositories { var accessor = (IScopeAccessor) provider; var globalSettings = new GlobalSettings(); - var templateRepository = new TemplateRepository(accessor, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock(), IOHelper, ShortStringHelper); - var tagRepository = new TagRepository(accessor, AppCaches.Disabled, Logger); + var templateRepository = new TemplateRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), TestObjects.GetFileSystemsMock(), IOHelper, ShortStringHelper); + var tagRepository = new TagRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger()); var commonRepository = new ContentTypeCommonRepository(accessor, templateRepository, AppCaches.Disabled, ShortStringHelper); - var languageRepository = new LanguageRepository(accessor, AppCaches.Disabled, Logger, Microsoft.Extensions.Options.Options.Create(globalSettings)); - mediaTypeRepository = new MediaTypeRepository(accessor, AppCaches.Disabled, Logger, commonRepository, languageRepository, ShortStringHelper); - var relationTypeRepository = new RelationTypeRepository(accessor, AppCaches.Disabled, Logger); + var languageRepository = new LanguageRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), Microsoft.Extensions.Options.Options.Create(globalSettings)); + mediaTypeRepository = new MediaTypeRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), commonRepository, languageRepository, ShortStringHelper); + var relationTypeRepository = new RelationTypeRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger()); var entityRepository = new EntityRepository(accessor); - var relationRepository = new RelationRepository(accessor, Logger, relationTypeRepository, entityRepository); + var relationRepository = new RelationRepository(accessor, LoggerFactory.CreateLogger(), relationTypeRepository, entityRepository); var propertyEditors = new Lazy(() => new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty()))); var mediaUrlGenerators = new MediaUrlGeneratorCollection(Enumerable.Empty()); var dataValueReferences = new DataValueReferenceFactoryCollection(Enumerable.Empty()); - var repository = new MediaRepository(accessor, AppCaches.Disabled, Logger, mediaTypeRepository, tagRepository, Mock.Of(), relationRepository, relationTypeRepository, propertyEditors, mediaUrlGenerators, dataValueReferences, DataTypeService); + var repository = new MediaRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), LoggerFactory, mediaTypeRepository, tagRepository, Mock.Of(), relationRepository, relationTypeRepository, propertyEditors, mediaUrlGenerators, dataValueReferences, DataTypeService); return repository; } } diff --git a/src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs index 74176e10f0..0cd26442be 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs @@ -1,18 +1,17 @@ using System; using System.Linq; +using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Configuration.Models; -using Umbraco.Core.Logging; using Umbraco.Core.Models.Membership; using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Persistence.Repositories.Implement; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Scoping; using Umbraco.Core.Serialization; -using Umbraco.Tests.Common.Builders; using Umbraco.Tests.TestHelpers; using Umbraco.Tests.TestHelpers.Entities; using Umbraco.Tests.Testing; @@ -20,6 +19,7 @@ using Umbraco.Core.Configuration; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Dtos; using Umbraco.Core.Persistence.Mappers; +using Umbraco.Tests.Common.Builders; using Umbraco.Tests.Common.Builders.Extensions; using MockedUser = Umbraco.Tests.TestHelpers.Entities.MockedUser; @@ -35,18 +35,18 @@ namespace Umbraco.Tests.Persistence.Repositories { var accessor = (IScopeAccessor) provider; var globalSettings = new GlobalSettings(); - var templateRepository = new TemplateRepository(accessor, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock(), IOHelper, ShortStringHelper); + var templateRepository = new TemplateRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), TestObjects.GetFileSystemsMock(), IOHelper, ShortStringHelper); var commonRepository = new ContentTypeCommonRepository(accessor, templateRepository, AppCaches, ShortStringHelper); - var languageRepository = new LanguageRepository(accessor, AppCaches, Logger, Microsoft.Extensions.Options.Options.Create(globalSettings)); - mediaTypeRepository = new MediaTypeRepository(accessor, AppCaches, Mock.Of(), commonRepository, languageRepository, ShortStringHelper); - var tagRepository = new TagRepository(accessor, AppCaches, Mock.Of()); - var relationTypeRepository = new RelationTypeRepository(accessor, AppCaches.Disabled, Logger); + var languageRepository = new LanguageRepository(accessor, AppCaches, LoggerFactory.CreateLogger(), Microsoft.Extensions.Options.Options.Create(globalSettings)); + mediaTypeRepository = new MediaTypeRepository(accessor, AppCaches, Mock.Of>(), commonRepository, languageRepository, ShortStringHelper); + var tagRepository = new TagRepository(accessor, AppCaches, Mock.Of>()); + var relationTypeRepository = new RelationTypeRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger()); var entityRepository = new EntityRepository(accessor); - var relationRepository = new RelationRepository(accessor, Logger, relationTypeRepository, entityRepository); + var relationRepository = new RelationRepository(accessor, LoggerFactory.CreateLogger(), relationTypeRepository, entityRepository); var propertyEditors = new Lazy(() => new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty()))); var mediaUrlGenerators = new MediaUrlGeneratorCollection(Enumerable.Empty()); var dataValueReferences = new DataValueReferenceFactoryCollection(Enumerable.Empty()); - var repository = new MediaRepository(accessor, AppCaches, Mock.Of(), mediaTypeRepository, tagRepository, Mock.Of(), relationRepository, relationTypeRepository, propertyEditors, mediaUrlGenerators, dataValueReferences, DataTypeService); + var repository = new MediaRepository(accessor, AppCaches, Mock.Of>(), LoggerFactory, mediaTypeRepository, tagRepository, Mock.Of(), relationRepository, relationTypeRepository, propertyEditors, mediaUrlGenerators, dataValueReferences, DataTypeService); return repository; } @@ -60,17 +60,17 @@ namespace Umbraco.Tests.Persistence.Repositories { var accessor = (IScopeAccessor) provider; var globalSettings = new GlobalSettings(); - templateRepository = new TemplateRepository(accessor, AppCaches, Logger, TestObjects.GetFileSystemsMock(), IOHelper, ShortStringHelper); - var tagRepository = new TagRepository(accessor, AppCaches, Logger); + templateRepository = new TemplateRepository(accessor, AppCaches, LoggerFactory.CreateLogger(), TestObjects.GetFileSystemsMock(), IOHelper, ShortStringHelper); + var tagRepository = new TagRepository(accessor, AppCaches, LoggerFactory.CreateLogger()); var commonRepository = new ContentTypeCommonRepository(accessor, templateRepository, AppCaches, ShortStringHelper); - var languageRepository = new LanguageRepository(accessor, AppCaches, Logger, Microsoft.Extensions.Options.Options.Create(globalSettings)); - contentTypeRepository = new ContentTypeRepository(accessor, AppCaches, Logger, commonRepository, languageRepository, ShortStringHelper); - var relationTypeRepository = new RelationTypeRepository(accessor, AppCaches.Disabled, Logger); + var languageRepository = new LanguageRepository(accessor, AppCaches, LoggerFactory.CreateLogger(), Microsoft.Extensions.Options.Options.Create(globalSettings)); + contentTypeRepository = new ContentTypeRepository(accessor, AppCaches, LoggerFactory.CreateLogger(), commonRepository, languageRepository, ShortStringHelper); + var relationTypeRepository = new RelationTypeRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger()); var entityRepository = new EntityRepository(accessor); - var relationRepository = new RelationRepository(accessor, Logger, relationTypeRepository, entityRepository); + var relationRepository = new RelationRepository(accessor, LoggerFactory.CreateLogger(), relationTypeRepository, entityRepository); var propertyEditors = new Lazy(() => new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty()))); var dataValueReferences = new DataValueReferenceFactoryCollection(Enumerable.Empty()); - var repository = new DocumentRepository(accessor, AppCaches, Logger, contentTypeRepository, templateRepository, tagRepository, languageRepository, relationRepository, relationTypeRepository, propertyEditors, dataValueReferences, DataTypeService); + var repository = new DocumentRepository(accessor, AppCaches, LoggerFactory.CreateLogger(), LoggerFactory, contentTypeRepository, templateRepository, tagRepository, languageRepository, relationRepository, relationTypeRepository, propertyEditors, dataValueReferences, DataTypeService); return repository; } @@ -78,21 +78,21 @@ namespace Umbraco.Tests.Persistence.Repositories { var accessor = (IScopeAccessor) provider; var globalSettings = new GlobalSettings(); - var repository = new UserRepository(accessor, AppCaches.Disabled, Logger, Mappers, Microsoft.Extensions.Options.Options.Create(globalSettings), Microsoft.Extensions.Options.Options.Create(new UserPasswordConfigurationSettings()), new JsonNetSerializer()); + var repository = new UserRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), Mappers, Microsoft.Extensions.Options.Options.Create(globalSettings), Microsoft.Extensions.Options.Options.Create(new UserPasswordConfigurationSettings()), new JsonNetSerializer()); return repository; } private UserGroupRepository CreateUserGroupRepository(IScopeProvider provider) { var accessor = (IScopeAccessor) provider; - return new UserGroupRepository(accessor, AppCaches.Disabled, Logger, ShortStringHelper); + return new UserGroupRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), LoggerFactory, ShortStringHelper); } [Test] public void Validate_Login_Session() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); var user = MockedUser.CreateUser(); using (var scope = provider.CreateScope(autoComplete: true)) { @@ -124,7 +124,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Add_On_UserRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope(autoComplete: true)) { var repository = CreateRepository(provider); @@ -144,7 +144,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Multiple_Adds_On_UserRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope(autoComplete: true)) { var repository = CreateRepository(provider); @@ -168,7 +168,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Verify_Fresh_Entity_Is_Not_Dirty() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope(autoComplete: true)) { var repository = CreateRepository(provider); @@ -193,7 +193,7 @@ namespace Umbraco.Tests.Persistence.Repositories var mt = MockedContentTypes.CreateSimpleMediaType("testmedia", "TestMedia"); // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope(autoComplete: true)) { var userRepository = CreateRepository(provider); @@ -252,7 +252,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Delete_On_UserRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope(autoComplete: true)) { var repository = CreateRepository(provider); @@ -264,7 +264,7 @@ namespace Umbraco.Tests.Persistence.Repositories var id = user.Id; - var repository2 = new UserRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, + var repository2 = new UserRepository((IScopeAccessor) provider, AppCaches.Disabled, LoggerFactory.CreateLogger(), Mock.Of(), Microsoft.Extensions.Options.Options.Create(new GlobalSettings()), Microsoft.Extensions.Options.Options.Create(new UserPasswordConfigurationSettings()), @@ -284,7 +284,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Get_On_UserRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope(autoComplete: true)) { var repository = CreateRepository(provider); @@ -307,7 +307,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_GetByQuery_On_UserRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope(autoComplete: true)) { var repository = CreateRepository(provider); @@ -327,7 +327,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_GetAll_By_Param_Ids_On_UserRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope(autoComplete: true)) { var repository = CreateRepository(provider); @@ -348,7 +348,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_GetAll_On_UserRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope(autoComplete: true)) { var repository = CreateRepository(provider); @@ -369,7 +369,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Exists_On_UserRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope(autoComplete: true)) { var repository = CreateRepository(provider); @@ -388,7 +388,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Perform_Count_On_UserRepository() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope(autoComplete: true)) { var repository = CreateRepository(provider); @@ -407,7 +407,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Get_Paged_Results_By_Query_And_Filter_And_Groups() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope(autoComplete: true)) { var repository = CreateRepository(provider); @@ -440,7 +440,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Get_Paged_Results_With_Filter_And_Groups() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope(autoComplete: true)) { var repository = CreateRepository(provider); @@ -473,7 +473,7 @@ namespace Umbraco.Tests.Persistence.Repositories public void Can_Invalidate_SecurityStamp_On_Username_Change() { // Arrange - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope(autoComplete: true)) { var repository = CreateRepository(provider); diff --git a/src/Umbraco.Tests/Persistence/SchemaValidationTest.cs b/src/Umbraco.Tests/Persistence/SchemaValidationTest.cs index 704d64823c..fe4a1581d1 100644 --- a/src/Umbraco.Tests/Persistence/SchemaValidationTest.cs +++ b/src/Umbraco.Tests/Persistence/SchemaValidationTest.cs @@ -1,8 +1,8 @@ using System.Linq; +using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; using Umbraco.Core.Configuration; -using Umbraco.Core.Logging; using Umbraco.Core.Migrations.Install; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Tests.Common.Builders; @@ -23,7 +23,7 @@ namespace Umbraco.Tests.Persistence using (var scope = ScopeProvider.CreateScope()) { - var schema = new DatabaseSchemaCreator(scope.Database, Logger, UmbracoVersion); + var schema = new DatabaseSchemaCreator(scope.Database, LoggerFactory.CreateLogger(), LoggerFactory, UmbracoVersion); result = schema.ValidateSchema( //TODO: When we remove the xml cache from tests we can remove this too DatabaseSchemaCreator.OrderedTables.Concat(new []{typeof(ContentXmlDto), typeof(PreviewXmlDto)})); diff --git a/src/Umbraco.Tests/Persistence/SqlCeTableByTableTest.cs b/src/Umbraco.Tests/Persistence/SqlCeTableByTableTest.cs index 676e46e06d..54d6b828be 100644 --- a/src/Umbraco.Tests/Persistence/SqlCeTableByTableTest.cs +++ b/src/Umbraco.Tests/Persistence/SqlCeTableByTableTest.cs @@ -1,9 +1,10 @@ -using Moq; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; +using Moq; using NPoco; using NUnit.Framework; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; -using Umbraco.Core.Logging; using Umbraco.Core.Migrations.Install; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Dtos; @@ -19,13 +20,14 @@ namespace Umbraco.Tests.Persistence public class SqlCeTableByTableTest : TestWithDatabaseBase { public GlobalSettings GlobalSettings => new GlobalSettings(); + private static ILoggerFactory _loggerFactory = NullLoggerFactory.Instance; [Test] public void Can_Create_umbracoNode_Table() { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); @@ -38,7 +40,7 @@ namespace Umbraco.Tests.Persistence { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); helper.CreateTable(); @@ -52,7 +54,7 @@ namespace Umbraco.Tests.Persistence { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); helper.CreateTable(); @@ -67,7 +69,7 @@ namespace Umbraco.Tests.Persistence { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); helper.CreateTable(); @@ -81,7 +83,7 @@ namespace Umbraco.Tests.Persistence { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); helper.CreateTable(); @@ -96,7 +98,7 @@ namespace Umbraco.Tests.Persistence { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); helper.CreateTable(); @@ -110,7 +112,7 @@ namespace Umbraco.Tests.Persistence { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); helper.CreateTable(); @@ -126,7 +128,7 @@ namespace Umbraco.Tests.Persistence { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); helper.CreateTable(); @@ -142,7 +144,7 @@ namespace Umbraco.Tests.Persistence { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); helper.CreateTable(); @@ -156,7 +158,7 @@ namespace Umbraco.Tests.Persistence { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); @@ -169,7 +171,7 @@ namespace Umbraco.Tests.Persistence { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); helper.CreateTable(); @@ -184,7 +186,7 @@ namespace Umbraco.Tests.Persistence { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); helper.CreateTable(); @@ -198,7 +200,7 @@ namespace Umbraco.Tests.Persistence { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); helper.CreateTable(); @@ -215,7 +217,7 @@ namespace Umbraco.Tests.Persistence { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); helper.CreateTable(); @@ -231,7 +233,7 @@ namespace Umbraco.Tests.Persistence { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); helper.CreateTable(); @@ -245,7 +247,7 @@ namespace Umbraco.Tests.Persistence { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); @@ -258,7 +260,7 @@ namespace Umbraco.Tests.Persistence { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); @@ -271,7 +273,7 @@ namespace Umbraco.Tests.Persistence { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); @@ -284,7 +286,7 @@ namespace Umbraco.Tests.Persistence { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); helper.CreateTable(); @@ -300,7 +302,7 @@ namespace Umbraco.Tests.Persistence { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); helper.CreateTable(); @@ -317,7 +319,7 @@ namespace Umbraco.Tests.Persistence { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); helper.CreateTable(); @@ -332,7 +334,7 @@ namespace Umbraco.Tests.Persistence { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); helper.CreateTable(); @@ -349,7 +351,7 @@ namespace Umbraco.Tests.Persistence { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); helper.CreateTable(); @@ -367,7 +369,7 @@ namespace Umbraco.Tests.Persistence { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); helper.CreateTable(); @@ -384,7 +386,7 @@ namespace Umbraco.Tests.Persistence { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); helper.CreateTable(); @@ -399,7 +401,7 @@ namespace Umbraco.Tests.Persistence { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); helper.CreateTable(); @@ -414,7 +416,7 @@ namespace Umbraco.Tests.Persistence { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); @@ -427,7 +429,7 @@ namespace Umbraco.Tests.Persistence { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); @@ -440,7 +442,7 @@ namespace Umbraco.Tests.Persistence { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); helper.CreateTable(); @@ -461,7 +463,7 @@ namespace Umbraco.Tests.Persistence { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); @@ -474,7 +476,7 @@ namespace Umbraco.Tests.Persistence { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); helper.CreateTable(); @@ -488,7 +490,7 @@ namespace Umbraco.Tests.Persistence { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); helper.CreateTable(); @@ -502,7 +504,7 @@ namespace Umbraco.Tests.Persistence { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); helper.CreateTable(); @@ -517,7 +519,7 @@ namespace Umbraco.Tests.Persistence { using (var scope = ScopeProvider.CreateScope()) { - var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of(), UmbracoVersion); + var helper = new DatabaseSchemaCreator(scope.Database, _loggerFactory.CreateLogger(), _loggerFactory, UmbracoVersion); helper.CreateTable(); helper.CreateTable(); diff --git a/src/Umbraco.Tests/Persistence/SyntaxProvider/SqlCeSyntaxProviderTests.cs b/src/Umbraco.Tests/Persistence/SyntaxProvider/SqlCeSyntaxProviderTests.cs index 1d87bb35e7..a43e912ddf 100644 --- a/src/Umbraco.Tests/Persistence/SyntaxProvider/SqlCeSyntaxProviderTests.cs +++ b/src/Umbraco.Tests/Persistence/SyntaxProvider/SqlCeSyntaxProviderTests.cs @@ -1,10 +1,10 @@ using System; using System.Diagnostics; +using Microsoft.Extensions.Logging; using Moq; using NPoco; using NUnit.Framework; using Umbraco.Core; -using Umbraco.Core.Logging; using Umbraco.Core.Migrations; using Umbraco.Core.Migrations.Expressions.Common.Expressions; using Umbraco.Core.Migrations.Expressions.Create.Index; @@ -99,7 +99,7 @@ WHERE (([umbracoNode].[nodeObjectType] = @0))) x)".Replace(Environment.NewLine, [Test] public void CreateIndexBuilder_SqlServer_NonClustered_CreatesNonClusteredIndex() { - var logger = Mock.Of(); + var logger = Mock.Of>(); var sqlSyntax = new SqlServerSyntaxProvider(); var db = new TestDatabase(DatabaseType.SqlServer2005, sqlSyntax); var context = new MigrationContext(db, logger); @@ -120,7 +120,7 @@ WHERE (([umbracoNode].[nodeObjectType] = @0))) x)".Replace(Environment.NewLine, [Test] public void CreateIndexBuilder_SqlServer_Unique_CreatesUniqueNonClusteredIndex() { - var logger = Mock.Of(); + var logger = Mock.Of>(); var sqlSyntax = new SqlServerSyntaxProvider(); var db = new TestDatabase(DatabaseType.SqlServer2005, sqlSyntax); var context = new MigrationContext(db, logger); @@ -141,7 +141,7 @@ WHERE (([umbracoNode].[nodeObjectType] = @0))) x)".Replace(Environment.NewLine, [Test] public void CreateIndexBuilder_SqlServer_Unique_CreatesUniqueNonClusteredIndex_Multi_Columnn() { - var logger = Mock.Of(); + var logger = Mock.Of>(); var sqlSyntax = new SqlServerSyntaxProvider(); var db = new TestDatabase(DatabaseType.SqlServer2005, sqlSyntax); var context = new MigrationContext(db, logger); @@ -162,7 +162,7 @@ WHERE (([umbracoNode].[nodeObjectType] = @0))) x)".Replace(Environment.NewLine, [Test] public void CreateIndexBuilder_SqlServer_Clustered_CreatesClusteredIndex() { - var logger = Mock.Of(); + var logger = Mock.Of>(); var sqlSyntax = new SqlServerSyntaxProvider(); var db = new TestDatabase(DatabaseType.SqlServer2005, sqlSyntax); var context = new MigrationContext(db, logger); diff --git a/src/Umbraco.Tests/Persistence/UnitOfWorkTests.cs b/src/Umbraco.Tests/Persistence/UnitOfWorkTests.cs index 02ad6b3971..68c11e221d 100644 --- a/src/Umbraco.Tests/Persistence/UnitOfWorkTests.cs +++ b/src/Umbraco.Tests/Persistence/UnitOfWorkTests.cs @@ -13,7 +13,7 @@ namespace Umbraco.Tests.Persistence [Test] public void ReadLockNonExisting() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); Assert.Throws(() => { using (var scope = provider.CreateScope()) @@ -27,7 +27,7 @@ namespace Umbraco.Tests.Persistence [Test] public void ReadLockExisting() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { scope.ReadLock(Constants.Locks.Servers); @@ -38,7 +38,7 @@ namespace Umbraco.Tests.Persistence [Test] public void WriteLockNonExisting() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); Assert.Throws(() => { using (var scope = provider.CreateScope()) @@ -52,7 +52,7 @@ namespace Umbraco.Tests.Persistence [Test] public void WriteLockExisting() { - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { scope.WriteLock(Constants.Locks.Servers); diff --git a/src/Umbraco.Tests/Properties/AssemblyInfo.cs b/src/Umbraco.Tests/Properties/AssemblyInfo.cs index 610ff433ee..ec1ddca2f8 100644 --- a/src/Umbraco.Tests/Properties/AssemblyInfo.cs +++ b/src/Umbraco.Tests/Properties/AssemblyInfo.cs @@ -34,3 +34,8 @@ using System.Runtime.InteropServices; // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")] + +// Internals must be visible to DynamicProxyGenAssembly2 +// in order to mock loggers loggers with types from the assembly +// I.E. Mock.Of>() +[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")] diff --git a/src/Umbraco.Tests/Published/ConvertersTests.cs b/src/Umbraco.Tests/Published/ConvertersTests.cs index c073b93b42..3ddefd9fa5 100644 --- a/src/Umbraco.Tests/Published/ConvertersTests.cs +++ b/src/Umbraco.Tests/Published/ConvertersTests.cs @@ -1,6 +1,8 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -57,10 +59,10 @@ namespace Umbraco.Tests.Published var converters = registerFactory.GetInstance(); var dataTypeServiceMock = new Mock(); - var dataType1 = new DataType(new VoidEditor(Mock.Of(), dataTypeServiceMock.Object, + var dataType1 = new DataType(new VoidEditor(NullLoggerFactory.Instance, dataTypeServiceMock.Object, Mock.Of(), Mock.Of(), Mock.Of())) { Id = 1 }; - var dataType2 = new DataType(new VoidEditor("2", Mock.Of(), Mock.Of(), + var dataType2 = new DataType(new VoidEditor("2", NullLoggerFactory.Instance, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of())) { Id = 2 }; diff --git a/src/Umbraco.Tests/PublishedContent/NuCacheChildrenTests.cs b/src/Umbraco.Tests/PublishedContent/NuCacheChildrenTests.cs index 8c29493318..72f7d0e46c 100644 --- a/src/Umbraco.Tests/PublishedContent/NuCacheChildrenTests.cs +++ b/src/Umbraco.Tests/PublishedContent/NuCacheChildrenTests.cs @@ -3,6 +3,8 @@ using System.Collections.Generic; using System.Data; using System.Linq; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -65,7 +67,7 @@ namespace Umbraco.Tests.PublishedContent Mock.Get(runtime).Setup(x => x.Level).Returns(RuntimeLevel.Run); // create data types, property types and content types - var dataType = new DataType(new VoidEditor("Editor", Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of())) { Id = 3 }; + var dataType = new DataType(new VoidEditor("Editor", NullLoggerFactory.Instance, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of())) { Id = 3 }; var dataTypes = new[] { @@ -151,6 +153,7 @@ namespace Umbraco.Tests.PublishedContent _snapshotAccessor, _variationAccesor, Mock.Of(), + NullLoggerFactory.Instance, scopeProvider.Object, Mock.Of(), Mock.Of(), diff --git a/src/Umbraco.Tests/PublishedContent/NuCacheTests.cs b/src/Umbraco.Tests/PublishedContent/NuCacheTests.cs index 19f91932ce..6b97f4d1ed 100644 --- a/src/Umbraco.Tests/PublishedContent/NuCacheTests.cs +++ b/src/Umbraco.Tests/PublishedContent/NuCacheTests.cs @@ -2,6 +2,8 @@ using System.Collections.Generic; using System.Data; using System.Linq; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -114,7 +116,7 @@ namespace Umbraco.Tests.PublishedContent Mock.Get(runtime).Setup(x => x.Level).Returns(RuntimeLevel.Run); // create data types, property types and content types - var dataType = new DataType(new VoidEditor("Editor", Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of())) { Id = 3 }; + var dataType = new DataType(new VoidEditor("Editor", NullLoggerFactory.Instance, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of())) { Id = 3 }; var dataTypes = new[] { @@ -191,6 +193,7 @@ namespace Umbraco.Tests.PublishedContent new TestPublishedSnapshotAccessor(), _variationAccesor, Mock.Of(), + NullLoggerFactory.Instance, scopeProvider, Mock.Of(), Mock.Of(), diff --git a/src/Umbraco.Tests/PublishedContent/PublishedContentDataTableTests.cs b/src/Umbraco.Tests/PublishedContent/PublishedContentDataTableTests.cs index 2d05a8eda1..9010ed1a6a 100644 --- a/src/Umbraco.Tests/PublishedContent/PublishedContentDataTableTests.cs +++ b/src/Umbraco.Tests/PublishedContent/PublishedContentDataTableTests.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using NUnit.Framework; using Umbraco.Web.Composing; @@ -127,7 +128,7 @@ namespace Umbraco.Tests.PublishedContent private IPublishedContent GetContent(bool createChildren, int indexVals) { var dataTypeService = new TestObjects.TestDataTypeService( - new DataType(new VoidEditor(Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of())) { Id = 1 }); + new DataType(new VoidEditor(NullLoggerFactory.Instance, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of())) { Id = 1 }); var factory = new PublishedContentTypeFactory(Mock.Of(), new PropertyValueConverterCollection(Array.Empty()), dataTypeService); var contentTypeAlias = createChildren ? "Parent" : "Child"; diff --git a/src/Umbraco.Tests/PublishedContent/PublishedContentSnapshotTestBase.cs b/src/Umbraco.Tests/PublishedContent/PublishedContentSnapshotTestBase.cs index 1c70879da1..92e17ec9cd 100644 --- a/src/Umbraco.Tests/PublishedContent/PublishedContentSnapshotTestBase.cs +++ b/src/Umbraco.Tests/PublishedContent/PublishedContentSnapshotTestBase.cs @@ -2,6 +2,8 @@ using System.IO; using System.Linq; using System.Web.Routing; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using Umbraco.Core; using Umbraco.Core.Models.PublishedContent; @@ -46,11 +48,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 logger, IHostingEnvironment hostingEnvironment) + protected override TypeLoader CreateTypeLoader(IIOHelper ioHelper, ITypeFinder typeFinder, IAppPolicyCache runtimeCache, ILogger logger, IProfilingLogger profilingLogger , IHostingEnvironment hostingEnvironment) { - var baseLoader = base.CreateTypeLoader(ioHelper, typeFinder, runtimeCache, logger, hostingEnvironment); + var baseLoader = base.CreateTypeLoader(ioHelper, typeFinder, runtimeCache, logger, profilingLogger , hostingEnvironment); - return new TypeLoader(typeFinder, runtimeCache, new DirectoryInfo(hostingEnvironment.LocalTempPath), logger, false, + return new TypeLoader(typeFinder, runtimeCache, new DirectoryInfo(hostingEnvironment.LocalTempPath), logger, profilingLogger , false, // this is so the model factory looks into the test assembly baseLoader.AssembliesToScan .Union(new[] {typeof(PublishedContentMoreTests).Assembly}) @@ -94,7 +96,7 @@ namespace Umbraco.Tests.PublishedContent private SolidPublishedSnapshot CreatePublishedSnapshot() { var dataTypeService = new TestObjects.TestDataTypeService( - new DataType(new VoidEditor(Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of())) { Id = 1 }); + new DataType(new VoidEditor(NullLoggerFactory.Instance, Mock.Of(), Mock.Of(), Mock.Of(), Mock.Of())) { Id = 1 }); var factory = new PublishedContentTypeFactory(Mock.Of(), new PropertyValueConverterCollection(Array.Empty()), dataTypeService); var caches = new SolidPublishedSnapshot(); diff --git a/src/Umbraco.Tests/PublishedContent/PublishedContentTestBase.cs b/src/Umbraco.Tests/PublishedContent/PublishedContentTestBase.cs index dc23b29c69..058cda093e 100644 --- a/src/Umbraco.Tests/PublishedContent/PublishedContentTestBase.cs +++ b/src/Umbraco.Tests/PublishedContent/PublishedContentTestBase.cs @@ -1,4 +1,6 @@ using System.Collections.Generic; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using Umbraco.Core; using Umbraco.Core.Models.PublishedContent; using Umbraco.Core.PropertyEditors; @@ -44,14 +46,14 @@ namespace Umbraco.Tests.PublishedContent var converters = Factory.GetInstance(); var umbracoContextAccessor = Mock.Of(); var publishedUrlProvider = Mock.Of(); - var logger = Mock.Of(); + var loggerFactory = NullLoggerFactory.Instance; var imageSourceParser = new HtmlImageSourceParser(publishedUrlProvider); - var pastedImages = new RichTextEditorPastedImages(umbracoContextAccessor, logger, IOHelper, Mock.Of(), Mock.Of(), Mock.Of(), ShortStringHelper, publishedUrlProvider); + var pastedImages = new RichTextEditorPastedImages(umbracoContextAccessor, loggerFactory.CreateLogger(), IOHelper, Mock.Of(), Mock.Of(), Mock.Of(), ShortStringHelper, publishedUrlProvider); var localLinkParser = new HtmlLocalLinkParser(umbracoContextAccessor, publishedUrlProvider); var dataTypeService = new TestObjects.TestDataTypeService( new DataType(new RichTextPropertyEditor( - Mock.Of(), + loggerFactory, Mock.Of(), Mock.Of(), Mock.Of(), diff --git a/src/Umbraco.Tests/PublishedContent/PublishedContentTests.cs b/src/Umbraco.Tests/PublishedContent/PublishedContentTests.cs index 53461d4b8f..982be79a33 100644 --- a/src/Umbraco.Tests/PublishedContent/PublishedContentTests.cs +++ b/src/Umbraco.Tests/PublishedContent/PublishedContentTests.cs @@ -2,6 +2,8 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Models.PublishedContent; @@ -46,24 +48,24 @@ namespace Umbraco.Tests.PublishedContent Composition.RegisterUnique(); Composition.RegisterUnique(); - var logger = Mock.Of(); + var loggerFactory = NullLoggerFactory.Instance; var mediaService = Mock.Of(); var mediaFileService = Mock.Of(); var contentTypeBaseServiceProvider = Mock.Of(); var umbracoContextAccessor = Mock.Of(); var publishedUrlProvider = Mock.Of(); var imageSourceParser = new HtmlImageSourceParser(publishedUrlProvider); - var pastedImages = new RichTextEditorPastedImages(umbracoContextAccessor, logger, IOHelper, mediaService, contentTypeBaseServiceProvider, mediaFileService, ShortStringHelper, publishedUrlProvider); + var pastedImages = new RichTextEditorPastedImages(umbracoContextAccessor, loggerFactory.CreateLogger(), IOHelper, mediaService, contentTypeBaseServiceProvider, mediaFileService, ShortStringHelper, publishedUrlProvider); var linkParser = new HtmlLocalLinkParser(umbracoContextAccessor, publishedUrlProvider); var localizationService = Mock.Of(); var dataTypeService = new TestObjects.TestDataTypeService( - new DataType(new VoidEditor(logger, Mock.Of(), localizationService, LocalizedTextService, ShortStringHelper)) { Id = 1 }, - new DataType(new TrueFalsePropertyEditor(logger, Mock.Of(), localizationService, IOHelper, ShortStringHelper, LocalizedTextService)) { Id = 1001 }, - new DataType(new RichTextPropertyEditor(logger,umbracoContextAccessor, Mock.Of(), localizationService, imageSourceParser, linkParser, pastedImages, ShortStringHelper, IOHelper, LocalizedTextService, Mock.Of())) { Id = 1002 }, - new DataType(new IntegerPropertyEditor(logger, Mock.Of(), localizationService, ShortStringHelper, LocalizedTextService)) { Id = 1003 }, - new DataType(new TextboxPropertyEditor(logger, Mock.Of(), localizationService, IOHelper, ShortStringHelper, LocalizedTextService)) { Id = 1004 }, - new DataType(new MediaPickerPropertyEditor(logger, Mock.Of(), localizationService, IOHelper, ShortStringHelper, LocalizedTextService)) { Id = 1005 }); + new DataType(new VoidEditor(loggerFactory, Mock.Of(), localizationService, LocalizedTextService, ShortStringHelper)) { Id = 1 }, + new DataType(new TrueFalsePropertyEditor(loggerFactory, Mock.Of(), localizationService, IOHelper, ShortStringHelper, LocalizedTextService)) { Id = 1001 }, + new DataType(new RichTextPropertyEditor(loggerFactory,umbracoContextAccessor, Mock.Of(), localizationService, imageSourceParser, linkParser, pastedImages, ShortStringHelper, IOHelper, LocalizedTextService, Mock.Of())) { Id = 1002 }, + new DataType(new IntegerPropertyEditor(loggerFactory, Mock.Of(), localizationService, ShortStringHelper, LocalizedTextService)) { Id = 1003 }, + new DataType(new TextboxPropertyEditor(loggerFactory, Mock.Of(), localizationService, IOHelper, ShortStringHelper, LocalizedTextService)) { Id = 1004 }, + new DataType(new MediaPickerPropertyEditor(loggerFactory, Mock.Of(), localizationService, IOHelper, ShortStringHelper, LocalizedTextService)) { Id = 1005 }); Composition.RegisterUnique(f => dataTypeService); } @@ -95,11 +97,11 @@ namespace Umbraco.Tests.PublishedContent } - protected override TypeLoader CreateTypeLoader(IIOHelper ioHelper, ITypeFinder typeFinder, IAppPolicyCache runtimeCache, IProfilingLogger logger, IHostingEnvironment hostingEnvironment) + protected override TypeLoader CreateTypeLoader(IIOHelper ioHelper, ITypeFinder typeFinder, IAppPolicyCache runtimeCache, ILogger logger, IProfilingLogger profilingLogger , IHostingEnvironment hostingEnvironment) { - var baseLoader = base.CreateTypeLoader(ioHelper, typeFinder, runtimeCache, logger, hostingEnvironment); + var baseLoader = base.CreateTypeLoader(ioHelper, typeFinder, runtimeCache, logger, profilingLogger , hostingEnvironment); - return new TypeLoader(typeFinder, runtimeCache, new DirectoryInfo(hostingEnvironment.LocalTempPath), logger, false, + return new TypeLoader(typeFinder, runtimeCache, new DirectoryInfo(hostingEnvironment.LocalTempPath), logger, profilingLogger , 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/PublishedContent/SolidPublishedSnapshot.cs b/src/Umbraco.Tests/PublishedContent/SolidPublishedSnapshot.cs index 0052ebe792..8a47d9b25a 100644 --- a/src/Umbraco.Tests/PublishedContent/SolidPublishedSnapshot.cs +++ b/src/Umbraco.Tests/PublishedContent/SolidPublishedSnapshot.cs @@ -1,19 +1,16 @@ using System; using System.Collections.Generic; -using System.Globalization; using System.Linq; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Web.Composing; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.PublishedContent; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; using Umbraco.Core.Strings; -using Umbraco.Tests.TestHelpers; -using Umbraco.Web; using Umbraco.Web.PublishedCache; namespace Umbraco.Tests.PublishedContent @@ -415,7 +412,7 @@ namespace Umbraco.Tests.PublishedContent static AutoPublishedContentType() { var dataTypeServiceMock = new Mock(); - var dataType = new DataType(new VoidEditor(Mock.Of(), dataTypeServiceMock.Object, + var dataType = new DataType(new VoidEditor(NullLoggerFactory.Instance, dataTypeServiceMock.Object, Mock.Of(), Mock.Of(), Mock.Of())) { Id = 666 }; dataTypeServiceMock.Setup(x => x.GetAll()).Returns(dataType.Yield); diff --git a/src/Umbraco.Tests/Routing/ContentFinderByAliasTests.cs b/src/Umbraco.Tests/Routing/ContentFinderByAliasTests.cs index 09b25a4156..3e3f6163bf 100644 --- a/src/Umbraco.Tests/Routing/ContentFinderByAliasTests.cs +++ b/src/Umbraco.Tests/Routing/ContentFinderByAliasTests.cs @@ -2,6 +2,7 @@ using System.Linq; using Moq; using NUnit.Framework; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Models; using Umbraco.Core.Models.PublishedContent; @@ -50,7 +51,7 @@ namespace Umbraco.Tests.Routing var publishedRouter = CreatePublishedRouter(); var frequest = publishedRouter.CreateRequest(umbracoContext); var lookup = - new ContentFinderByUrlAlias(Logger, Mock.Of(), VariationContextAccessor); + new ContentFinderByUrlAlias(LoggerFactory.CreateLogger(), Mock.Of(), VariationContextAccessor); var result = lookup.TryFindContent(frequest); diff --git a/src/Umbraco.Tests/Routing/ContentFinderByAliasWithDomainsTests.cs b/src/Umbraco.Tests/Routing/ContentFinderByAliasWithDomainsTests.cs index 6dca84a85a..9af04cfb18 100644 --- a/src/Umbraco.Tests/Routing/ContentFinderByAliasWithDomainsTests.cs +++ b/src/Umbraco.Tests/Routing/ContentFinderByAliasWithDomainsTests.cs @@ -1,5 +1,6 @@ using System; using System.Linq; +using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -64,7 +65,7 @@ namespace Umbraco.Tests.Routing if (expectedNode > 0) Assert.AreEqual(expectedCulture, request.Culture.Name); - var finder = new ContentFinderByUrlAlias(Logger, Mock.Of(), VariationContextAccessor); + var finder = new ContentFinderByUrlAlias(LoggerFactory.CreateLogger(), Mock.Of(), VariationContextAccessor); var result = finder.TryFindContent(request); if (expectedNode > 0) diff --git a/src/Umbraco.Tests/Routing/ContentFinderByIdTests.cs b/src/Umbraco.Tests/Routing/ContentFinderByIdTests.cs index 100c398b7f..a21b36dcf5 100644 --- a/src/Umbraco.Tests/Routing/ContentFinderByIdTests.cs +++ b/src/Umbraco.Tests/Routing/ContentFinderByIdTests.cs @@ -1,4 +1,5 @@ using NUnit.Framework; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Configuration.Models; using Umbraco.Tests.TestHelpers; @@ -19,7 +20,7 @@ namespace Umbraco.Tests.Routing var publishedRouter = CreatePublishedRouter(); var frequest = publishedRouter.CreateRequest(umbracoContext); var webRoutingSettings = new WebRoutingSettings(); - var lookup = new ContentFinderByIdPath(Microsoft.Extensions.Options.Options.Create(webRoutingSettings), Logger, Factory.GetInstance()); + var lookup = new ContentFinderByIdPath(Microsoft.Extensions.Options.Options.Create(webRoutingSettings), LoggerFactory.CreateLogger(), Factory.GetInstance()); var result = lookup.TryFindContent(frequest); diff --git a/src/Umbraco.Tests/Routing/ContentFinderByUrlAndTemplateTests.cs b/src/Umbraco.Tests/Routing/ContentFinderByUrlAndTemplateTests.cs index a8a5f68df8..b849b100ea 100644 --- a/src/Umbraco.Tests/Routing/ContentFinderByUrlAndTemplateTests.cs +++ b/src/Umbraco.Tests/Routing/ContentFinderByUrlAndTemplateTests.cs @@ -1,9 +1,10 @@ using NUnit.Framework; +using Microsoft.Extensions.Logging; +using Umbraco.Tests.TestHelpers; +using Umbraco.Web.Routing; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Models; -using Umbraco.Tests.TestHelpers; using Umbraco.Tests.Testing; -using Umbraco.Web.Routing; namespace Umbraco.Tests.Routing { @@ -34,7 +35,7 @@ namespace Umbraco.Tests.Routing var publishedRouter = CreatePublishedRouter(); var frequest = publishedRouter.CreateRequest(umbracoContext); var webRoutingSettings = new WebRoutingSettings(); - var lookup = new ContentFinderByUrlAndTemplate(Logger, ServiceContext.FileService, ServiceContext.ContentTypeService, Microsoft.Extensions.Options.Options.Create(webRoutingSettings)); + var lookup = new ContentFinderByUrlAndTemplate(LoggerFactory.CreateLogger(), ServiceContext.FileService, ServiceContext.ContentTypeService, Microsoft.Extensions.Options.Options.Create(webRoutingSettings)); var result = lookup.TryFindContent(frequest); diff --git a/src/Umbraco.Tests/Routing/ContentFinderByUrlTests.cs b/src/Umbraco.Tests/Routing/ContentFinderByUrlTests.cs index 9564181889..7337d3ebd2 100644 --- a/src/Umbraco.Tests/Routing/ContentFinderByUrlTests.cs +++ b/src/Umbraco.Tests/Routing/ContentFinderByUrlTests.cs @@ -5,6 +5,7 @@ using Umbraco.Core.Configuration.Models; using Umbraco.Tests.TestHelpers; using Umbraco.Tests.Testing; using Umbraco.Web.Routing; +using Microsoft.Extensions.Logging; namespace Umbraco.Tests.Routing { @@ -31,7 +32,7 @@ namespace Umbraco.Tests.Routing var umbracoContext = GetUmbracoContext(urlString, globalSettings:globalSettings, snapshotService: snapshotService); var publishedRouter = CreatePublishedRouter(); var frequest = publishedRouter.CreateRequest(umbracoContext); - var lookup = new ContentFinderByUrl(Logger); + var lookup = new ContentFinderByUrl(LoggerFactory.CreateLogger()); Assert.IsTrue(globalSettings.HideTopLevelNodeFromPath); @@ -65,7 +66,7 @@ namespace Umbraco.Tests.Routing var umbracoContext = GetUmbracoContext(urlString, globalSettings:globalSettings); var publishedRouter = CreatePublishedRouter(); var frequest = publishedRouter.CreateRequest(umbracoContext); - var lookup = new ContentFinderByUrl(Logger); + var lookup = new ContentFinderByUrl(LoggerFactory.CreateLogger()); Assert.IsFalse(globalSettings.HideTopLevelNodeFromPath); @@ -89,7 +90,7 @@ namespace Umbraco.Tests.Routing var umbracoContext = GetUmbracoContext(urlString, globalSettings:globalSettings); var publishedRouter = CreatePublishedRouter(); var frequest = publishedRouter.CreateRequest(umbracoContext); - var lookup = new ContentFinderByUrl(Logger); + var lookup = new ContentFinderByUrl(LoggerFactory.CreateLogger()); var result = lookup.TryFindContent(frequest); @@ -116,7 +117,7 @@ namespace Umbraco.Tests.Routing var publishedRouter = CreatePublishedRouter(); var frequest = publishedRouter.CreateRequest(umbracoContext); frequest.Domain = new DomainAndUri(new Domain(1, "mysite", -1, CultureInfo.CurrentCulture, false), new Uri("http://mysite/")); - var lookup = new ContentFinderByUrl(Logger); + var lookup = new ContentFinderByUrl(LoggerFactory.CreateLogger()); var result = lookup.TryFindContent(frequest); @@ -144,7 +145,7 @@ namespace Umbraco.Tests.Routing var publishedRouter = CreatePublishedRouter(); var frequest = publishedRouter.CreateRequest(umbracoContext); frequest.Domain = new DomainAndUri(new Domain(1, "mysite/æøå", -1, CultureInfo.CurrentCulture, false), new Uri("http://mysite/æøå")); - var lookup = new ContentFinderByUrl(Logger); + var lookup = new ContentFinderByUrl(LoggerFactory.CreateLogger()); var result = lookup.TryFindContent(frequest); diff --git a/src/Umbraco.Tests/Routing/ContentFinderByUrlWithDomainsTests.cs b/src/Umbraco.Tests/Routing/ContentFinderByUrlWithDomainsTests.cs index b7ab02eeff..0acbba1a9b 100644 --- a/src/Umbraco.Tests/Routing/ContentFinderByUrlWithDomainsTests.cs +++ b/src/Umbraco.Tests/Routing/ContentFinderByUrlWithDomainsTests.cs @@ -1,5 +1,6 @@ using Moq; using NUnit.Framework; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Composing; using Umbraco.Core.Configuration; @@ -138,7 +139,7 @@ namespace Umbraco.Tests.Routing // must lookup domain else lookup by url fails publishedRouter.FindDomain(frequest); - var lookup = new ContentFinderByUrl(Logger); + var lookup = new ContentFinderByUrl(LoggerFactory.CreateLogger()); var result = lookup.TryFindContent(frequest); Assert.IsTrue(result); Assert.AreEqual(expectedId, frequest.PublishedContent.Id); @@ -180,7 +181,7 @@ namespace Umbraco.Tests.Routing publishedRouter.FindDomain(frequest); Assert.AreEqual(expectedCulture, frequest.Culture.Name); - var lookup = new ContentFinderByUrl(Logger); + var lookup = new ContentFinderByUrl(LoggerFactory.CreateLogger()); var result = lookup.TryFindContent(frequest); Assert.IsTrue(result); Assert.AreEqual(expectedId, frequest.PublishedContent.Id); diff --git a/src/Umbraco.Tests/Routing/DomainsAndCulturesTests.cs b/src/Umbraco.Tests/Routing/DomainsAndCulturesTests.cs index fd5d12b672..73ca7ba03c 100644 --- a/src/Umbraco.Tests/Routing/DomainsAndCulturesTests.cs +++ b/src/Umbraco.Tests/Routing/DomainsAndCulturesTests.cs @@ -1,9 +1,9 @@ using NUnit.Framework; -using Umbraco.Core; -using Umbraco.Core.Composing; -using Umbraco.Core.Configuration.Models; +using Microsoft.Extensions.Logging; using Umbraco.Core.Models; using Umbraco.Web.Routing; +using Umbraco.Core; +using Umbraco.Core.Configuration.Models; namespace Umbraco.Tests.Routing { @@ -275,7 +275,7 @@ namespace Umbraco.Tests.Routing Assert.AreEqual(expectedCulture, frequest.Culture.Name); - var finder = new ContentFinderByUrl(Logger); + var finder = new ContentFinderByUrl(LoggerFactory.CreateLogger()); var result = finder.TryFindContent(frequest); Assert.IsTrue(result); @@ -322,7 +322,7 @@ namespace Umbraco.Tests.Routing publishedRouter.FindDomain(frequest); // find document - var finder = new ContentFinderByUrl(Logger); + var finder = new ContentFinderByUrl(LoggerFactory.CreateLogger()); var result = finder.TryFindContent(frequest); // apply wildcard domain @@ -377,7 +377,7 @@ namespace Umbraco.Tests.Routing Assert.AreEqual(expectedCulture, frequest.Culture.Name); - var finder = new ContentFinderByUrl(Logger); + var finder = new ContentFinderByUrl(LoggerFactory.CreateLogger()); var result = finder.TryFindContent(frequest); Assert.IsTrue(result); diff --git a/src/Umbraco.Tests/Routing/GetContentUrlsTests.cs b/src/Umbraco.Tests/Routing/GetContentUrlsTests.cs index c2c4c2f05a..c865a0c726 100644 --- a/src/Umbraco.Tests/Routing/GetContentUrlsTests.cs +++ b/src/Umbraco.Tests/Routing/GetContentUrlsTests.cs @@ -10,6 +10,7 @@ using Umbraco.Core.Services; using Umbraco.Tests.Common; using Umbraco.Tests.TestHelpers.Entities; using Umbraco.Web.Routing; +using Microsoft.Extensions.Logging; namespace Umbraco.Tests.Routing { @@ -63,12 +64,12 @@ namespace Umbraco.Tests.Routing var umbContext = GetUmbracoContext("http://localhost:8000"); var publishedRouter = CreatePublishedRouter(Factory, - contentFinders: new ContentFinderCollection(new[] { new ContentFinderByUrl(Logger) })); + contentFinders: new ContentFinderCollection(new[] { new ContentFinderByUrl(LoggerFactory.CreateLogger()) })); var urls = content.GetContentUrls(publishedRouter, umbContext, GetLangService("en-US", "fr-FR"), GetTextService(), ServiceContext.ContentService, VariationContextAccessor, - Logger, + LoggerFactory.CreateLogger(), UriUtility, PublishedUrlProvider).ToList(); @@ -90,7 +91,7 @@ namespace Umbraco.Tests.Routing var umbracoContextAccessor = new TestUmbracoContextAccessor(umbContext); var urlProvider = new DefaultUrlProvider( Microsoft.Extensions.Options.Options.Create(_requestHandlerSettings), - Logger, + LoggerFactory.CreateLogger(), Microsoft.Extensions.Options.Options.Create(_globalSettings), new SiteDomainHelper(), umbracoContextAccessor, UriUtility); @@ -103,12 +104,12 @@ namespace Umbraco.Tests.Routing ); var publishedRouter = CreatePublishedRouter(Factory, - contentFinders:new ContentFinderCollection(new[]{new ContentFinderByUrl(Logger) })); + contentFinders:new ContentFinderCollection(new[]{new ContentFinderByUrl(LoggerFactory.CreateLogger()) })); var urls = content.GetContentUrls(publishedRouter, umbContext, GetLangService("en-US", "fr-FR"), GetTextService(), ServiceContext.ContentService, VariationContextAccessor, - Logger, + LoggerFactory.CreateLogger(), UriUtility, publishedUrlProvider).ToList(); @@ -137,7 +138,7 @@ namespace Umbraco.Tests.Routing var umbracoContextAccessor = new TestUmbracoContextAccessor(umbContext); var urlProvider = new DefaultUrlProvider( Microsoft.Extensions.Options.Options.Create(_requestHandlerSettings), - Logger, + LoggerFactory.CreateLogger(), Microsoft.Extensions.Options.Options.Create(_globalSettings), new SiteDomainHelper(), umbracoContextAccessor, UriUtility); var publishedUrlProvider = new UrlProvider( @@ -149,12 +150,12 @@ namespace Umbraco.Tests.Routing ); var publishedRouter = CreatePublishedRouter(Factory, - contentFinders: new ContentFinderCollection(new[] { new ContentFinderByUrl(Logger) })); + contentFinders: new ContentFinderCollection(new[] { new ContentFinderByUrl(LoggerFactory.CreateLogger()) })); var urls = child.GetContentUrls(publishedRouter, umbContext, GetLangService("en-US", "fr-FR"), GetTextService(), ServiceContext.ContentService, VariationContextAccessor, - Logger, + LoggerFactory.CreateLogger(), UriUtility, publishedUrlProvider ).ToList(); diff --git a/src/Umbraco.Tests/Routing/MediaUrlProviderTests.cs b/src/Umbraco.Tests/Routing/MediaUrlProviderTests.cs index 44bb782291..84d0ea17f6 100644 --- a/src/Umbraco.Tests/Routing/MediaUrlProviderTests.cs +++ b/src/Umbraco.Tests/Routing/MediaUrlProviderTests.cs @@ -1,12 +1,13 @@ using System; using System.Linq; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using Newtonsoft.Json; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Configuration.Models; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.PublishedContent; using Umbraco.Core.PropertyEditors; @@ -32,14 +33,14 @@ namespace Umbraco.Tests.Routing { base.SetUp(); - var logger = Mock.Of(); + var loggerFactory = NullLoggerFactory.Instance; var mediaFileSystemMock = Mock.Of(); var contentSettings = new ContentSettings(); var dataTypeService = Mock.Of(); var propertyEditors = new MediaUrlGeneratorCollection(new IMediaUrlGenerator[] { - new FileUploadPropertyEditor(logger, mediaFileSystemMock, Microsoft.Extensions.Options.Options.Create(contentSettings), dataTypeService, LocalizationService, LocalizedTextService, ShortStringHelper, UploadAutoFillProperties), - new ImageCropperPropertyEditor(logger, mediaFileSystemMock, Microsoft.Extensions.Options.Options.Create(contentSettings), dataTypeService, LocalizationService, IOHelper, ShortStringHelper, LocalizedTextService, UploadAutoFillProperties), + new FileUploadPropertyEditor(loggerFactory, mediaFileSystemMock, Microsoft.Extensions.Options.Options.Create(contentSettings), dataTypeService, LocalizationService, LocalizedTextService, ShortStringHelper, UploadAutoFillProperties), + new ImageCropperPropertyEditor(loggerFactory, mediaFileSystemMock, Microsoft.Extensions.Options.Options.Create(contentSettings), dataTypeService, LocalizationService, IOHelper, ShortStringHelper, LocalizedTextService, UploadAutoFillProperties), }); _mediaUrlProvider = new DefaultMediaUrlProvider(propertyEditors, UriUtility); } @@ -190,7 +191,7 @@ namespace Umbraco.Tests.Routing var propertyValueConverters = new PropertyValueConverterCollection(new IPropertyValueConverter[] { new UploadPropertyConverter(), - new ImageCropperValueConverter(), + new ImageCropperValueConverter(Mock.Of>()), }); var publishedModelFactory = Mock.Of(); diff --git a/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs b/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs index 9ef758db8b..2262499347 100644 --- a/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs +++ b/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs @@ -3,6 +3,8 @@ using System.Linq; using System.Web.Mvc; using System.Web.Routing; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -30,7 +32,6 @@ using Umbraco.Web.Runtime; using Umbraco.Web.WebApi; using ConnectionStrings = Umbraco.Core.Configuration.Models.ConnectionStrings; using Current = Umbraco.Web.Composing.Current; -using ILogger = Umbraco.Core.Logging.ILogger; namespace Umbraco.Tests.Routing { @@ -53,8 +54,8 @@ namespace Umbraco.Tests.Routing public class TestRuntime : CoreRuntime { - public TestRuntime(GlobalSettings globalSettings, ConnectionStrings connectionStrings, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, ILogger logger, IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo) - : base(globalSettings, connectionStrings,umbracoVersion, ioHelper, Mock.Of(), Mock.Of(), new AspNetUmbracoBootPermissionChecker(), hostingEnvironment, backOfficeInfo, TestHelper.DbProviderFactoryCreator, TestHelper.MainDom, TestHelper.GetTypeFinder(), AppCaches.NoCache) + public TestRuntime(GlobalSettings globalSettings, ConnectionStrings connectionStrings, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo) + : base(globalSettings, connectionStrings,umbracoVersion, ioHelper, NullLoggerFactory.Instance, Mock.Of(), new AspNetUmbracoBootPermissionChecker(), hostingEnvironment, backOfficeInfo, TestHelper.DbProviderFactoryCreator, TestHelper.MainDom, TestHelper.GetTypeFinder(), AppCaches.NoCache) { } @@ -110,7 +111,7 @@ namespace Umbraco.Tests.Routing frequest.TemplateModel = template; var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext); - var handler = new RenderRouteHandler(umbracoContext, new TestControllerFactory(umbracoContextAccessor, Mock.Of()), ShortStringHelper); + var handler = new RenderRouteHandler(umbracoContext, new TestControllerFactory(umbracoContextAccessor, Mock.Of>()), ShortStringHelper); handler.GetHandlerForRoute(httpContext.Request.RequestContext, frequest); Assert.AreEqual("RenderMvc", routeData.Values["controller"].ToString()); @@ -151,14 +152,15 @@ namespace Umbraco.Tests.Routing var type = new AutoPublishedContentType(Guid.NewGuid(), 22, "CustomDocument", new PublishedPropertyType[] { }); ContentTypesCache.GetPublishedContentTypeByAlias = alias => type; - var handler = new RenderRouteHandler(umbracoContext, new TestControllerFactory(umbracoContextAccessor, Mock.Of(), context => + var handler = new RenderRouteHandler(umbracoContext, new TestControllerFactory(umbracoContextAccessor, Mock.Of>(), context => { return new CustomDocumentController(Factory.GetInstance>(), umbracoContextAccessor, Factory.GetInstance(), Factory.GetInstance(), - Factory.GetInstance()); + Factory.GetInstance(), + Factory.GetInstance()); }), ShortStringHelper); handler.GetHandlerForRoute(httpContext.Request.RequestContext, frequest); @@ -195,8 +197,8 @@ namespace Umbraco.Tests.Routing /// public class CustomDocumentController : RenderMvcController { - public CustomDocumentController(IOptions globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ServiceContext services, AppCaches appCaches, IProfilingLogger profilingLogger) - : base(globalSettings, umbracoContextAccessor, services, appCaches, profilingLogger) + public CustomDocumentController(IOptions globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ServiceContext services, AppCaches appCaches, IProfilingLogger profilingLogger, ILoggerFactory loggerFactory) + : base(globalSettings, umbracoContextAccessor, services, appCaches, profilingLogger, loggerFactory) { } diff --git a/src/Umbraco.Tests/Routing/UmbracoModuleTests.cs b/src/Umbraco.Tests/Routing/UmbracoModuleTests.cs index 31f627827b..34bde09c37 100644 --- a/src/Umbraco.Tests/Routing/UmbracoModuleTests.cs +++ b/src/Umbraco.Tests/Routing/UmbracoModuleTests.cs @@ -1,10 +1,10 @@ using System; using System.Threading; +using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Configuration.Models; -using Umbraco.Core.Logging; using Umbraco.Tests.Common.Builders; using Umbraco.Tests.TestHelpers; using Umbraco.Web; diff --git a/src/Umbraco.Tests/Routing/UrlProviderWithHideTopLevelNodeFromPathTests.cs b/src/Umbraco.Tests/Routing/UrlProviderWithHideTopLevelNodeFromPathTests.cs index 18e0480a7b..3ef99f203f 100644 --- a/src/Umbraco.Tests/Routing/UrlProviderWithHideTopLevelNodeFromPathTests.cs +++ b/src/Umbraco.Tests/Routing/UrlProviderWithHideTopLevelNodeFromPathTests.cs @@ -1,4 +1,5 @@ using NUnit.Framework; +using Microsoft.Extensions.Logging; using Umbraco.Core.Configuration.Models; using Umbraco.Tests.Common; using Umbraco.Tests.Testing; @@ -45,7 +46,7 @@ namespace Umbraco.Tests.Routing var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext); var urlProvider = new DefaultUrlProvider( Microsoft.Extensions.Options.Options.Create(requestHandlerSettings), - Logger, + LoggerFactory.CreateLogger(), Microsoft.Extensions.Options.Options.Create(_globalSettings), new SiteDomainHelper(), umbracoContextAccessor, UriUtility); var publishedUrlProvider = GetPublishedUrlProvider(umbracoContext, urlProvider); diff --git a/src/Umbraco.Tests/Routing/UrlProviderWithoutHideTopLevelNodeFromPathTests.cs b/src/Umbraco.Tests/Routing/UrlProviderWithoutHideTopLevelNodeFromPathTests.cs index ea64aa43f2..79a946f5e3 100644 --- a/src/Umbraco.Tests/Routing/UrlProviderWithoutHideTopLevelNodeFromPathTests.cs +++ b/src/Umbraco.Tests/Routing/UrlProviderWithoutHideTopLevelNodeFromPathTests.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Globalization; using System.Linq; +using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; using Umbraco.Core.Configuration.Models; @@ -48,7 +49,7 @@ namespace Umbraco.Tests.Routing var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext); var urlProvider = new DefaultUrlProvider( Microsoft.Extensions.Options.Options.Create(requestHandlerSettings), - Logger, + LoggerFactory.CreateLogger(), Microsoft.Extensions.Options.Options.Create(_globalSettings), new SiteDomainHelper(), umbracoContextAccessor, UriUtility); @@ -109,7 +110,7 @@ namespace Umbraco.Tests.Routing var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext); var urlProvider = new DefaultUrlProvider( Microsoft.Extensions.Options.Options.Create(requestHandlerSettings), - Logger, + LoggerFactory.CreateLogger(), Microsoft.Extensions.Options.Options.Create(_globalSettings), new SiteDomainHelper(), umbracoContextAccessor, UriUtility); var publishedUrlProvider = GetPublishedUrlProvider(umbracoContext, urlProvider); @@ -150,7 +151,7 @@ namespace Umbraco.Tests.Routing var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext); var urlProvider = new DefaultUrlProvider( Microsoft.Extensions.Options.Options.Create(requestHandlerSettings), - Logger, + LoggerFactory.CreateLogger(), Microsoft.Extensions.Options.Options.Create(_globalSettings), new SiteDomainHelper(), umbracoContextAccessor, UriUtility); var publishedUrlProvider = GetPublishedUrlProvider(umbracoContext, urlProvider); @@ -205,7 +206,7 @@ namespace Umbraco.Tests.Routing var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext); var urlProvider = new DefaultUrlProvider( Microsoft.Extensions.Options.Options.Create(requestHandlerSettings), - Logger, + LoggerFactory.CreateLogger(), Microsoft.Extensions.Options.Options.Create(_globalSettings), new SiteDomainHelper(), umbracoContextAccessor, UriUtility); @@ -260,7 +261,7 @@ namespace Umbraco.Tests.Routing var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext); var urlProvider = new DefaultUrlProvider( Microsoft.Extensions.Options.Options.Create(requestHandlerSettings), - Logger, + LoggerFactory.CreateLogger(), Microsoft.Extensions.Options.Options.Create(_globalSettings), new SiteDomainHelper(), umbracoContextAccessor, UriUtility); @@ -281,7 +282,7 @@ namespace Umbraco.Tests.Routing var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext); var urlProvider = new DefaultUrlProvider( Microsoft.Extensions.Options.Options.Create(requestHandlerSettings), - Logger, + LoggerFactory.CreateLogger(), Microsoft.Extensions.Options.Options.Create(_globalSettings), new SiteDomainHelper(), umbracoContextAccessor, UriUtility); var publishedUrlProvider = GetPublishedUrlProvider(umbracoContext, urlProvider); @@ -298,7 +299,7 @@ namespace Umbraco.Tests.Routing var requestHandlerSettings = new RequestHandlerSettings(); var urlProvider = new DefaultUrlProvider(Microsoft.Extensions.Options.Options.Create(requestHandlerSettings), - Logger, + LoggerFactory.CreateLogger(), Microsoft.Extensions.Options.Options.Create(_globalSettings), new SiteDomainHelper(), UmbracoContextAccessor, UriUtility); var umbracoContext = GetUmbracoContext("http://example.com/test", 1111, globalSettings: _globalSettings); diff --git a/src/Umbraco.Tests/Routing/UrlsProviderWithDomainsTests.cs b/src/Umbraco.Tests/Routing/UrlsProviderWithDomainsTests.cs index b5142ae480..68c002fea3 100644 --- a/src/Umbraco.Tests/Routing/UrlsProviderWithDomainsTests.cs +++ b/src/Umbraco.Tests/Routing/UrlsProviderWithDomainsTests.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -183,7 +184,7 @@ namespace Umbraco.Tests.Routing var umbracoContext = GetUmbracoContext("/test", 1111, globalSettings: globalSettings); var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext); var urlProvider = new DefaultUrlProvider(Microsoft.Extensions.Options.Options.Create(requestHandlerSettings), - Logger, + LoggerFactory.CreateLogger(), Microsoft.Extensions.Options.Options.Create(globalSettings), new SiteDomainHelper(), umbracoContextAccessor, UriUtility); var publishedUrlProvider = GetPublishedUrlProvider(umbracoContext, urlProvider); @@ -217,7 +218,7 @@ namespace Umbraco.Tests.Routing var umbracoContext = GetUmbracoContext("/test", 1111, globalSettings: globalSettings); var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext); var urlProvider = new DefaultUrlProvider(Microsoft.Extensions.Options.Options.Create(requestHandlerSettings), - Logger, + LoggerFactory.CreateLogger(), Microsoft.Extensions.Options.Options.Create(globalSettings), new SiteDomainHelper(), umbracoContextAccessor, UriUtility); var publishedUrlProvider = GetPublishedUrlProvider(umbracoContext, urlProvider); @@ -243,7 +244,7 @@ namespace Umbraco.Tests.Routing var umbracoContext = GetUmbracoContext("/test", 1111, globalSettings: globalSettings); var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext); var urlProvider = new DefaultUrlProvider(Microsoft.Extensions.Options.Options.Create(requestHandlerSettings), - Logger, + LoggerFactory.CreateLogger(), Microsoft.Extensions.Options.Options.Create(globalSettings), new SiteDomainHelper(), umbracoContextAccessor, UriUtility); var publishedUrlProvider = GetPublishedUrlProvider(umbracoContext, urlProvider); @@ -276,7 +277,7 @@ namespace Umbraco.Tests.Routing var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext); var urlProvider = new DefaultUrlProvider( Microsoft.Extensions.Options.Options.Create(requestHandlerSettings), - Logger, + LoggerFactory.CreateLogger(), Microsoft.Extensions.Options.Options.Create(globalSettings), new SiteDomainHelper(), umbracoContextAccessor, UriUtility); var publishedUrlProvider = GetPublishedUrlProvider(umbracoContext, urlProvider); @@ -299,7 +300,7 @@ namespace Umbraco.Tests.Routing var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext); var urlProvider = new DefaultUrlProvider( Microsoft.Extensions.Options.Options.Create(requestHandlerSettings), - Logger, + LoggerFactory.CreateLogger(), Microsoft.Extensions.Options.Options.Create(globalSettings), new SiteDomainHelper(), umbracoContextAccessor, UriUtility); var publishedUrlProvider = GetPublishedUrlProvider(umbracoContext, urlProvider); @@ -364,7 +365,7 @@ namespace Umbraco.Tests.Routing var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext); var urlProvider = new DefaultUrlProvider( Microsoft.Extensions.Options.Options.Create(requestHandlerSettings), - Logger, + LoggerFactory.CreateLogger(), Microsoft.Extensions.Options.Options.Create(globalSettings), new SiteDomainHelper(), umbracoContextAccessor, UriUtility); var publishedUrlProvider = GetPublishedUrlProvider(umbracoContext, urlProvider); @@ -390,7 +391,7 @@ namespace Umbraco.Tests.Routing var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext); var urlProvider = new DefaultUrlProvider( Microsoft.Extensions.Options.Options.Create(requestHandlerSettings), - Logger, + LoggerFactory.CreateLogger(), Microsoft.Extensions.Options.Options.Create(globalSettings), new SiteDomainHelper(), umbracoContextAccessor, UriUtility); var publishedUrlProvider = GetPublishedUrlProvider(umbracoContext, urlProvider); diff --git a/src/Umbraco.Tests/Routing/UrlsWithNestedDomains.cs b/src/Umbraco.Tests/Routing/UrlsWithNestedDomains.cs index d4fac0cf9b..81fe22a698 100644 --- a/src/Umbraco.Tests/Routing/UrlsWithNestedDomains.cs +++ b/src/Umbraco.Tests/Routing/UrlsWithNestedDomains.cs @@ -2,6 +2,7 @@ using System.Linq; using Moq; using NUnit.Framework; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Models; @@ -44,7 +45,7 @@ namespace Umbraco.Tests.Routing var umbracoContextAccessor = new TestUmbracoContextAccessor(umbracoContext); var urlProvider = new DefaultUrlProvider( Microsoft.Extensions.Options.Options.Create(requestHandlerSettings), - Logger, + LoggerFactory.CreateLogger(), Microsoft.Extensions.Options.Options.Create(globalSettings), new SiteDomainHelper(), umbracoContextAccessor, UriUtility); var publishedUrlProvider = GetPublishedUrlProvider(umbracoContext, urlProvider); @@ -65,7 +66,7 @@ namespace Umbraco.Tests.Routing Assert.IsTrue(frequest.HasDomain); // check that it's been routed - var lookup = new ContentFinderByUrl(Logger); + var lookup = new ContentFinderByUrl(LoggerFactory.CreateLogger()); var result = lookup.TryFindContent(frequest); Assert.IsTrue(result); Assert.AreEqual(100111, frequest.PublishedContent.Id); diff --git a/src/Umbraco.Tests/Runtimes/CoreRuntimeTests.cs b/src/Umbraco.Tests/Runtimes/CoreRuntimeTests.cs index 045ed2e3e8..ea111a1e29 100644 --- a/src/Umbraco.Tests/Runtimes/CoreRuntimeTests.cs +++ b/src/Umbraco.Tests/Runtimes/CoreRuntimeTests.cs @@ -2,6 +2,8 @@ using System.Collections.Generic; using Examine; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -69,7 +71,6 @@ namespace Umbraco.Tests.Runtimes Assert.IsTrue(TestComponent.Ctored); Assert.IsNotNull(TestComponent.ProfilingLogger); Assert.IsInstanceOf(TestComponent.ProfilingLogger); - Assert.IsInstanceOf(((ProfilingLogger) TestComponent.ProfilingLogger).Logger); // note: components are NOT disposed after boot @@ -83,32 +84,32 @@ namespace Umbraco.Tests.Runtimes // test application public class TestUmbracoApplication : UmbracoApplicationBase { - public TestUmbracoApplication() : base(_logger, + public TestUmbracoApplication() : base(new NullLogger(), + NullLoggerFactory.Instance, new SecuritySettings(), new GlobalSettings(), new ConnectionStrings(), - _ioHelper, _profiler, new AspNetHostingEnvironment(Options.Create(new HostingSettings())), new AspNetBackOfficeInfo(_globalSettings, _ioHelper, _logger, Options.Create(new WebRoutingSettings()))) + _ioHelper, _profiler, new AspNetHostingEnvironment(Options.Create(new HostingSettings())), new AspNetBackOfficeInfo(_globalSettings, _ioHelper, new NullLogger(), Options.Create(new WebRoutingSettings()))) { } - private static readonly DebugDiagnosticsLogger _logger = new DebugDiagnosticsLogger(new MessageTemplates()); private static readonly IIOHelper _ioHelper = TestHelper.IOHelper; private static readonly IProfiler _profiler = new TestProfiler(); private static readonly GlobalSettings _globalSettings = new GlobalSettings(); public IRuntime Runtime { get; private set; } - protected override IRuntime GetRuntime(GlobalSettings globalSettings, ConnectionStrings connectionStrings, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, ILogger logger, IProfiler profiler, IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo) + protected override IRuntime GetRuntime(GlobalSettings globalSettings, ConnectionStrings connectionStrings, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, ILogger logger, ILoggerFactory loggerFactory, IProfiler profiler, IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo) { - return Runtime = new TestRuntime(globalSettings, connectionStrings, umbracoVersion, ioHelper, logger, profiler, hostingEnvironment, backOfficeInfo); + return Runtime = new TestRuntime(globalSettings, connectionStrings, umbracoVersion, ioHelper, logger, loggerFactory, profiler, hostingEnvironment, backOfficeInfo); } } // test runtime public class TestRuntime : CoreRuntime { - public TestRuntime(GlobalSettings globalSettings, ConnectionStrings connectionStrings, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, ILogger logger, IProfiler profiler, IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo) - :base(globalSettings, connectionStrings,umbracoVersion, ioHelper, logger, profiler, new AspNetUmbracoBootPermissionChecker(), hostingEnvironment, backOfficeInfo, TestHelper.DbProviderFactoryCreator, TestHelper.MainDom, TestHelper.GetTypeFinder(), AppCaches.NoCache) + public TestRuntime(GlobalSettings globalSettings, ConnectionStrings connectionStrings, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, ILogger logger, ILoggerFactory loggerFactory, IProfiler profiler, IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo) + :base(globalSettings, connectionStrings,umbracoVersion, ioHelper, loggerFactory, profiler, new AspNetUmbracoBootPermissionChecker(), hostingEnvironment, backOfficeInfo, TestHelper.DbProviderFactoryCreator, TestHelper.MainDom, TestHelper.GetTypeFinder(), AppCaches.NoCache) { } @@ -127,6 +128,8 @@ namespace Umbraco.Tests.Runtimes { container.Register(Lifetime.Singleton); container.Register(Lifetime.Singleton); + container.Register(typeof(ILogger<>), typeof(Logger<>), Lifetime.Singleton); + var factory = base.Configure(container); return factory; diff --git a/src/Umbraco.Tests/Runtimes/StandaloneTests.cs b/src/Umbraco.Tests/Runtimes/StandaloneTests.cs index aee0275fe0..e5594a0778 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; @@ -61,31 +62,31 @@ 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); - var profilingLogger = new ProfilingLogger(logger, profiler); + var profiler = new LogProfiler(loggerFactory.CreateLogger()); + var profilingLogger = new ProfilingLogger(loggerFactory.CreateLogger("ProfilingLogger"), profiler); var appCaches = AppCaches.Disabled; var globalSettings = new GlobalSettings(); var connectionStrings = new ConnectionStrings(); var typeFinder = TestHelper.GetTypeFinder(); - var databaseFactory = new UmbracoDatabaseFactory(logger, Options.Create(globalSettings), Options.Create(connectionStrings), new Lazy(() => factory.GetInstance()), TestHelper.DbProviderFactoryCreator); + var databaseFactory = new UmbracoDatabaseFactory(loggerFactory.CreateLogger(), loggerFactory, Options.Create(globalSettings), Options.Create(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(), profilingLogger); var mainDom = new SimpleMainDom(); var umbracoVersion = TestHelper.GetUmbracoVersion(); var backOfficeInfo = TestHelper.GetBackOfficeInfo(); - var runtimeState = new RuntimeState(globalSettings, umbracoVersion, databaseFactory, logger); + var runtimeState = new RuntimeState(globalSettings, umbracoVersion, databaseFactory, loggerFactory.CreateLogger()); var variationContextAccessor = TestHelper.VariationContextAccessor; // create the register and the composition var register = TestHelper.GetRegister(); var composition = new Composition(register, typeLoader, profilingLogger, runtimeState, ioHelper, appCaches); - composition.RegisterEssentials(logger, profiler, profilingLogger, mainDom, appCaches, databaseFactory, typeLoader, runtimeState, typeFinder, ioHelper, umbracoVersion, TestHelper.DbProviderFactoryCreator, hostingEnvironment, backOfficeInfo); + composition.RegisterEssentials(loggerFactory.CreateLogger("Essentials"), loggerFactory, 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(globalSettings, connectionStrings, umbracoVersion, ioHelper, logger, profiler, new AspNetUmbracoBootPermissionChecker(), hostingEnvironment, backOfficeInfo, TestHelper.DbProviderFactoryCreator, TestHelper.MainDom, typeFinder, AppCaches.NoCache); + var coreRuntime = new CoreRuntime(globalSettings, connectionStrings, umbracoVersion, ioHelper, loggerFactory, profiler, new AspNetUmbracoBootPermissionChecker(), hostingEnvironment, backOfficeInfo, TestHelper.DbProviderFactoryCreator, TestHelper.MainDom, typeFinder, AppCaches.NoCache); // determine actual runtime level runtimeState.DetermineRuntimeLevel(); @@ -96,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(), profilingLogger); composers.Compose(); // must registers stuff that WebRuntimeComponent would register otherwise @@ -179,7 +180,7 @@ namespace Umbraco.Tests.Runtimes var scopeProvider = factory.GetInstance(); using (var scope = scopeProvider.CreateScope()) { - var creator = new DatabaseSchemaCreator(scope.Database, logger, umbracoVersion); + var creator = new DatabaseSchemaCreator(scope.Database, loggerFactory.CreateLogger(), loggerFactory, umbracoVersion); creator.InitializeDatabaseSchema(); scope.Complete(); } @@ -271,14 +272,14 @@ namespace Umbraco.Tests.Runtimes // - assigning the factory to Current.Factory // create the very basic and essential things we need - var logger = new ConsoleLogger(new MessageTemplates()); + var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole()); var profiler = Mock.Of(); - var profilingLogger = new ProfilingLogger(logger, profiler); + var profilingLogger = new ProfilingLogger(loggerFactory.CreateLogger("ProfilingLogger"), 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")), profilingLogger); + var typeLoader = new TypeLoader(typeFinder, appCaches.RuntimeCache, new DirectoryInfo(ioHelper.MapPath("~/App_Data/TEMP")), loggerFactory.CreateLogger(), profilingLogger); var runtimeState = Mock.Of(); var hostingEnvironment = Mock.Of(); var backOfficeInfo = TestHelper.GetBackOfficeInfo(); @@ -290,13 +291,13 @@ namespace Umbraco.Tests.Runtimes var register = TestHelper.GetRegister(); var composition = new Composition(register, typeLoader, profilingLogger, runtimeState, ioHelper, appCaches); var umbracoVersion = TestHelper.GetUmbracoVersion(); - composition.RegisterEssentials(logger, profiler, profilingLogger, mainDom, appCaches, databaseFactory, typeLoader, runtimeState, typeFinder, ioHelper, umbracoVersion, TestHelper.DbProviderFactoryCreator, hostingEnvironment, backOfficeInfo); + composition.RegisterEssentials(loggerFactory.CreateLogger("RegisterEssentials"), loggerFactory, profiler, profilingLogger, mainDom, appCaches, databaseFactory, typeLoader, runtimeState, typeFinder, ioHelper, umbracoVersion, TestHelper.DbProviderFactoryCreator, hostingEnvironment, backOfficeInfo); // create the core runtime and have it compose itself var globalSettings = new GlobalSettings(); var connectionStrings = new ConnectionStrings(); - var coreRuntime = new CoreRuntime(globalSettings, connectionStrings, umbracoVersion, ioHelper, logger, profiler, new AspNetUmbracoBootPermissionChecker(), hostingEnvironment, backOfficeInfo, TestHelper.DbProviderFactoryCreator, TestHelper.MainDom, typeFinder, AppCaches.NoCache); + var coreRuntime = new CoreRuntime(globalSettings, connectionStrings, umbracoVersion, ioHelper, loggerFactory, profiler, new AspNetUmbracoBootPermissionChecker(), hostingEnvironment, backOfficeInfo, TestHelper.DbProviderFactoryCreator, TestHelper.MainDom, typeFinder, AppCaches.NoCache); // get the components // all of them? @@ -306,7 +307,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(), profilingLogger); // get components to compose themselves composers.Compose(); diff --git a/src/Umbraco.Tests/Scheduling/BackgroundTaskRunnerTests.cs b/src/Umbraco.Tests/Scheduling/BackgroundTaskRunnerTests.cs index 2291584f66..f0a9721b08 100644 --- a/src/Umbraco.Tests/Scheduling/BackgroundTaskRunnerTests.cs +++ b/src/Umbraco.Tests/Scheduling/BackgroundTaskRunnerTests.cs @@ -4,10 +4,10 @@ using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; +using Microsoft.Extensions.Logging; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Hosting; -using Umbraco.Core.Logging; using Umbraco.Tests.TestHelpers; using Umbraco.Web.Scheduling; @@ -18,20 +18,24 @@ namespace Umbraco.Tests.Scheduling [Category("Slow")] public class BackgroundTaskRunnerTests { - private ILogger _logger; + private ILoggerFactory _loggerFactory; + private ILogger> _backgroundTaskLogger; + private ILogger> _baseTaskLogger; private IApplicationShutdownRegistry _hostingEnvironment; [OneTimeSetUp] public void InitializeFixture() { - _logger = new ConsoleLogger(new MessageTemplates()); + _loggerFactory = LoggerFactory.Create(builder => builder.AddDebug()); + _backgroundTaskLogger = _loggerFactory.CreateLogger>(); + _baseTaskLogger = _loggerFactory.CreateLogger>(); _hostingEnvironment = TestHelper.GetHostingEnvironmentLifetime(); } [Test] public async Task ShutdownWhenRunningWithWait() { - using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _logger, _hostingEnvironment)) + using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _backgroundTaskLogger, _hostingEnvironment)) { var stopped = false; runner.Stopped += (sender, args) => { stopped = true; }; @@ -54,7 +58,7 @@ namespace Umbraco.Tests.Scheduling [Test] public async Task ShutdownWhenRunningWithoutWait() { - using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _logger, _hostingEnvironment)) + using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _backgroundTaskLogger, _hostingEnvironment)) { var stopped = false; runner.Stopped += (sender, args) => { stopped = true; }; @@ -81,7 +85,7 @@ namespace Umbraco.Tests.Scheduling [Test] public async Task ShutdownCompletesTheRunner() { - using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _logger, _hostingEnvironment)) + using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _backgroundTaskLogger, _hostingEnvironment)) { Assert.IsFalse(runner.IsRunning); // because AutoStart is false @@ -104,7 +108,7 @@ namespace Umbraco.Tests.Scheduling [Test] public async Task ShutdownFlushesTheQueue() { - using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _logger, _hostingEnvironment)) + using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _backgroundTaskLogger, _hostingEnvironment)) { MyTask t1, t2, t3; @@ -126,7 +130,7 @@ namespace Umbraco.Tests.Scheduling [Test] public async Task ShutdownForceTruncatesTheQueue() { - using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _logger, _hostingEnvironment)) + using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _backgroundTaskLogger, _hostingEnvironment)) { MyTask t1, t2, t3; @@ -153,7 +157,7 @@ namespace Umbraco.Tests.Scheduling [Test] public async Task ShutdownThenForce() { - using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _logger, _hostingEnvironment)) + using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _backgroundTaskLogger, _hostingEnvironment)) { Assert.IsFalse(runner.IsRunning); // because AutoStart is false @@ -188,7 +192,7 @@ namespace Umbraco.Tests.Scheduling [Test] public async Task HostingStopNonImmediate() { - using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _logger, _hostingEnvironment)) + using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _backgroundTaskLogger, _hostingEnvironment)) { MyTask t; @@ -222,7 +226,7 @@ namespace Umbraco.Tests.Scheduling [Test] public async Task HostingStopImmediate() { - using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _logger, _hostingEnvironment)) + using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _backgroundTaskLogger, _hostingEnvironment)) { MyTask t; @@ -257,7 +261,7 @@ namespace Umbraco.Tests.Scheduling [Test] public void Create_IsNotRunning() { - using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _logger, _hostingEnvironment)) + using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _backgroundTaskLogger, _hostingEnvironment)) { Assert.IsFalse(runner.IsRunning); } @@ -271,7 +275,7 @@ namespace Umbraco.Tests.Scheduling { AutoStart = true, KeepAlive = true // else stops! - }, _logger, _hostingEnvironment)) + }, _backgroundTaskLogger, _hostingEnvironment)) { Assert.IsTrue(runner.IsRunning); // because AutoStart is true await runner.StopInternal(false); // keepalive = must be stopped @@ -281,7 +285,7 @@ namespace Umbraco.Tests.Scheduling [Test] public void Create_AutoStartAndKeepAlive_IsRunning() { - using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions { AutoStart = true, KeepAlive = true }, _logger, _hostingEnvironment)) + using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions { AutoStart = true, KeepAlive = true }, _backgroundTaskLogger, _hostingEnvironment)) { Assert.IsTrue(runner.IsRunning); // because AutoStart is true Thread.Sleep(800); // for long @@ -294,7 +298,7 @@ namespace Umbraco.Tests.Scheduling public async Task Dispose_IsRunning() { BackgroundTaskRunner runner; - using (runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions { AutoStart = true, KeepAlive = true }, _logger, _hostingEnvironment)) + using (runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions { AutoStart = true, KeepAlive = true }, _backgroundTaskLogger, _hostingEnvironment)) { Assert.IsTrue(runner.IsRunning); // dispose will stop it @@ -318,7 +322,7 @@ namespace Umbraco.Tests.Scheduling [Test] public void Startup_KeepAlive_IsRunning() { - using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions { KeepAlive = true }, _logger, _hostingEnvironment)) + using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions { KeepAlive = true }, _backgroundTaskLogger, _hostingEnvironment)) { Assert.IsFalse(runner.IsRunning); runner.StartUp(); @@ -330,7 +334,7 @@ namespace Umbraco.Tests.Scheduling [Test] public async Task Create_AddTask_IsRunning() { - using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _logger, _hostingEnvironment)) + using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _baseTaskLogger, _hostingEnvironment)) { var waitHandle = new ManualResetEvent(false); runner.TaskCompleted += (sender, args) => @@ -348,7 +352,7 @@ namespace Umbraco.Tests.Scheduling [Test] public void Create_KeepAliveAndAddTask_IsRunning() { - using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions { KeepAlive = true }, _logger, _hostingEnvironment)) + using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions { KeepAlive = true }, _baseTaskLogger, _hostingEnvironment)) { var waitHandle = new ManualResetEvent(false); runner.TaskCompleted += (sender, args) => @@ -366,7 +370,7 @@ namespace Umbraco.Tests.Scheduling [Test] public async Task WaitOnRunner_OneTask() { - using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _logger, _hostingEnvironment)) + using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _baseTaskLogger, _hostingEnvironment)) { var task = new MyTask(); Assert.IsTrue(task.Ended == default(DateTime)); @@ -385,7 +389,7 @@ namespace Umbraco.Tests.Scheduling for (var i = 0; i < 10; i++) tasks.Add(new MyTask()); - using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions { KeepAlive = false, LongRunning = true, PreserveRunningTask = true }, _logger, _hostingEnvironment)) + using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions { KeepAlive = false, LongRunning = true, PreserveRunningTask = true }, _baseTaskLogger, _hostingEnvironment)) { tasks.ForEach(runner.Add); @@ -403,7 +407,7 @@ namespace Umbraco.Tests.Scheduling [Test] public async Task WaitOnTask() { - using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _logger, _hostingEnvironment)) + using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _baseTaskLogger, _hostingEnvironment)) { var task = new MyTask(); var waitHandle = new ManualResetEvent(false); @@ -423,7 +427,7 @@ namespace Umbraco.Tests.Scheduling for (var i = 0; i < 10; i++) tasks.Add(new MyTask(), new ManualResetEvent(false)); - using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _logger, _hostingEnvironment)) + using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _baseTaskLogger, _hostingEnvironment)) { runner.TaskCompleted += (sender, task) => tasks[task.Task].Set(); foreach (var t in tasks) runner.Add(t.Key); @@ -452,7 +456,7 @@ namespace Umbraco.Tests.Scheduling IDictionary tasks = getTasks(); BackgroundTaskRunner tManager; - using (tManager = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions { LongRunning = true, KeepAlive = true }, _logger, _hostingEnvironment)) + using (tManager = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions { LongRunning = true, KeepAlive = true }, _baseTaskLogger, _hostingEnvironment)) { tManager.TaskCompleted += (sender, task) => tasks[task.Task].Set(); @@ -498,7 +502,7 @@ namespace Umbraco.Tests.Scheduling List tasks = getTasks(); - using (var tManager = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions { LongRunning = true, PreserveRunningTask = true }, _logger, _hostingEnvironment)) + using (var tManager = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions { LongRunning = true, PreserveRunningTask = true }, _baseTaskLogger, _hostingEnvironment)) { tasks.ForEach(tManager.Add); @@ -540,7 +544,7 @@ namespace Umbraco.Tests.Scheduling { var runCount = 0; var waitHandle = new ManualResetEvent(false); - using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _logger, _hostingEnvironment)) + using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _backgroundTaskLogger, _hostingEnvironment)) { runner.TaskCompleted += (sender, args) => { @@ -571,7 +575,7 @@ namespace Umbraco.Tests.Scheduling [Test] public async Task LatchedTaskRuns() { - using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _logger, _hostingEnvironment)) + using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _backgroundTaskLogger, _hostingEnvironment)) { var task = new MyLatchedTask(200, false); runner.Add(task); @@ -591,7 +595,7 @@ namespace Umbraco.Tests.Scheduling [Test] public async Task LatchedTaskStops_Runs_On_Shutdown() { - using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _logger, _hostingEnvironment)) + using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _backgroundTaskLogger, _hostingEnvironment)) { var task = new MyLatchedTask(200, true); runner.Add(task); @@ -611,7 +615,7 @@ namespace Umbraco.Tests.Scheduling { var runCount = 0; var waitHandle = new ManualResetEvent(false); - using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _logger, _hostingEnvironment)) + using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _backgroundTaskLogger, _hostingEnvironment)) { runner.TaskCompleted += (sender, args) => { @@ -638,7 +642,7 @@ namespace Umbraco.Tests.Scheduling [Test] public async Task FailingTaskSync() { - using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _logger, _hostingEnvironment)) + using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _backgroundTaskLogger, _hostingEnvironment)) { var exceptions = new ConcurrentQueue(); runner.TaskError += (sender, args) => exceptions.Enqueue(args.Exception); @@ -655,7 +659,7 @@ namespace Umbraco.Tests.Scheduling [Test] public async Task FailingTaskDisposing() { - using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _logger, _hostingEnvironment)) + using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _backgroundTaskLogger, _hostingEnvironment)) { var exceptions = new ConcurrentQueue(); runner.TaskError += (sender, args) => exceptions.Enqueue(args.Exception); @@ -672,7 +676,7 @@ namespace Umbraco.Tests.Scheduling [Test] public async Task FailingTaskAsync() { - using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _logger, _hostingEnvironment)) + using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _backgroundTaskLogger, _hostingEnvironment)) { var exceptions = new ConcurrentQueue(); runner.TaskError += (sender, args) => exceptions.Enqueue(args.Exception); @@ -688,7 +692,7 @@ namespace Umbraco.Tests.Scheduling [Test] public async Task FailingTaskDisposingAsync() { - using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _logger, _hostingEnvironment)) + using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _backgroundTaskLogger, _hostingEnvironment)) { var exceptions = new ConcurrentQueue(); runner.TaskError += (sender, args) => exceptions.Enqueue(args.Exception); @@ -705,7 +709,7 @@ namespace Umbraco.Tests.Scheduling [Test] public async Task CancelAsyncTask() { - using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _logger, _hostingEnvironment)) + using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _backgroundTaskLogger, _hostingEnvironment)) { var task = new MyAsyncTask(4000); runner.Add(task); @@ -721,7 +725,7 @@ namespace Umbraco.Tests.Scheduling [Test] public async Task CancelLatchedTask() { - using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _logger, _hostingEnvironment)) + using (var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions(), _backgroundTaskLogger, _hostingEnvironment)) { var task = new MyLatchedTask(4000, false); runner.Add(task); @@ -934,7 +938,7 @@ namespace Umbraco.Tests.Scheduling [Test] public void SourceTaskTest() { - var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions { KeepAlive = true, LongRunning = true }, _logger, TestHelper.GetHostingEnvironmentLifetime()); + var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions { KeepAlive = true, LongRunning = true }, _backgroundTaskLogger, TestHelper.GetHostingEnvironmentLifetime()); var task = new SourceTask(); runner.Add(task); diff --git a/src/Umbraco.Tests/Scheduling/BackgroundTaskRunnerTests2.cs b/src/Umbraco.Tests/Scheduling/BackgroundTaskRunnerTests2.cs index 01169abce2..c2860b57d0 100644 --- a/src/Umbraco.Tests/Scheduling/BackgroundTaskRunnerTests2.cs +++ b/src/Umbraco.Tests/Scheduling/BackgroundTaskRunnerTests2.cs @@ -2,8 +2,9 @@ using System.Diagnostics; using System.Threading; using System.Threading.Tasks; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using NUnit.Framework; -using Umbraco.Core.Logging; using Umbraco.Tests.TestHelpers; using Umbraco.Web.Scheduling; @@ -13,6 +14,7 @@ namespace Umbraco.Tests.Scheduling [Timeout(60000)] public class BackgroundTaskRunnerTests2 { + private static ILoggerFactory _loggerFactory = NullLoggerFactory.Instance; // this tests was used to debug a background task runner issue that was unearthed by Deploy, // where work items would never complete under certain circumstances, due to threading issues. // (fixed now) @@ -21,8 +23,7 @@ namespace Umbraco.Tests.Scheduling [Timeout(4000)] public async Task ThreadResumeIssue() { - var logger = new DebugDiagnosticsLogger(new MessageTemplates()); - var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions { KeepAlive = true, LongRunning = true }, logger, TestHelper.GetHostingEnvironmentLifetime()); + var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions { KeepAlive = true, LongRunning = true }, _loggerFactory.CreateLogger>(), TestHelper.GetHostingEnvironmentLifetime()); var work = new ThreadResumeIssueWorkItem(); runner.Add(work); @@ -76,8 +77,7 @@ namespace Umbraco.Tests.Scheduling [Ignore("Only runs in the debugger.")] public async Task DebuggerInterferenceIssue() { - var logger = new DebugDiagnosticsLogger(new MessageTemplates()); - var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions { KeepAlive = true, LongRunning = true }, logger, TestHelper.GetHostingEnvironmentLifetime()); + var runner = new BackgroundTaskRunner(new BackgroundTaskRunnerOptions { KeepAlive = true, LongRunning = true }, _loggerFactory.CreateLogger>(), TestHelper.GetHostingEnvironmentLifetime()); var taskCompleted = false; runner.TaskCompleted += (sender, args) => { diff --git a/src/Umbraco.Tests/Scoping/ScopeEventDispatcherTests.cs b/src/Umbraco.Tests/Scoping/ScopeEventDispatcherTests.cs index 03e6ab336c..ebfb9da8b3 100644 --- a/src/Umbraco.Tests/Scoping/ScopeEventDispatcherTests.cs +++ b/src/Umbraco.Tests/Scoping/ScopeEventDispatcherTests.cs @@ -1,5 +1,7 @@ using System; using System.Linq; +using Microsoft.Extensions.Logging.Abstractions; +using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -39,7 +41,7 @@ namespace Umbraco.Tests.Scoping _testObjects = new TestObjects(register); var globalSettings = new GlobalSettings(); - composition.RegisterUnique(factory => new FileSystems(factory, factory.TryGetInstance(), TestHelper.IOHelper, Microsoft.Extensions.Options.Options.Create(globalSettings), TestHelper.GetHostingEnvironment())); + composition.RegisterUnique(factory => new FileSystems(factory, factory.TryGetInstance>(), factory.TryGetInstance(), TestHelper.IOHelper, Microsoft.Extensions.Options.Options.Create(globalSettings), TestHelper.GetHostingEnvironment())); composition.WithCollectionBuilder(); Current.Reset(); @@ -68,7 +70,7 @@ namespace Umbraco.Tests.Scoping DoThing1 += (sender, args) => { counter1++; if (cancel) args.Cancel = true; }; DoThing2 += (sender, args) => { counter2++; }; - var scopeProvider = _testObjects.GetScopeProvider(Mock.Of()); + var scopeProvider = _testObjects.GetScopeProvider(NullLoggerFactory.Instance); using (var scope = scopeProvider.CreateScope(eventDispatcher: passive ? new PassiveEventDispatcher() : null)) { var cancelled = scope.Events.DispatchCancelable(DoThing1, this, new SaveEventArgs("test")); @@ -97,7 +99,7 @@ namespace Umbraco.Tests.Scoping DoThing2 += OnDoThingFail; DoThing3 += OnDoThingFail; - var scopeProvider = _testObjects.GetScopeProvider(Mock.Of()); + var scopeProvider = _testObjects.GetScopeProvider(NullLoggerFactory.Instance); using (var scope = scopeProvider.CreateScope(eventDispatcher: new PassiveEventDispatcher())) { scope.Events.Dispatch(DoThing1, this, new SaveEventArgs("test")); @@ -139,7 +141,7 @@ namespace Umbraco.Tests.Scoping var content3 = MockedContent.CreateBasicContent(contentType); content3.Id = 789; - var scopeProvider = _testObjects.GetScopeProvider(Mock.Of()); + var scopeProvider = _testObjects.GetScopeProvider(NullLoggerFactory.Instance); using (var scope = scopeProvider.CreateScope(eventDispatcher: new PassiveEventDispatcher())) { @@ -178,7 +180,7 @@ namespace Umbraco.Tests.Scoping var contentService = Mock.Of(); var content = Mock.Of(); - var scopeProvider = _testObjects.GetScopeProvider(Mock.Of()); + var scopeProvider = _testObjects.GetScopeProvider(NullLoggerFactory.Instance); using (var scope = scopeProvider.CreateScope(eventDispatcher: new PassiveEventDispatcher())) { scope.Events.Dispatch(Test_Unpublished, contentService, new PublishEventArgs(new [] { content }), "Unpublished"); @@ -212,7 +214,7 @@ namespace Umbraco.Tests.Scoping content3.Id = 123; content3.UpdateDate = now.AddMinutes(3); - var scopeProvider = _testObjects.GetScopeProvider(Mock.Of()); + var scopeProvider = _testObjects.GetScopeProvider(NullLoggerFactory.Instance); using (var scope = scopeProvider.CreateScope(eventDispatcher: new PassiveEventDispatcher())) { scope.Events.Dispatch(DoSaveForContent, this, new SaveEventArgs(content1)); @@ -252,7 +254,7 @@ namespace Umbraco.Tests.Scoping content3.Id = 123; content1.UpdateDate = now.AddMinutes(3); - var scopeProvider = _testObjects.GetScopeProvider(Mock.Of()); + var scopeProvider = _testObjects.GetScopeProvider(NullLoggerFactory.Instance); using (var scope = scopeProvider.CreateScope(eventDispatcher: new PassiveEventDispatcher())) { scope.Events.Dispatch(DoSaveForContent, this, new SaveEventArgs(content1)); @@ -285,7 +287,7 @@ namespace Umbraco.Tests.Scoping content3.Id = 123; content3.UpdateDate = now.AddMinutes(3); - var scopeProvider = _testObjects.GetScopeProvider(Mock.Of()); + var scopeProvider = _testObjects.GetScopeProvider(NullLoggerFactory.Instance); using (var scope = scopeProvider.CreateScope(eventDispatcher: new PassiveEventDispatcher())) { scope.Events.Dispatch(DoSaveForContent, this, new SaveEventArgs(content1)); @@ -309,7 +311,7 @@ namespace Umbraco.Tests.Scoping DoThing2 += OnDoThingFail; DoThing3 += OnDoThingFail; - var scopeProvider = _testObjects.GetScopeProvider(Mock.Of()); + var scopeProvider = _testObjects.GetScopeProvider(NullLoggerFactory.Instance); using (var scope = scopeProvider.CreateScope(eventDispatcher: new PassiveEventDispatcher())) { scope.Events.Dispatch(DoThing1, this, new SaveEventArgs("test")); @@ -335,7 +337,7 @@ namespace Umbraco.Tests.Scoping IScopeContext ambientContext = null; Guid value = Guid.Empty; - var scopeProvider = _testObjects.GetScopeProvider(Mock.Of()) as ScopeProvider; + var scopeProvider = _testObjects.GetScopeProvider(NullLoggerFactory.Instance) as ScopeProvider; DoThing1 += (sender, args) => { counter++; }; DoThing2 += (sender, args) => { counter++; }; diff --git a/src/Umbraco.Tests/Scoping/ScopeFileSystemsTests.cs b/src/Umbraco.Tests/Scoping/ScopeFileSystemsTests.cs index 2e2ebf392c..8c98bc99ff 100644 --- a/src/Umbraco.Tests/Scoping/ScopeFileSystemsTests.cs +++ b/src/Umbraco.Tests/Scoping/ScopeFileSystemsTests.cs @@ -1,6 +1,7 @@ using System; using System.IO; using System.Text; +using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -9,7 +10,6 @@ using Umbraco.Core.IO; using Umbraco.Tests.TestHelpers; using Umbraco.Tests.Testing; using Umbraco.Core.Composing.CompositionExtensions; -using Umbraco.Core.Logging; using FileSystems = Umbraco.Core.IO.FileSystems; namespace Umbraco.Tests.Scoping @@ -55,7 +55,7 @@ namespace Umbraco.Tests.Scoping [TestCase(false)] public void CreateMediaTest(bool complete) { - var physMediaFileSystem = new PhysicalFileSystem(IOHelper, HostingEnvironment, Mock.Of(), IOHelper.MapPath("media"), "ignore"); + var physMediaFileSystem = new PhysicalFileSystem(IOHelper, HostingEnvironment, Mock.Of>(), IOHelper.MapPath("media"), "ignore"); var mediaFileSystem = Current.MediaFileSystem; Assert.IsFalse(physMediaFileSystem.FileExists("f1.txt")); @@ -88,7 +88,7 @@ namespace Umbraco.Tests.Scoping [Test] public void MultiThread() { - var physMediaFileSystem = new PhysicalFileSystem(IOHelper, HostingEnvironment, Mock.Of(),IOHelper.MapPath("media"), "ignore"); + var physMediaFileSystem = new PhysicalFileSystem(IOHelper, HostingEnvironment, Mock.Of>(),IOHelper.MapPath("media"), "ignore"); var mediaFileSystem = Current.MediaFileSystem; var scopeProvider = ScopeProvider; diff --git a/src/Umbraco.Tests/Scoping/ScopedNuCacheTests.cs b/src/Umbraco.Tests/Scoping/ScopedNuCacheTests.cs index 4bce0e92ed..68e1c4a2e2 100644 --- a/src/Umbraco.Tests/Scoping/ScopedNuCacheTests.cs +++ b/src/Umbraco.Tests/Scoping/ScopedNuCacheTests.cs @@ -1,12 +1,13 @@ using System; using System.Web.Routing; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Events; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.PublishedContent; using Umbraco.Core.Persistence.Repositories; @@ -15,7 +16,6 @@ using Umbraco.Core.Services.Implement; using Umbraco.Core.Strings; using Umbraco.Core.Sync; using Umbraco.Tests.Common; -using Umbraco.Tests.Common.Builders; using Umbraco.Tests.TestHelpers; using Umbraco.Tests.Testing; using Umbraco.Web; @@ -92,10 +92,11 @@ namespace Umbraco.Tests.Scoping publishedSnapshotAccessor, Mock.Of(), ProfilingLogger, + NullLoggerFactory.Instance, ScopeProvider, documentRepository, mediaRepository, memberRepository, DefaultCultureAccessor, - new DatabaseDataSource(Mock.Of()), + new DatabaseDataSource(Mock.Of>()), Microsoft.Extensions.Options.Options.Create(globalSettings ?? new GlobalSettings()), Factory.GetInstance(), new NoopPublishedModelFactory(), @@ -137,7 +138,7 @@ namespace Umbraco.Tests.Scoping var umbracoContext = GetUmbracoContextNu("http://example.com/", setSingleton: true); // wire cache refresher - _distributedCacheBinder = new DistributedCacheBinder(new DistributedCache(Current.ServerMessenger, Current.CacheRefreshers), Mock.Of(), Mock.Of()); + _distributedCacheBinder = new DistributedCacheBinder(new DistributedCache(Current.ServerMessenger, Current.CacheRefreshers), Mock.Of(), Mock.Of>()); _distributedCacheBinder.BindEvents(true); // create document type, document diff --git a/src/Umbraco.Tests/Scoping/ScopedRepositoryTests.cs b/src/Umbraco.Tests/Scoping/ScopedRepositoryTests.cs index 15e9162708..7bffbbe2ed 100644 --- a/src/Umbraco.Tests/Scoping/ScopedRepositoryTests.cs +++ b/src/Umbraco.Tests/Scoping/ScopedRepositoryTests.cs @@ -3,11 +3,11 @@ using System.Collections.Generic; using System.Linq; using Moq; using NUnit.Framework; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Events; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Membership; using Umbraco.Core.Scoping; @@ -86,7 +86,7 @@ namespace Umbraco.Tests.Scoping // get user again - else we'd modify the one that's in the cache user = service.GetUserById(user.Id); - _distributedCacheBinder = new DistributedCacheBinder(new DistributedCache(Current.ServerMessenger, Current.CacheRefreshers), Mock.Of(), Mock.Of()); + _distributedCacheBinder = new DistributedCacheBinder(new DistributedCache(Current.ServerMessenger, Current.CacheRefreshers), Mock.Of(), Mock.Of>()); _distributedCacheBinder.BindEvents(true); Assert.IsNull(scopeProvider.AmbientScope); @@ -167,7 +167,7 @@ namespace Umbraco.Tests.Scoping Assert.AreEqual(lang.Id, globalCached.Id); Assert.AreEqual("fr-FR", globalCached.IsoCode); - _distributedCacheBinder = new DistributedCacheBinder(new DistributedCache(Current.ServerMessenger, Current.CacheRefreshers), Mock.Of(), Mock.Of()); + _distributedCacheBinder = new DistributedCacheBinder(new DistributedCache(Current.ServerMessenger, Current.CacheRefreshers), Mock.Of(), Mock.Of>()); _distributedCacheBinder.BindEvents(true); Assert.IsNull(scopeProvider.AmbientScope); @@ -259,7 +259,7 @@ namespace Umbraco.Tests.Scoping Assert.AreEqual(item.Id, globalCached.Id); Assert.AreEqual("item-key", globalCached.ItemKey); - _distributedCacheBinder = new DistributedCacheBinder(new DistributedCache(Current.ServerMessenger, Current.CacheRefreshers), Mock.Of(), Mock.Of()); + _distributedCacheBinder = new DistributedCacheBinder(new DistributedCache(Current.ServerMessenger, Current.CacheRefreshers), Mock.Of(), Mock.Of>()); _distributedCacheBinder.BindEvents(true); Assert.IsNull(scopeProvider.AmbientScope); diff --git a/src/Umbraco.Tests/Scoping/ScopedXmlTests.cs b/src/Umbraco.Tests/Scoping/ScopedXmlTests.cs index 21c9c2c67c..cac420d5e2 100644 --- a/src/Umbraco.Tests/Scoping/ScopedXmlTests.cs +++ b/src/Umbraco.Tests/Scoping/ScopedXmlTests.cs @@ -1,13 +1,13 @@ using System; using System.Collections.Generic; using System.Xml; +using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Events; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Services; using Umbraco.Core.Services.Implement; @@ -99,7 +99,7 @@ namespace Umbraco.Tests.Scoping var item = new Content("name", -1, contentType); // wire cache refresher - _distributedCacheBinder = new DistributedCacheBinder(new DistributedCache(Current.ServerMessenger, Current.CacheRefreshers), Mock.Of(), Mock.Of()); + _distributedCacheBinder = new DistributedCacheBinder(new DistributedCache(Current.ServerMessenger, Current.CacheRefreshers), Mock.Of(), Mock.Of>()); _distributedCacheBinder.BindEvents(true); // check xml in context = "before" @@ -212,7 +212,7 @@ namespace Umbraco.Tests.Scoping ServiceContext.ContentTypeService.Save(contentType); // wire cache refresher - _distributedCacheBinder = new DistributedCacheBinder(new DistributedCache(Current.ServerMessenger, Current.CacheRefreshers), Mock.Of(), Mock.Of()); + _distributedCacheBinder = new DistributedCacheBinder(new DistributedCache(Current.ServerMessenger, Current.CacheRefreshers), Mock.Of(), Mock.Of>()); _distributedCacheBinder.BindEvents(true); // check xml in context = "before" diff --git a/src/Umbraco.Tests/Services/ContentServicePerformanceTest.cs b/src/Umbraco.Tests/Services/ContentServicePerformanceTest.cs index 24aac13ade..9ed1271de0 100644 --- a/src/Umbraco.Tests/Services/ContentServicePerformanceTest.cs +++ b/src/Umbraco.Tests/Services/ContentServicePerformanceTest.cs @@ -2,10 +2,11 @@ using System.Collections.Generic; using System.Diagnostics; using System.Linq; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Cache; -using Umbraco.Core.Composing; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Logging; using Umbraco.Core.Models; @@ -41,17 +42,17 @@ namespace Umbraco.Tests.Services { var accessor = (IScopeAccessor)provider; var globalSettings = new GlobalSettings(); - var tRepository = new TemplateRepository((IScopeAccessor) provider, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock(), IOHelper, ShortStringHelper); - var tagRepo = new TagRepository(accessor, AppCaches.Disabled, Logger); + var tRepository = new TemplateRepository((IScopeAccessor) provider, AppCaches.Disabled, LoggerFactory.CreateLogger(), TestObjects.GetFileSystemsMock(), IOHelper, ShortStringHelper); + var tagRepo = new TagRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger()); var commonRepository = new ContentTypeCommonRepository(accessor, tRepository, AppCaches, ShortStringHelper); - var languageRepository = new LanguageRepository(accessor, AppCaches.Disabled, Logger, Microsoft.Extensions.Options.Options.Create(globalSettings)); - var ctRepository = new ContentTypeRepository(accessor, AppCaches.Disabled, Logger, commonRepository, languageRepository, ShortStringHelper); - var relationTypeRepository = new RelationTypeRepository(accessor, AppCaches.Disabled, Logger); + var languageRepository = new LanguageRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), Microsoft.Extensions.Options.Options.Create(globalSettings)); + var ctRepository = new ContentTypeRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), commonRepository, languageRepository, ShortStringHelper); + var relationTypeRepository = new RelationTypeRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger()); var entityRepository = new EntityRepository(accessor); - var relationRepository = new RelationRepository(accessor, Logger, relationTypeRepository, entityRepository); + var relationRepository = new RelationRepository(accessor, LoggerFactory.CreateLogger(), relationTypeRepository, entityRepository); var propertyEditors = new Lazy(() => new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty()))); var dataValueReferences = new DataValueReferenceFactoryCollection(Enumerable.Empty()); - var repository = new DocumentRepository(accessor, AppCaches.Disabled, Logger, ctRepository, tRepository, tagRepo, languageRepository, relationRepository, relationTypeRepository, propertyEditors, dataValueReferences, DataTypeService); + var repository = new DocumentRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), LoggerFactory, ctRepository, tRepository, tagRepo, languageRepository, relationRepository, relationTypeRepository, propertyEditors, dataValueReferences, DataTypeService); return repository; } @@ -63,9 +64,9 @@ namespace Umbraco.Tests.Services private static IProfilingLogger GetTestProfilingLogger() { - var logger = new DebugDiagnosticsLogger(new MessageTemplates()); + var profiler = new TestProfiler(); - return new ProfilingLogger(logger, profiler); + return new ProfilingLogger(new NullLogger(), profiler); } [Test] @@ -126,7 +127,7 @@ namespace Umbraco.Tests.Services total.AddRange(ServiceContext.ContentService.GetPagedDescendants(content.Id, 0, int.MaxValue, out var _)); } TestProfiler.Disable(); - Current.Logger.Info("Returned {Total} items", total.Count); + Current.Logger.LogInformation("Returned {Total} items", total.Count); } } @@ -176,7 +177,7 @@ namespace Umbraco.Tests.Services var pages = MockedContent.CreateTextpageContent(contentType, -1, 100); ServiceContext.ContentService.Save(pages, 0); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateDocumentRepository(provider); @@ -205,7 +206,7 @@ namespace Umbraco.Tests.Services var pages = MockedContent.CreateTextpageContent(contentType, -1, 1000); ServiceContext.ContentService.Save(pages, 0); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateDocumentRepository(provider); @@ -232,7 +233,7 @@ namespace Umbraco.Tests.Services var pages = MockedContent.CreateTextpageContent(contentType, -1, 100); ServiceContext.ContentService.Save(pages, 0); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateDocumentRepository(provider); @@ -262,7 +263,7 @@ namespace Umbraco.Tests.Services var pages = MockedContent.CreateTextpageContent(contentType, -1, 1000); ServiceContext.ContentService.Save(pages, 0); - var provider = TestObjects.GetScopeProvider(Logger); + var provider = TestObjects.GetScopeProvider(LoggerFactory); using (var scope = provider.CreateScope()) { var repository = CreateDocumentRepository(provider); diff --git a/src/Umbraco.Tests/Services/ContentServiceTests.cs b/src/Umbraco.Tests/Services/ContentServiceTests.cs index 49767e02dd..e37c080d7d 100644 --- a/src/Umbraco.Tests/Services/ContentServiceTests.cs +++ b/src/Umbraco.Tests/Services/ContentServiceTests.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Threading; +using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -3247,17 +3248,17 @@ namespace Umbraco.Tests.Services private DocumentRepository CreateRepository(IScopeProvider provider, out ContentTypeRepository contentTypeRepository) { var accessor = (IScopeAccessor) provider; - var templateRepository = new TemplateRepository(accessor, AppCaches.Disabled, Logger, TestObjects.GetFileSystemsMock(), IOHelper, ShortStringHelper); - var tagRepository = new TagRepository(accessor, AppCaches.Disabled, Logger); + var templateRepository = new TemplateRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), TestObjects.GetFileSystemsMock(), IOHelper, ShortStringHelper); + var tagRepository = new TagRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger()); var commonRepository = new ContentTypeCommonRepository(accessor, templateRepository, AppCaches, ShortStringHelper); - var languageRepository = new LanguageRepository(accessor, AppCaches.Disabled, Logger, Microsoft.Extensions.Options.Options.Create(_globalSettings)); - contentTypeRepository = new ContentTypeRepository(accessor, AppCaches.Disabled, Logger, commonRepository, languageRepository, ShortStringHelper); - var relationTypeRepository = new RelationTypeRepository(accessor, AppCaches.Disabled, Logger); + var languageRepository = new LanguageRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), Microsoft.Extensions.Options.Options.Create(_globalSettings)); + contentTypeRepository = new ContentTypeRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), commonRepository, languageRepository, ShortStringHelper); + var relationTypeRepository = new RelationTypeRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger()); var entityRepository = new EntityRepository(accessor); - var relationRepository = new RelationRepository(accessor, Logger, relationTypeRepository, entityRepository); + var relationRepository = new RelationRepository(accessor, LoggerFactory.CreateLogger(), relationTypeRepository, entityRepository); var propertyEditors = new Lazy(() => new PropertyEditorCollection(new DataEditorCollection(Enumerable.Empty()))); var dataValueReferences = new DataValueReferenceFactoryCollection(Enumerable.Empty()); - var repository = new DocumentRepository(accessor, AppCaches.Disabled, Logger, contentTypeRepository, templateRepository, tagRepository, languageRepository, relationRepository, relationTypeRepository, propertyEditors, dataValueReferences, DataTypeService); + var repository = new DocumentRepository(accessor, AppCaches.Disabled, LoggerFactory.CreateLogger(), LoggerFactory, contentTypeRepository, templateRepository, tagRepository, languageRepository, relationRepository, relationTypeRepository, propertyEditors, dataValueReferences, DataTypeService); return repository; } diff --git a/src/Umbraco.Tests/Services/ContentTypeServiceVariantsTests.cs b/src/Umbraco.Tests/Services/ContentTypeServiceVariantsTests.cs index 22f3c8d605..30d68d92e0 100644 --- a/src/Umbraco.Tests/Services/ContentTypeServiceVariantsTests.cs +++ b/src/Umbraco.Tests/Services/ContentTypeServiceVariantsTests.cs @@ -2,15 +2,14 @@ using System.Collections.Generic; using System.Linq; using System.Threading; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Cache; -using Umbraco.Core.Composing; -using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Hosting; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.PublishedContent; using Umbraco.Core.Persistence; @@ -19,7 +18,6 @@ using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Services; using Umbraco.Core.Strings; using Umbraco.Core.Sync; -using Umbraco.Tests.Common.Builders; using Umbraco.Tests.TestHelpers; using Umbraco.Tests.TestHelpers.Entities; using Umbraco.Tests.Testing; @@ -71,10 +69,11 @@ namespace Umbraco.Tests.Services publishedSnapshotAccessor, Mock.Of(), ProfilingLogger, + NullLoggerFactory.Instance, ScopeProvider, documentRepository, mediaRepository, memberRepository, DefaultCultureAccessor, - new DatabaseDataSource(Mock.Of()), + new DatabaseDataSource(Mock.Of>()), Microsoft.Extensions.Options.Options.Create(globalSettings ?? new GlobalSettings()), Factory.GetInstance(), Mock.Of(), diff --git a/src/Umbraco.Tests/Services/PerformanceTests.cs b/src/Umbraco.Tests/Services/PerformanceTests.cs index 67de1c91d7..da33685bdd 100644 --- a/src/Umbraco.Tests/Services/PerformanceTests.cs +++ b/src/Umbraco.Tests/Services/PerformanceTests.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Threading; -using NPoco; +using Microsoft.Extensions.Logging.Abstractions; using NUnit.Framework; using Umbraco.Core; using Umbraco.Web.Composing; @@ -11,7 +11,6 @@ using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Dtos; -using Umbraco.Core.Services; using Umbraco.Core.Services.Implement; using Umbraco.Tests.LegacyXmlPublishedCache; using Umbraco.Tests.TestHelpers; @@ -58,9 +57,8 @@ namespace Umbraco.Tests.Services private static IProfilingLogger GetTestProfilingLogger() { - var logger = new DebugDiagnosticsLogger(new MessageTemplates()); var profiler = new TestProfiler(); - return new ProfilingLogger(logger, profiler); + return new ProfilingLogger(new NullLogger(), profiler); } [Test] diff --git a/src/Umbraco.Tests/TestHelpers/BaseUsingSqlCeSyntax.cs b/src/Umbraco.Tests/TestHelpers/BaseUsingSqlCeSyntax.cs index dac509b534..3c3e14e2c4 100644 --- a/src/Umbraco.Tests/TestHelpers/BaseUsingSqlCeSyntax.cs +++ b/src/Umbraco.Tests/TestHelpers/BaseUsingSqlCeSyntax.cs @@ -3,6 +3,8 @@ using System.IO; using Moq; using NPoco; using NUnit.Framework; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Composing; @@ -40,12 +42,14 @@ namespace Umbraco.Tests.TestHelpers var typeFinder = TestHelper.GetTypeFinder(); var typeLoader = new TypeLoader(typeFinder, NoAppCache.Instance, new DirectoryInfo(ioHelper.MapPath("~/App_Data/TEMP")), + Mock.Of>(), logger, false); var composition = new Composition(container, typeLoader, Mock.Of(), Mock.Of(), TestHelper.IOHelper, AppCaches.NoCache); composition.RegisterUnique(_ => Mock.Of()); + composition.RegisterUnique(_ => NullLoggerFactory.Instance); composition.RegisterUnique(_ => Mock.Of()); composition.RegisterUnique(typeLoader); diff --git a/src/Umbraco.Tests/TestHelpers/BaseWebTest.cs b/src/Umbraco.Tests/TestHelpers/BaseWebTest.cs index 8f18d96a97..51836502fb 100644 --- a/src/Umbraco.Tests/TestHelpers/BaseWebTest.cs +++ b/src/Umbraco.Tests/TestHelpers/BaseWebTest.cs @@ -1,6 +1,8 @@ using System; using System.Linq; using System.Threading; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -45,7 +47,7 @@ namespace Umbraco.Tests.TestHelpers // AutoPublishedContentTypes generates properties automatically var dataTypeService = new TestObjects.TestDataTypeService( - new DataType(new VoidEditor(Mock.Of(), Mock.Of(), Mock.Of(),Mock.Of(), Mock.Of())) { Id = 1 }); + new DataType(new VoidEditor(NullLoggerFactory.Instance, Mock.Of(), Mock.Of(),Mock.Of(), Mock.Of())) { Id = 1 }); var factory = new PublishedContentTypeFactory(Mock.Of(), new PropertyValueConverterCollection(Array.Empty()), dataTypeService); var type = new AutoPublishedContentType(Guid.NewGuid(), 0, "anything", new PublishedPropertyType[] { }); @@ -105,6 +107,7 @@ namespace Umbraco.Tests.TestHelpers new TestLastChanceFinder(), new TestVariationContextAccessor(), new ProfilingLogger(Mock.Of(), Mock.Of()), + Mock.Of>(), Mock.Of(), Mock.Of(), container?.GetInstance() ?? Current.Factory.GetInstance(), diff --git a/src/Umbraco.Tests/TestHelpers/Stubs/TestControllerFactory.cs b/src/Umbraco.Tests/TestHelpers/Stubs/TestControllerFactory.cs index f5d18e05ba..d0348cf589 100644 --- a/src/Umbraco.Tests/TestHelpers/Stubs/TestControllerFactory.cs +++ b/src/Umbraco.Tests/TestHelpers/Stubs/TestControllerFactory.cs @@ -5,10 +5,10 @@ using System.Reflection; using System.Web.Mvc; using System.Web.Routing; using System.Web.SessionState; +using Microsoft.Extensions.Logging; using Moq; using Umbraco.Core; using Umbraco.Core.Composing; -using Umbraco.Core.Logging; using Umbraco.Web; using Current = Umbraco.Web.Composing.Current; @@ -20,16 +20,16 @@ namespace Umbraco.Tests.TestHelpers.Stubs internal class TestControllerFactory : IControllerFactory { private readonly IUmbracoContextAccessor _umbracoContextAccessor; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly Func _factory; - public TestControllerFactory(IUmbracoContextAccessor umbracoContextAccessor, ILogger logger) + public TestControllerFactory(IUmbracoContextAccessor umbracoContextAccessor, ILogger logger) { _umbracoContextAccessor = umbracoContextAccessor; _logger = logger; } - public TestControllerFactory(IUmbracoContextAccessor umbracoContextAccessor, ILogger logger, Func factory) + public TestControllerFactory(IUmbracoContextAccessor umbracoContextAccessor, ILogger logger, Func factory) { _umbracoContextAccessor = umbracoContextAccessor; _logger = logger; diff --git a/src/Umbraco.Tests/TestHelpers/TestHelper.cs b/src/Umbraco.Tests/TestHelpers/TestHelper.cs index 4677d9b9b2..b016b4ebe6 100644 --- a/src/Umbraco.Tests/TestHelpers/TestHelper.cs +++ b/src/Umbraco.Tests/TestHelpers/TestHelper.cs @@ -35,6 +35,7 @@ using Umbraco.Web.Routing; using File = System.IO.File; using Umbraco.Tests.Common.Builders; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; using Umbraco.Core.Configuration.Models; namespace Umbraco.Tests.TestHelpers @@ -63,7 +64,7 @@ namespace Umbraco.Tests.TestHelpers public override IBackOfficeInfo GetBackOfficeInfo() => new AspNetBackOfficeInfo( new GlobalSettings(), - TestHelper.IOHelper, Mock.Of(), Options.Create(new WebRoutingSettings())); + TestHelper.IOHelper, Mock.Of>(), Options.Create(new WebRoutingSettings())); public override IHostingEnvironment GetHostingEnvironment() => new AspNetHostingEnvironment(Options.Create(new HostingSettings())); diff --git a/src/Umbraco.Tests/TestHelpers/TestObjects-Mocks.cs b/src/Umbraco.Tests/TestHelpers/TestObjects-Mocks.cs index 7037961e7d..671af42ef0 100644 --- a/src/Umbraco.Tests/TestHelpers/TestObjects-Mocks.cs +++ b/src/Umbraco.Tests/TestHelpers/TestObjects-Mocks.cs @@ -4,12 +4,12 @@ using System.Data; using System.Data.Common; using System.Linq; using System.Linq.Expressions; +using Microsoft.Extensions.Logging; using Moq; using Umbraco.Core; using Umbraco.Core.Composing; using Umbraco.Core.Configuration.Models; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Persistence; using Umbraco.Core.Services; @@ -45,7 +45,7 @@ namespace Umbraco.Tests.TestHelpers // can create a database - but don't try to use it! if (configured && canConnect) - databaseFactoryMock.Setup(x => x.CreateDatabase()).Returns(GetUmbracoSqlCeDatabase(Mock.Of())); + databaseFactoryMock.Setup(x => x.CreateDatabase()).Returns(GetUmbracoSqlCeDatabase(Mock.Of>())); return databaseFactoryMock.Object; } diff --git a/src/Umbraco.Tests/TestHelpers/TestObjects.cs b/src/Umbraco.Tests/TestHelpers/TestObjects.cs index 8e6dadaaeb..0b284b8f47 100644 --- a/src/Umbraco.Tests/TestHelpers/TestObjects.cs +++ b/src/Umbraco.Tests/TestHelpers/TestObjects.cs @@ -3,6 +3,7 @@ using System.Configuration; using System.IO; using System.Linq; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; using Moq; using NPoco; using Umbraco.Core; @@ -14,7 +15,6 @@ using Umbraco.Core.Configuration.UmbracoSettings; using Umbraco.Core.Events; using Umbraco.Core.Hosting; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.SqlSyntax; @@ -45,7 +45,7 @@ namespace Umbraco.Tests.TestHelpers /// An UmbracoDatabase. /// This is just a void database that has no actual database but pretends to have an open connection /// that can begin a transaction. - public UmbracoDatabase GetUmbracoSqlCeDatabase(ILogger logger) + public UmbracoDatabase GetUmbracoSqlCeDatabase(ILogger logger) { var syntax = new SqlCeSyntaxProvider(); var connection = GetDbConnection(); @@ -60,7 +60,7 @@ namespace Umbraco.Tests.TestHelpers /// An UmbracoDatabase. /// This is just a void database that has no actual database but pretends to have an open connection /// that can begin a transaction. - public UmbracoDatabase GetUmbracoSqlServerDatabase(ILogger logger) + public UmbracoDatabase GetUmbracoSqlServerDatabase(ILogger logger) { var syntax = new SqlServerSyntaxProvider(); // do NOT try to get the server's version! var connection = GetDbConnection(); @@ -80,7 +80,7 @@ namespace Umbraco.Tests.TestHelpers return container?.TryGetInstance() ?? Mock.Of(); } - public IScopeProvider GetScopeProvider(ILogger logger, ITypeFinder typeFinder = null, FileSystems fileSystems = null, IUmbracoDatabaseFactory databaseFactory = null) + public IScopeProvider GetScopeProvider(ILoggerFactory loggerFactory, ITypeFinder typeFinder = null, FileSystems fileSystems = null, IUmbracoDatabaseFactory databaseFactory = null) { var globalSettings = new GlobalSettings(); var connectionString = ConfigurationManager.ConnectionStrings[Constants.System.UmbracoConnectionName].ConnectionString; @@ -93,18 +93,20 @@ namespace Umbraco.Tests.TestHelpers // mappersBuilder.AddCore(); // var mappers = mappersBuilder.CreateCollection(); var mappers = Current.Factory.GetInstance(); - databaseFactory = new UmbracoDatabaseFactory(logger, + databaseFactory = new UmbracoDatabaseFactory( + loggerFactory.CreateLogger(), + loggerFactory, globalSettings, connectionStrings, new Lazy(() => mappers), TestHelper.DbProviderFactoryCreator); } - typeFinder ??= new TypeFinder(logger, new DefaultUmbracoAssemblyProvider(GetType().Assembly), new VaryingRuntimeHash()); - fileSystems ??= new FileSystems(Current.Factory, logger, TestHelper.IOHelper, Options.Create(globalSettings), TestHelper.GetHostingEnvironment()); + typeFinder ??= new TypeFinder(loggerFactory.CreateLogger(), new DefaultUmbracoAssemblyProvider(GetType().Assembly), new VaryingRuntimeHash()); + fileSystems ??= new FileSystems(Current.Factory, loggerFactory.CreateLogger(), loggerFactory, TestHelper.IOHelper, Options.Create(globalSettings), TestHelper.GetHostingEnvironment()); var coreDebug = TestHelper.CoreDebugSettings; var mediaFileSystem = Mock.Of(); - return new ScopeProvider(databaseFactory, fileSystems, Microsoft.Extensions.Options.Options.Create(coreDebugSettings), mediaFileSystem, logger, typeFinder, NoAppCache.Instance); + return new ScopeProvider(databaseFactory, fileSystems, Microsoft.Extensions.Options.Options.Create(coreDebugSettings), mediaFileSystem, loggerFactory.CreateLogger(), loggerFactory, typeFinder, NoAppCache.Instance); } } diff --git a/src/Umbraco.Tests/TestHelpers/TestWithDatabaseBase.cs b/src/Umbraco.Tests/TestHelpers/TestWithDatabaseBase.cs index 70a0d7a0db..7d565d70b2 100644 --- a/src/Umbraco.Tests/TestHelpers/TestWithDatabaseBase.cs +++ b/src/Umbraco.Tests/TestHelpers/TestWithDatabaseBase.cs @@ -4,6 +4,8 @@ using System.Data.SqlServerCe; using System.Threading; using System.Web.Routing; using System.Xml; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -89,7 +91,7 @@ namespace Umbraco.Tests.TestHelpers return TestObjects.GetDatabaseFactoryMock(); var lazyMappers = new Lazy(f.GetInstance); - var factory = new UmbracoDatabaseFactory(f.GetInstance(), GetDbConnectionString(), GetDbProviderName(), lazyMappers, TestHelper.DbProviderFactoryCreator); + var factory = new UmbracoDatabaseFactory(f.GetInstance>(), f.GetInstance(), GetDbConnectionString(), GetDbProviderName(), lazyMappers, TestHelper.DbProviderFactoryCreator); factory.ResetForTests(); return factory; }); @@ -150,7 +152,7 @@ namespace Umbraco.Tests.TestHelpers protected virtual string GetDbConnectionString() { - return @"Datasource=|DataDirectory|UmbracoNPocoTests.sdf;Flush Interval=1;"; + return @"DataSource=|DataDirectory|UmbracoNPocoTests.sdf;Flush Interval=1;"; } @@ -244,7 +246,7 @@ namespace Umbraco.Tests.TestHelpers Factory.GetInstance(), Factory.GetInstance(), Factory.GetInstance(), - Logger); + Factory.GetInstance>()); // testing=true so XmlStore will not use the file nor the database @@ -258,7 +260,7 @@ namespace Umbraco.Tests.TestHelpers Factory.GetInstance(), Factory.GetInstance(), Factory.GetInstance(), Factory.GetInstance(), DefaultCultureAccessor, - Logger, + Factory.GetInstance(), globalSettings ?? TestObjects.GetGlobalSettings(), HostingEnvironment, HostingLifetime, @@ -299,7 +301,7 @@ namespace Umbraco.Tests.TestHelpers { using (var scope = ScopeProvider.CreateScope()) { - var schemaHelper = new DatabaseSchemaCreator(scope.Database, Logger, UmbracoVersion); + var schemaHelper = new DatabaseSchemaCreator(scope.Database, LoggerFactory.CreateLogger(), LoggerFactory, UmbracoVersion); //Create the umbraco database and its base data schemaHelper.InitializeDatabaseSchema(); @@ -342,7 +344,7 @@ namespace Umbraco.Tests.TestHelpers } catch (Exception ex) { - Logger.Error(ex, "Could not remove the old database file"); + LoggerFactory.CreateLogger().LogError(ex, "Could not remove the old database file"); // swallow this exception - that's because a sub class might require further teardown logic onFail?.Invoke(ex); diff --git a/src/Umbraco.Tests/Testing/TestingTests/MockTests.cs b/src/Umbraco.Tests/Testing/TestingTests/MockTests.cs index 04bae0372a..017f7022e7 100644 --- a/src/Umbraco.Tests/Testing/TestingTests/MockTests.cs +++ b/src/Umbraco.Tests/Testing/TestingTests/MockTests.cs @@ -3,6 +3,7 @@ using System.Globalization; using System.Linq; using System.Web; using System.Web.Security; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -104,14 +105,14 @@ namespace Umbraco.Tests.Testing.TestingTests [Test] public void Can_Mock_UmbracoApiController_Dependencies_With_Injected_UmbracoMapper() { - var logger = Mock.Of(); + var profilingLogger = Mock.Of(); var memberService = Mock.Of(); var memberTypeService = Mock.Of(); var membershipProvider = new MembersMembershipProvider(memberService, memberTypeService, Mock.Of(), TestHelper.GetHostingEnvironment(), TestHelper.GetIpResolver()); - var membershipHelper = new MembershipHelper(Mock.Of(), Mock.Of(), membershipProvider, Mock.Of(), memberService, memberTypeService, Mock.Of(), AppCaches.Disabled, logger, ShortStringHelper, Mock.Of()); + var membershipHelper = new MembershipHelper(Mock.Of(), Mock.Of(), membershipProvider, Mock.Of(), memberService, memberTypeService, Mock.Of(), AppCaches.Disabled, NullLoggerFactory.Instance, ShortStringHelper, Mock.Of()); var umbracoMapper = new UmbracoMapper(new MapDefinitionCollection(new[] { Mock.Of() })); - var umbracoApiController = new FakeUmbracoApiController(new GlobalSettings(), Mock.Of(), Mock.Of(), ServiceContext.CreatePartial(), AppCaches.NoCache, logger, Mock.Of(), umbracoMapper, Mock.Of()); + var umbracoApiController = new FakeUmbracoApiController(new GlobalSettings(), Mock.Of(), Mock.Of(), ServiceContext.CreatePartial(), AppCaches.NoCache, profilingLogger , Mock.Of(), umbracoMapper, Mock.Of()); Assert.Pass(); } diff --git a/src/Umbraco.Tests/Testing/UmbracoTestBase.cs b/src/Umbraco.Tests/Testing/UmbracoTestBase.cs index 6283ad83e5..347545068c 100644 --- a/src/Umbraco.Tests/Testing/UmbracoTestBase.cs +++ b/src/Umbraco.Tests/Testing/UmbracoTestBase.cs @@ -4,12 +4,16 @@ 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 Microsoft.Extensions.Logging.Abstractions; using Moq; using NUnit.Framework; +using Serilog; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Composing; @@ -60,6 +64,7 @@ using Umbraco.Web.Templates; using Umbraco.Web.Trees; using Current = Umbraco.Web.Composing.Current; using FileSystems = Umbraco.Core.IO.FileSystems; +using ILogger = Microsoft.Extensions.Logging.ILogger; namespace Umbraco.Tests.Testing { @@ -116,7 +121,8 @@ namespace Umbraco.Tests.Testing #region Accessors protected ServiceContext ServiceContext => Factory.GetInstance(); - protected ILogger Logger => Factory.GetInstance(); + protected ILoggerFactory LoggerFactory => Factory.GetInstance(); + protected IJsonSerializer JsonNetSerializer { get; } = new JsonNetSerializer(); protected IIOHelper IOHelper { get; private set; } @@ -151,6 +157,7 @@ namespace Umbraco.Tests.Testing protected UmbracoMapper Mapper => Factory.GetInstance(); protected IHttpContextAccessor HttpContextAccessor => Factory.GetInstance(); protected IRuntimeState RuntimeState => MockRuntimeState(RuntimeLevel.Run); + private ILoggerFactory _loggerFactory; protected static IRuntimeState MockRuntimeState(RuntimeLevel level) { @@ -174,22 +181,25 @@ 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 proflogger = new ProfilingLogger(logger, profiler); + var loggerFactory = GetLoggerFactory(Options.Logger); + _loggerFactory = loggerFactory; + var profiler = new LogProfiler(loggerFactory.CreateLogger()); + var msLogger = loggerFactory.CreateLogger("msLogger"); + var proflogger = new ProfilingLogger(loggerFactory.CreateLogger("ProfilingLogger"), profiler); IOHelper = TestHelper.IOHelper; - TypeFinder = new TypeFinder(logger, new DefaultUmbracoAssemblyProvider(GetType().Assembly), new VaryingRuntimeHash()); + TypeFinder = new TypeFinder(loggerFactory.CreateLogger(), new DefaultUmbracoAssemblyProvider(GetType().Assembly), new VaryingRuntimeHash()); var appCaches = GetAppCaches(); var globalSettings = new GlobalSettings(); var settings = new WebRoutingSettings(); - IBackOfficeInfo backOfficeInfo = new AspNetBackOfficeInfo(globalSettings, IOHelper, logger, Microsoft.Extensions.Options.Options.Create(settings)); + IBackOfficeInfo backOfficeInfo = new AspNetBackOfficeInfo(globalSettings, IOHelper, loggerFactory.CreateLogger(), Microsoft.Extensions.Options.Options.Create(settings)); IIpResolver ipResolver = new AspNetIpResolver(); UmbracoVersion = new UmbracoVersion(); - LocalizedTextService = new LocalizedTextService(new Dictionary>(), logger); - var typeLoader = GetTypeLoader(IOHelper, TypeFinder, appCaches.RuntimeCache, HostingEnvironment, proflogger, Options.TypeLoader); + LocalizedTextService = new LocalizedTextService(new Dictionary>(), loggerFactory.CreateLogger()); + var typeLoader = GetTypeLoader(IOHelper, TypeFinder, appCaches.RuntimeCache, HostingEnvironment, loggerFactory.CreateLogger(), proflogger, Options.TypeLoader); var register = TestHelper.GetRegister(); @@ -197,18 +207,18 @@ namespace Umbraco.Tests.Testing Composition = new Composition(register, typeLoader, proflogger, MockRuntimeState(RuntimeLevel.Run), TestHelper.IOHelper, AppCaches.NoCache); - //TestHelper.GetConfigs().RegisterWith(register); - + Composition.RegisterUnique(typeof(ILoggerFactory), loggerFactory); + Composition.Register(typeof(ILogger<>), typeof(Logger<>)); + Composition.Register(typeof(ILogger), msLogger); Composition.RegisterUnique(IOHelper); Composition.RegisterUnique(UriUtility); Composition.RegisterUnique(UmbracoVersion); Composition.RegisterUnique(TypeFinder); Composition.RegisterUnique(LocalizedTextService); Composition.RegisterUnique(typeLoader); - Composition.RegisterUnique(logger); - Composition.RegisterUnique(profiler); + Composition.RegisterUnique(profiler); Composition.RegisterUnique(proflogger); Composition.RegisterUnique(appCaches); Composition.RegisterUnique(HostingEnvironment); @@ -223,7 +233,7 @@ namespace Umbraco.Tests.Testing var memberService = Mock.Of(); var memberTypeService = Mock.Of(); var membershipProvider = new MembersMembershipProvider(memberService, memberTypeService, Mock.Of(), TestHelper.GetHostingEnvironment(), TestHelper.GetIpResolver()); - var membershipHelper = new MembershipHelper(Mock.Of(), Mock.Of(), membershipProvider, Mock.Of(), memberService, memberTypeService, Mock.Of(), AppCaches.Disabled, logger, ShortStringHelper, Mock.Of()); + var membershipHelper = new MembershipHelper(Mock.Of(), Mock.Of(), membershipProvider, Mock.Of(), memberService, memberTypeService, Mock.Of(), AppCaches.Disabled, loggerFactory, ShortStringHelper, Mock.Of()); Composition.RegisterUnique(membershipHelper); @@ -262,30 +272,26 @@ namespace Umbraco.Tests.Testing #region Compose - protected virtual (ILogger, IProfiler) GetLoggers(UmbracoTestOptions.Logger option) + protected virtual ILoggerFactory GetLoggerFactory(UmbracoTestOptions.Logger option) { - ILogger logger; - IProfiler profiler; + ILoggerFactory factory; switch (option) { case UmbracoTestOptions.Logger.Mock: - logger = Mock.Of(); - profiler = Mock.Of(); + factory = NullLoggerFactory.Instance; break; case UmbracoTestOptions.Logger.Serilog: - logger = new SerilogLogger(new FileInfo(TestHelper.MapPathForTestFiles("~/unit-test.config"))); - profiler = new LogProfiler(logger); + factory = Microsoft.Extensions.Logging.LoggerFactory.Create(builder => { builder.AddSerilog(); }); break; case UmbracoTestOptions.Logger.Console: - logger = new ConsoleLogger(new MessageTemplates()); - profiler = new LogProfiler(logger); + factory = Microsoft.Extensions.Logging.LoggerFactory.Create(builder => { builder.AddConsole(); }); break; default: throw new NotSupportedException($"Logger option {option} is not supported."); } - return (logger, profiler); + return factory; } protected virtual AppCaches GetAppCaches() @@ -380,35 +386,35 @@ namespace Umbraco.Tests.Testing .ComposeCoreMappingProfiles(); } - protected virtual TypeLoader GetTypeLoader(IIOHelper ioHelper, ITypeFinder typeFinder, IAppPolicyCache runtimeCache, IHostingEnvironment hostingEnvironment, IProfilingLogger logger, UmbracoTestOptions.TypeLoader option) + protected virtual TypeLoader GetTypeLoader(IIOHelper ioHelper, ITypeFinder typeFinder, IAppPolicyCache runtimeCache, IHostingEnvironment hostingEnvironment, ILogger logger, IProfilingLogger profilingLogger , UmbracoTestOptions.TypeLoader option) { switch (option) { case UmbracoTestOptions.TypeLoader.Default: - return _commonTypeLoader ?? (_commonTypeLoader = CreateCommonTypeLoader(typeFinder, runtimeCache, logger, hostingEnvironment)); + return _commonTypeLoader ?? (_commonTypeLoader = CreateCommonTypeLoader(typeFinder, runtimeCache, logger, profilingLogger , hostingEnvironment)); case UmbracoTestOptions.TypeLoader.PerFixture: - return _featureTypeLoader ?? (_featureTypeLoader = CreateTypeLoader(ioHelper, typeFinder, runtimeCache, logger, hostingEnvironment)); + return _featureTypeLoader ?? (_featureTypeLoader = CreateTypeLoader(ioHelper, typeFinder, runtimeCache, logger, profilingLogger , hostingEnvironment)); case UmbracoTestOptions.TypeLoader.PerTest: - return CreateTypeLoader(ioHelper, typeFinder, runtimeCache, logger, hostingEnvironment); + return CreateTypeLoader(ioHelper, typeFinder, runtimeCache, logger, profilingLogger , hostingEnvironment); default: throw new ArgumentOutOfRangeException(nameof(option)); } } - protected virtual TypeLoader CreateTypeLoader(IIOHelper ioHelper, ITypeFinder typeFinder, IAppPolicyCache runtimeCache, IProfilingLogger logger, IHostingEnvironment hostingEnvironment) + protected virtual TypeLoader CreateTypeLoader(IIOHelper ioHelper, ITypeFinder typeFinder, IAppPolicyCache runtimeCache, ILogger logger, IProfilingLogger profilingLogger , IHostingEnvironment hostingEnvironment) { - return CreateCommonTypeLoader(typeFinder, runtimeCache, logger, hostingEnvironment); + return CreateCommonTypeLoader(typeFinder, runtimeCache, logger, profilingLogger , hostingEnvironment); } // common to all tests = cannot be overriden - private static TypeLoader CreateCommonTypeLoader(ITypeFinder typeFinder, IAppPolicyCache runtimeCache, IProfilingLogger logger, IHostingEnvironment hostingEnvironment) + private static TypeLoader CreateCommonTypeLoader(ITypeFinder typeFinder, IAppPolicyCache runtimeCache, ILogger logger, IProfilingLogger profilingLogger , IHostingEnvironment hostingEnvironment) { - return new TypeLoader(typeFinder, runtimeCache, new DirectoryInfo(hostingEnvironment.LocalTempPath), logger, false, new[] + return new TypeLoader(typeFinder, runtimeCache, new DirectoryInfo(hostingEnvironment.LocalTempPath), logger, profilingLogger , false, new[] { Assembly.Load("Umbraco.Core"), Assembly.Load("Umbraco.Web"), Assembly.Load("Umbraco.Tests"), - Assembly.Load("Umbraco.Infrastructure") + Assembly.Load("Umbraco.Infrastructure"), }); } @@ -458,10 +464,9 @@ namespace Umbraco.Tests.Testing Composition.RegisterUnique(factory => TestObjects.GetFileSystemsMock()); - var logger = Mock.Of(); var scheme = Mock.Of(); - var mediaFileSystem = new MediaFileSystem(Mock.Of(), scheme, logger, TestHelper.ShortStringHelper); + var mediaFileSystem = new MediaFileSystem(Mock.Of(), scheme, _loggerFactory.CreateLogger(), TestHelper.ShortStringHelper); Composition.RegisterUnique(factory => mediaFileSystem); // no factory (noop) @@ -476,7 +481,8 @@ namespace Umbraco.Tests.Testing var globalSettings = new GlobalSettings(); var connectionStrings = new ConnectionStrings(); - Composition.RegisterUnique(f => new UmbracoDatabaseFactory(Logger, + Composition.RegisterUnique(f => new UmbracoDatabaseFactory(_loggerFactory.CreateLogger(), + LoggerFactory, globalSettings, connectionStrings, new Lazy(f.GetInstance), @@ -487,7 +493,7 @@ namespace Umbraco.Tests.Testing Composition.WithCollectionBuilder(); // empty Composition.RegisterUnique(factory - => TestObjects.GetScopeProvider(factory.TryGetInstance(), factory.TryGetInstance(), factory.TryGetInstance(), factory.TryGetInstance())); + => TestObjects.GetScopeProvider(_loggerFactory, factory.TryGetInstance(), factory.TryGetInstance(), factory.TryGetInstance())); Composition.RegisterUnique(factory => (IScopeAccessor) factory.GetInstance()); Composition.ComposeServices(); diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj index 36bcee250b..e8b188bd63 100644 --- a/src/Umbraco.Tests/Umbraco.Tests.csproj +++ b/src/Umbraco.Tests/Umbraco.Tests.csproj @@ -33,6 +33,10 @@ + + true + true + true full @@ -95,6 +99,12 @@ + + + + 3.1.8 + + @@ -111,6 +121,8 @@ + + @@ -472,4 +484,4 @@ - \ No newline at end of file + diff --git a/src/Umbraco.Tests/UmbracoExamine/ExamineBaseTest.cs b/src/Umbraco.Tests/UmbracoExamine/ExamineBaseTest.cs index 0767bf3191..9bd448dc38 100644 --- a/src/Umbraco.Tests/UmbracoExamine/ExamineBaseTest.cs +++ b/src/Umbraco.Tests/UmbracoExamine/ExamineBaseTest.cs @@ -1,4 +1,5 @@ using System.IO; +using Microsoft.Extensions.Logging.Abstractions; using NUnit.Framework; using Umbraco.Core.Composing; using Umbraco.Core.Configuration.Models; @@ -6,6 +7,7 @@ using Umbraco.Core.Logging; using Umbraco.Core.Logging.Serilog; using Umbraco.Core.Strings; using Umbraco.Tests.TestHelpers; +using NullLogger = Microsoft.Extensions.Logging.Abstractions.NullLogger; namespace Umbraco.Tests.UmbracoExamine { @@ -15,9 +17,9 @@ namespace Umbraco.Tests.UmbracoExamine [OneTimeSetUp] public void InitializeFixture() { - - var logger = new SerilogLogger(new FileInfo(TestHelper.MapPathForTestFiles("~/unit-test.config"))); - _profilingLogger = new ProfilingLogger(logger, new LogProfiler(logger)); + + // var logger = new SerilogLogger(new FileInfo(TestHelper.MapPathForTestFiles("~/unit-test.config"))); + _profilingLogger = new ProfilingLogger(NullLogger.Instance, new LogProfiler(NullLogger.Instance)); } private IProfilingLogger _profilingLogger; diff --git a/src/Umbraco.Tests/UmbracoExamine/IndexInitializer.cs b/src/Umbraco.Tests/UmbracoExamine/IndexInitializer.cs index b4ff26d760..59ebaa34e8 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; @@ -55,7 +56,7 @@ namespace Umbraco.Tests.UmbracoExamine public static MediaIndexPopulator GetMediaIndexRebuilder(PropertyEditorCollection propertyEditors, IMediaService mediaService) { - var mediaValueSetBuilder = new MediaValueSetBuilder(propertyEditors, new UrlSegmentProviderCollection(new[] { new DefaultUrlSegmentProvider(TestHelper.ShortStringHelper) }), GetMockUserService(), GetMockLogger(), TestHelper.ShortStringHelper, TestHelper.JsonSerializer); + var mediaValueSetBuilder = new MediaValueSetBuilder(propertyEditors, new UrlSegmentProviderCollection(new[] { new DefaultUrlSegmentProvider(TestHelper.ShortStringHelper) }), GetMockUserService(), Mock.Of>(), TestHelper.ShortStringHelper, TestHelper.JsonSerializer); var mediaIndexDataSource = new MediaIndexPopulator(null, mediaService, mediaValueSetBuilder); return mediaIndexDataSource; } @@ -156,7 +157,7 @@ namespace Umbraco.Tests.UmbracoExamine return mediaTypeServiceMock.Object; } - public static IProfilingLogger GetMockLogger() + public static IProfilingLogger GetMockProfilingLogger() { return new ProfilingLogger(Mock.Of(), Mock.Of()); } @@ -185,6 +186,8 @@ namespace Umbraco.Tests.UmbracoExamine new UmbracoFieldDefinitionCollection(), analyzer, profilingLogger, + Mock.Of>(), + Mock.Of(), hostingEnvironment, runtimeState, languageService, diff --git a/src/Umbraco.Tests/Web/Controllers/PluginControllerAreaTests.cs b/src/Umbraco.Tests/Web/Controllers/PluginControllerAreaTests.cs index 59209f3e7d..a91a305314 100644 --- a/src/Umbraco.Tests/Web/Controllers/PluginControllerAreaTests.cs +++ b/src/Umbraco.Tests/Web/Controllers/PluginControllerAreaTests.cs @@ -54,7 +54,7 @@ namespace Umbraco.Tests.Web.Controllers public class Plugin1Controller : PluginController { public Plugin1Controller(IUmbracoContextAccessor umbracoContextAccessor) - : base(umbracoContextAccessor, null, null, null, null, null) + : base(umbracoContextAccessor, null, null, null, null) { } } @@ -63,7 +63,7 @@ namespace Umbraco.Tests.Web.Controllers public class Plugin2Controller : PluginController { public Plugin2Controller(IUmbracoContextAccessor umbracoContextAccessor) - : base(umbracoContextAccessor, null, null, null, null, null) + : base(umbracoContextAccessor, null, null, null, null) { } } @@ -72,7 +72,7 @@ namespace Umbraco.Tests.Web.Controllers public class Plugin3Controller : PluginController { public Plugin3Controller(IUmbracoContextAccessor umbracoContextAccessor) - : base(umbracoContextAccessor, null, null, null, null, null) + : base(umbracoContextAccessor, null, null, null, null) { } } @@ -80,7 +80,7 @@ namespace Umbraco.Tests.Web.Controllers public class Plugin4Controller : PluginController { public Plugin4Controller(IUmbracoContextAccessor umbracoContextAccessor) - : base(umbracoContextAccessor, null, null, null, null, null) + : base(umbracoContextAccessor, null, null, null, null) { } } diff --git a/src/Umbraco.Tests/Web/Mvc/SurfaceControllerTests.cs b/src/Umbraco.Tests/Web/Mvc/SurfaceControllerTests.cs index 6950d69b3e..a2bcb4928a 100644 --- a/src/Umbraco.Tests/Web/Mvc/SurfaceControllerTests.cs +++ b/src/Umbraco.Tests/Web/Mvc/SurfaceControllerTests.cs @@ -176,7 +176,7 @@ namespace Umbraco.Tests.Web.Mvc private readonly IPublishedContentQuery _publishedContentQuery; public TestSurfaceController(IUmbracoContextAccessor umbracoContextAccessor, IPublishedContentQuery publishedContentQuery) - : base(umbracoContextAccessor, null, ServiceContext.CreatePartial(), AppCaches.Disabled, null, null) + : base(umbracoContextAccessor, null, ServiceContext.CreatePartial(), AppCaches.Disabled, null) { _publishedContentQuery = publishedContentQuery; } diff --git a/src/Umbraco.Tests/Web/Mvc/UmbracoViewPageTests.cs b/src/Umbraco.Tests/Web/Mvc/UmbracoViewPageTests.cs index 62131597d4..c7ab297076 100644 --- a/src/Umbraco.Tests/Web/Mvc/UmbracoViewPageTests.cs +++ b/src/Umbraco.Tests/Web/Mvc/UmbracoViewPageTests.cs @@ -2,12 +2,12 @@ using System.Globalization; using System.Web.Mvc; using System.Web.Routing; +using Microsoft.Extensions.Logging.Abstractions; using Moq; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Configuration.Models; -using Umbraco.Core.Logging; using Umbraco.Core.Models.PublishedContent; using Umbraco.Core.Services; using Umbraco.Tests.Common; @@ -413,14 +413,14 @@ namespace Umbraco.Tests.Web.Mvc var cache = NoAppCache.Instance; //var provider = new ScopeUnitOfWorkProvider(databaseFactory, new RepositoryFactory(Mock.Of())); - var scopeProvider = TestObjects.GetScopeProvider(Mock.Of()); + var scopeProvider = TestObjects.GetScopeProvider(NullLoggerFactory.Instance); var factory = Mock.Of(); var umbracoContextAccessor = Mock.Of(); _service = new XmlPublishedSnapshotService(svcCtx, factory, scopeProvider, cache, null, null, umbracoContextAccessor, null, null, null, new TestDefaultCultureAccessor(), - Current.Logger, TestObjects.GetGlobalSettings(), + Current.LoggerFactory, TestObjects.GetGlobalSettings(), TestHelper.GetHostingEnvironment(), TestHelper.GetHostingEnvironmentLifetime(), ShortStringHelper, diff --git a/src/Umbraco.Tests/Web/UmbracoHelperTests.cs b/src/Umbraco.Tests/Web/UmbracoHelperTests.cs index b17943e63e..34beee7499 100644 --- a/src/Umbraco.Tests/Web/UmbracoHelperTests.cs +++ b/src/Umbraco.Tests/Web/UmbracoHelperTests.cs @@ -1,6 +1,7 @@ using System; using System.IO; using System.Text; +using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; using Umbraco.Core; @@ -11,6 +12,7 @@ using Umbraco.Tests.TestHelpers; using Umbraco.Web; using Current = Umbraco.Web.Composing.Current; + namespace Umbraco.Tests.Web { @@ -36,6 +38,7 @@ namespace Umbraco.Tests.Web typeFinder, NoAppCache.Instance, new DirectoryInfo(ioHelper.MapPath("~/App_Data/TEMP")), + Mock.Of>(), new ProfilingLogger(Mock.Of(), Mock.Of()) ) ); diff --git a/src/Umbraco.Web.BackOffice/Controllers/AuthenticationController.cs b/src/Umbraco.Web.BackOffice/Controllers/AuthenticationController.cs index 3669911841..a6b350da91 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/AuthenticationController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/AuthenticationController.cs @@ -8,10 +8,10 @@ using Microsoft.AspNetCore.Routing; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.BackOffice; using Umbraco.Core.Configuration.Models; -using Umbraco.Core.Logging; using Umbraco.Core.Mapping; using Umbraco.Core.Models; using Umbraco.Core.Models.Membership; @@ -47,7 +47,7 @@ namespace Umbraco.Web.BackOffice.Controllers private readonly UmbracoMapper _umbracoMapper; private readonly GlobalSettings _globalSettings; private readonly SecuritySettings _securitySettings; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IIpResolver _ipResolver; private readonly UserPasswordConfigurationSettings _passwordConfiguration; private readonly IEmailSender _emailSender; @@ -67,7 +67,7 @@ namespace Umbraco.Web.BackOffice.Controllers UmbracoMapper umbracoMapper, IOptions globalSettings, IOptions securitySettings, - ILogger logger, + ILogger logger, IIpResolver ipResolver, IOptions passwordConfiguration, IEmailSender emailSender, @@ -151,7 +151,7 @@ namespace Umbraco.Web.BackOffice.Controllers //NOTE: We are using 30 seconds because that is what is coded into angular to force logout to give some headway in // the timeout process. - _logger.Info( + _logger.LogInformation( "User logged will be logged out due to timeout: {Username}, IP Address: {IPAddress}", backOfficeIdentity.Name, _ipResolver.GetCurrentRequestIpAddress()); @@ -354,19 +354,19 @@ namespace Umbraco.Web.BackOffice.Controllers var lockedOut = await _userManager.IsLockedOutAsync(identityUser); if (lockedOut) { - _logger.Info("User {UserId} is currently locked out, unlocking and resetting AccessFailedCount", model.UserId); + _logger.LogInformation("User {UserId} is currently locked out, unlocking and resetting AccessFailedCount", model.UserId); //// var user = await UserManager.FindByIdAsync(model.UserId); var unlockResult = await _userManager.SetLockoutEndDateAsync(identityUser, DateTimeOffset.Now); if (unlockResult.Succeeded == false) { - _logger.Warn("Could not unlock for user {UserId} - error {UnlockError}", model.UserId, unlockResult.Errors.First().Description); + _logger.LogWarning("Could not unlock for user {UserId} - error {UnlockError}", model.UserId, unlockResult.Errors.First().Description); } var resetAccessFailedCountResult = await _userManager.ResetAccessFailedCountAsync(identityUser); if (resetAccessFailedCountResult.Succeeded == false) { - _logger.Warn("Could not reset access failed count {UserId} - error {UnlockError}", model.UserId, unlockResult.Errors.First().Description); + _logger.LogWarning("Could not reset access failed count {UserId} - error {UnlockError}", model.UserId, unlockResult.Errors.First().Description); } } @@ -412,7 +412,7 @@ namespace Umbraco.Web.BackOffice.Controllers { HttpContext.SignOutAsync(Core.Constants.Security.BackOfficeAuthenticationType); - _logger.Info("User {UserName} from IP address {RemoteIpAddress} has logged out", User.Identity == null ? "UNKNOWN" : User.Identity.Name, HttpContext.Connection.RemoteIpAddress); + _logger.LogInformation("User {UserName} from IP address {RemoteIpAddress} has logged out", User.Identity == null ? "UNKNOWN" : User.Identity.Name, HttpContext.Connection.RemoteIpAddress); _userManager.RaiseLogoutSuccessEvent(User, int.Parse(User.Identity.GetUserId())); diff --git a/src/Umbraco.Web.BackOffice/Controllers/BackOfficeAssetsController.cs b/src/Umbraco.Web.BackOffice/Controllers/BackOfficeAssetsController.cs index 5ee7cf31cf..bbb8195aa0 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/BackOfficeAssetsController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/BackOfficeAssetsController.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using Microsoft.Extensions.Logging; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; using Umbraco.Core; @@ -9,7 +10,6 @@ using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Hosting; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Web.Common.Attributes; namespace Umbraco.Web.BackOffice.Controllers @@ -19,9 +19,9 @@ namespace Umbraco.Web.BackOffice.Controllers { private readonly IFileSystem _jsLibFileSystem; - public BackOfficeAssetsController(IIOHelper ioHelper, IHostingEnvironment hostingEnvironment, ILogger logger, IOptions globalSettings) + public BackOfficeAssetsController(IIOHelper ioHelper, IHostingEnvironment hostingEnvironment, ILoggerFactory loggerFactory, IOptions globalSettings) { - _jsLibFileSystem = new PhysicalFileSystem(ioHelper, hostingEnvironment, logger, globalSettings.Value.UmbracoPath + Path.DirectorySeparatorChar + "lib"); + _jsLibFileSystem = new PhysicalFileSystem(ioHelper, hostingEnvironment, loggerFactory.CreateLogger(), globalSettings.Value.UmbracoPath + Path.DirectorySeparatorChar + "lib"); } [HttpGet] diff --git a/src/Umbraco.Web.BackOffice/Controllers/BackOfficeController.cs b/src/Umbraco.Web.BackOffice/Controllers/BackOfficeController.cs index 877a6cfa51..7a8adca44f 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/BackOfficeController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/BackOfficeController.cs @@ -7,6 +7,7 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.BackOffice; using Umbraco.Core.Cache; @@ -14,7 +15,6 @@ using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Grid; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Hosting; -using Umbraco.Core.Logging; using Umbraco.Core.Security; using Umbraco.Core.Serialization; using Umbraco.Core.Services; @@ -47,7 +47,7 @@ namespace Umbraco.Web.BackOffice.Controllers private readonly AppCaches _appCaches; private readonly BackOfficeSignInManager _signInManager; private readonly IBackofficeSecurityAccessor _backofficeSecurityAccessor; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IJsonSerializer _jsonSerializer; public BackOfficeController( @@ -61,7 +61,7 @@ namespace Umbraco.Web.BackOffice.Controllers AppCaches appCaches, BackOfficeSignInManager signInManager, IBackofficeSecurityAccessor backofficeSecurityAccessor, - ILogger logger, + ILogger logger, IJsonSerializer jsonSerializer) { _userManager = userManager; @@ -102,7 +102,7 @@ namespace Umbraco.Web.BackOffice.Controllers if (invite == null) { - _logger.Warn("VerifyUser endpoint reached with invalid token: NULL"); + _logger.LogWarning("VerifyUser endpoint reached with invalid token: NULL"); return RedirectToAction(nameof(Default)); } @@ -110,7 +110,7 @@ namespace Umbraco.Web.BackOffice.Controllers if (parts.Length != 2) { - _logger.Warn("VerifyUser endpoint reached with invalid token: {Invite}", invite); + _logger.LogWarning("VerifyUser endpoint reached with invalid token: {Invite}", invite); return RedirectToAction(nameof(Default)); } @@ -119,7 +119,7 @@ namespace Umbraco.Web.BackOffice.Controllers var decoded = token.FromUrlBase64(); if (decoded.IsNullOrWhiteSpace()) { - _logger.Warn("VerifyUser endpoint reached with invalid token: {Invite}", invite); + _logger.LogWarning("VerifyUser endpoint reached with invalid token: {Invite}", invite); return RedirectToAction(nameof(Default)); } @@ -128,7 +128,7 @@ namespace Umbraco.Web.BackOffice.Controllers var identityUser = await _userManager.FindByIdAsync(id); if (identityUser == null) { - _logger.Warn("VerifyUser endpoint reached with non existing user: {UserId}", id); + _logger.LogWarning("VerifyUser endpoint reached with non existing user: {UserId}", id); return RedirectToAction(nameof(Default)); } @@ -136,7 +136,7 @@ namespace Umbraco.Web.BackOffice.Controllers if (result.Succeeded == false) { - _logger.Warn("Could not verify email, Error: {Errors}, Token: {Invite}", result.Errors.ToErrorMessage(), invite); + _logger.LogWarning("Could not verify email, Error: {Errors}, Token: {Invite}", result.Errors.ToErrorMessage(), invite); return new RedirectResult(Url.Action(nameof(Default)) + "#/login/false?invite=3"); } diff --git a/src/Umbraco.Web.BackOffice/Controllers/ContentController.cs b/src/Umbraco.Web.BackOffice/Controllers/ContentController.cs index 1d5be66a02..96f0689b52 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/ContentController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/ContentController.cs @@ -7,10 +7,10 @@ using System.Net.Mime; using System.Text; using Microsoft.AspNetCore.Http.Extensions; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Dictionary; using Umbraco.Core.Events; -using Umbraco.Core.Logging; using Umbraco.Core.Mapping; using Umbraco.Core.Models; using Umbraco.Core.Models.ContentEditing; @@ -72,12 +72,13 @@ namespace Umbraco.Web.BackOffice.Controllers private readonly IMemberGroupService _memberGroupService; private readonly ISqlContext _sqlContext; private readonly Lazy> _allLangs; + private readonly ILogger _logger; public object Domains { get; private set; } public ContentController( ICultureDictionary cultureDictionary, - ILogger logger, + ILoggerFactory loggerFactory, IShortStringHelper shortStringHelper, IEventMessagesFactory eventMessages, ILocalizedTextService localizedTextService, @@ -99,7 +100,7 @@ namespace Umbraco.Web.BackOffice.Controllers ActionCollection actionCollection, IMemberGroupService memberGroupService, ISqlContext sqlContext) - : base(cultureDictionary, logger, shortStringHelper, eventMessages, localizedTextService) + : base(cultureDictionary, loggerFactory, shortStringHelper, eventMessages, localizedTextService) { _propertyEditors = propertyEditors; _contentService = contentService; @@ -120,6 +121,7 @@ namespace Umbraco.Web.BackOffice.Controllers _actionCollection = actionCollection; _memberGroupService = memberGroupService; _sqlContext = sqlContext; + _logger = loggerFactory.CreateLogger(); _allLangs = new Lazy>(() => _localizationService.GetAllLanguages().ToDictionary(x => x.IsoCode, x => x, StringComparer.InvariantCultureIgnoreCase)); @@ -1619,7 +1621,7 @@ namespace Umbraco.Web.BackOffice.Controllers var sortResult = contentService.Sort(sorted.IdSortOrder, _backofficeSecurityAccessor.BackofficeSecurity.CurrentUser.Id); if (!sortResult.Success) { - Logger.Warn("Content sorting failed, this was probably caused by an event being cancelled"); + _logger.LogWarning("Content sorting failed, this was probably caused by an event being cancelled"); // TODO: Now you can cancel sorting, does the event messages bubble up automatically? throw HttpResponseException.CreateValidationErrorResponse("Content sorting failed, this was probably caused by an event being cancelled"); } @@ -1628,7 +1630,7 @@ namespace Umbraco.Web.BackOffice.Controllers } catch (Exception ex) { - Logger.Error(ex, "Could not update content sort order"); + _logger.LogError(ex, "Could not update content sort order"); throw; } } @@ -2001,7 +2003,7 @@ namespace Umbraco.Web.BackOffice.Controllers if (template == null) { //ModelState.AddModelError("Template", "No template exists with the specified alias: " + contentItem.TemplateAlias); - Logger.Warn("No template exists with the specified alias: {TemplateAlias}", contentSave.TemplateAlias); + _logger.LogWarning("No template exists with the specified alias: {TemplateAlias}", contentSave.TemplateAlias); } else if (template.Id != contentSave.PersistedContent.TemplateId) { diff --git a/src/Umbraco.Web.BackOffice/Controllers/ContentControllerBase.cs b/src/Umbraco.Web.BackOffice/Controllers/ContentControllerBase.cs index 9e9f7e8fbd..d2b751837c 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/ContentControllerBase.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/ContentControllerBase.cs @@ -3,13 +3,13 @@ using System.Linq; using System.Net; using System.Net.Http; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; using Umbraco.Composing; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Configuration; using Umbraco.Core.Dictionary; using Umbraco.Core.Events; -using Umbraco.Core.Logging; using Umbraco.Core.Mapping; using Umbraco.Core.Models; using Umbraco.Core.Models.Editors; @@ -30,20 +30,22 @@ namespace Umbraco.Web.BackOffice.Controllers public abstract class ContentControllerBase : BackOfficeNotificationsController { protected ICultureDictionary CultureDictionary { get; } - protected ILogger Logger { get; } + protected ILoggerFactory LoggerFactory { get; } protected IShortStringHelper ShortStringHelper { get; } protected IEventMessagesFactory EventMessages { get; } protected ILocalizedTextService LocalizedTextService { get; } + private readonly ILogger _logger; protected ContentControllerBase( ICultureDictionary cultureDictionary, - ILogger logger, + ILoggerFactory loggerFactory, IShortStringHelper shortStringHelper, IEventMessagesFactory eventMessages, ILocalizedTextService localizedTextService) { CultureDictionary = cultureDictionary; - Logger = logger; + LoggerFactory = loggerFactory; + _logger = loggerFactory.CreateLogger(); ShortStringHelper = shortStringHelper; EventMessages = eventMessages; LocalizedTextService = localizedTextService; @@ -78,7 +80,7 @@ namespace Umbraco.Web.BackOffice.Controllers // get the property editor if (propertyDto.PropertyEditor == null) { - Logger.Warn("No property editor found for property {PropertyAlias}", propertyDto.Alias); + _logger.LogWarning("No property editor found for property {PropertyAlias}", propertyDto.Alias); continue; } diff --git a/src/Umbraco.Web.BackOffice/Controllers/ContentTypeController.cs b/src/Umbraco.Web.BackOffice/Controllers/ContentTypeController.cs index 7955b82eeb..6d15333abd 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/ContentTypeController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/ContentTypeController.cs @@ -8,6 +8,7 @@ using System.Text; using System.Threading.Tasks; using System.Xml; using System.Xml.Linq; +using Microsoft.Extensions.Logging; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Core; @@ -15,7 +16,6 @@ using Umbraco.Core.Configuration; using Umbraco.Core.Dictionary; using Umbraco.Core.Hosting; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Packaging; using Umbraco.Core.PropertyEditors; @@ -62,7 +62,8 @@ namespace Umbraco.Web.BackOffice.Controllers private readonly IShortStringHelper _shortStringHelper; private readonly ILocalizedTextService _localizedTextService; private readonly IFileService _fileService; - private readonly ILogger _logger; + private readonly ILogger _logger; + private readonly ILoggerFactory _loggerFactory; private readonly IContentService _contentService; private readonly IContentTypeBaseServiceProvider _contentTypeBaseServiceProvider; private readonly ILocalizationService _LocalizationService; @@ -86,7 +87,8 @@ namespace Umbraco.Web.BackOffice.Controllers IDataTypeService dataTypeService, IShortStringHelper shortStringHelper, IFileService fileService, - ILogger logger, + ILogger logger, + ILoggerFactory loggerFactory, IContentService contentService, IContentTypeBaseServiceProvider contentTypeBaseServiceProvider, ILocalizationService localizationService, @@ -115,6 +117,7 @@ namespace Umbraco.Web.BackOffice.Controllers _localizedTextService = localizedTextService; _fileService = fileService; _logger = logger; + _loggerFactory = loggerFactory; _contentService = contentService; _contentTypeBaseServiceProvider = contentTypeBaseServiceProvider; _LocalizationService = localizationService; @@ -463,7 +466,7 @@ namespace Umbraco.Web.BackOffice.Controllers var tryCreateTemplate = _fileService.CreateTemplateForContentType(contentTypeAlias, contentTypeName); if (tryCreateTemplate == false) { - _logger.Warn("Could not create a template for Content Type: \"{ContentTypeAlias}\", status: {Status}", + _logger.LogWarning("Could not create a template for Content Type: \"{ContentTypeAlias}\", status: {Status}", contentTypeAlias, tryCreateTemplate.Result.Result); } @@ -617,7 +620,7 @@ namespace Umbraco.Web.BackOffice.Controllers return NotFound(); } - var dataInstaller = new PackageDataInstallation(_logger, _fileService, _macroService, _LocalizationService, + var dataInstaller = new PackageDataInstallation(_loggerFactory.CreateLogger(), _loggerFactory, _fileService, _macroService, _LocalizationService, _dataTypeService, _entityService, _contentTypeService, _contentService, _propertyEditors, _scopeProvider, _shortStringHelper, Options.Create(_globalSettings), _localizedTextService); var xd = new XmlDocument {XmlResolver = null}; @@ -634,7 +637,7 @@ namespace Umbraco.Web.BackOffice.Controllers } catch (Exception ex) { - _logger.Error(ex, "Error cleaning up temporary udt file in App_Data: {File}", filePath); + _logger.LogError(ex, "Error cleaning up temporary udt file in App_Data: {File}", filePath); } return Ok(); diff --git a/src/Umbraco.Web.BackOffice/Controllers/CurrentUserController.cs b/src/Umbraco.Web.BackOffice/Controllers/CurrentUserController.cs index abd9e6ab1d..8efe13782a 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/CurrentUserController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/CurrentUserController.cs @@ -6,6 +6,7 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; using Newtonsoft.Json; using Umbraco.Core; using Umbraco.Core.BackOffice; @@ -13,7 +14,6 @@ using Umbraco.Core.Cache; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Hosting; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Mapping; using Umbraco.Core.Media; using Umbraco.Core.Security; @@ -44,7 +44,7 @@ namespace Umbraco.Web.BackOffice.Controllers private readonly IUserService _userService; private readonly UmbracoMapper _umbracoMapper; private readonly IBackOfficeUserManager _backOfficeUserManager; - private readonly ILogger _logger; + private readonly ILoggerFactory _loggerFactory; private readonly ILocalizedTextService _localizedTextService; private readonly AppCaches _appCaches; private readonly IShortStringHelper _shortStringHelper; @@ -58,7 +58,7 @@ namespace Umbraco.Web.BackOffice.Controllers IUserService userService, UmbracoMapper umbracoMapper, IBackOfficeUserManager backOfficeUserManager, - ILogger logger, + ILoggerFactory loggerFactory, ILocalizedTextService localizedTextService, AppCaches appCaches, IShortStringHelper shortStringHelper) @@ -71,7 +71,7 @@ namespace Umbraco.Web.BackOffice.Controllers _userService = userService; _umbracoMapper = umbracoMapper; _backOfficeUserManager = backOfficeUserManager; - _logger = logger; + _loggerFactory = loggerFactory; _localizedTextService = localizedTextService; _appCaches = appCaches; _shortStringHelper = shortStringHelper; @@ -216,7 +216,7 @@ namespace Umbraco.Web.BackOffice.Controllers /// public async Task> PostChangePassword(ChangingPasswordModel data) { - var passwordChanger = new PasswordChanger(_logger); + var passwordChanger = new PasswordChanger(_loggerFactory.CreateLogger()); var passwordChangeResult = await passwordChanger.ChangePasswordWithIdentityAsync(_backofficeSecurityAccessor.BackofficeSecurity.CurrentUser, _backofficeSecurityAccessor.BackofficeSecurity.CurrentUser, data, _backOfficeUserManager); if (passwordChangeResult.Success) diff --git a/src/Umbraco.Web.BackOffice/Controllers/DashboardController.cs b/src/Umbraco.Web.BackOffice/Controllers/DashboardController.cs index 8970a70b34..0d341e9a04 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/DashboardController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/DashboardController.cs @@ -9,8 +9,8 @@ using System; using System.Linq; using System.Text; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; using Umbraco.Core.Cache; -using Umbraco.Core.Logging; using Umbraco.Core.Persistence; using Umbraco.Core.Services; using Umbraco.Core.Strings; @@ -34,7 +34,7 @@ namespace Umbraco.Web.BackOffice.Controllers { private readonly IUmbracoContextAccessor _umbracoContextAccessor; private readonly AppCaches _appCaches; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IDashboardService _dashboardService; private readonly IUmbracoVersion _umbracoVersion; private readonly IShortStringHelper _shortStringHelper; @@ -47,7 +47,7 @@ namespace Umbraco.Web.BackOffice.Controllers ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, - ILogger logger, + ILogger logger, IRuntimeState runtimeState, IDashboardService dashboardService, IUmbracoVersion umbracoVersion, @@ -97,7 +97,7 @@ namespace Umbraco.Web.BackOffice.Controllers } catch (HttpRequestException ex) { - _logger.Error(ex.InnerException ?? ex, "Error getting dashboard content from {Url}", url); + _logger.LogError(ex.InnerException ?? ex, "Error getting dashboard content from {Url}", url); //it's still new JObject() - we return it like this to avoid error codes which triggers UI warnings _appCaches.RuntimeCache.InsertCacheItem(key, () => result, new TimeSpan(0, 5, 0)); @@ -135,7 +135,7 @@ namespace Umbraco.Web.BackOffice.Controllers } catch (HttpRequestException ex) { - _logger.Error(ex.InnerException ?? ex, "Error getting dashboard CSS from {Url}", url); + _logger.LogError(ex.InnerException ?? ex, "Error getting dashboard CSS from {Url}", url); //it's still string.Empty - we return it like this to avoid error codes which triggers UI warnings _appCaches.RuntimeCache.InsertCacheItem(key, () => result, new TimeSpan(0, 5, 0)); @@ -198,7 +198,7 @@ namespace Umbraco.Web.BackOffice.Controllers } catch (HttpRequestException ex) { - _logger.Error(ex.InnerException ?? ex, "Error getting remote dashboard data from {UrlPrefix}{Url}", urlPrefix, url); + _logger.LogError(ex.InnerException ?? ex, "Error getting remote dashboard data from {UrlPrefix}{Url}", urlPrefix, url); //it's still string.Empty - we return it like this to avoid error codes which triggers UI warnings _appCaches.RuntimeCache.InsertCacheItem(key, () => result, new TimeSpan(0, 5, 0)); diff --git a/src/Umbraco.Web.BackOffice/Controllers/DictionaryController.cs b/src/Umbraco.Web.BackOffice/Controllers/DictionaryController.cs index 207dee60f4..dded7dad30 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/DictionaryController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/DictionaryController.cs @@ -3,9 +3,9 @@ using System.Collections.Generic; using System.Linq; using System.Net.Http; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Configuration; -using Umbraco.Core.Logging; using Umbraco.Core.Mapping; using Umbraco.Core.Models; using Umbraco.Core.Security; @@ -33,7 +33,7 @@ namespace Umbraco.Web.BackOffice.Controllers [UmbracoTreeAuthorize(Constants.Trees.Dictionary)] public class DictionaryController : BackOfficeNotificationsController { - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly ILocalizationService _localizationService; private readonly IBackofficeSecurityAccessor _backofficeSecurityAccessor; private readonly GlobalSettings _globalSettings; @@ -41,7 +41,7 @@ namespace Umbraco.Web.BackOffice.Controllers private readonly UmbracoMapper _umbracoMapper; public DictionaryController( - ILogger logger, + ILogger logger, ILocalizationService localizationService, IBackofficeSecurityAccessor backofficeSecurityAccessor, IOptions globalSettings, @@ -127,7 +127,7 @@ namespace Umbraco.Web.BackOffice.Controllers } catch (Exception ex) { - _logger.Error(GetType(), ex, "Error creating dictionary with {Name} under {ParentId}", key, parentId); + _logger.LogError(ex, "Error creating dictionary with {Name} under {ParentId}", key, parentId); throw HttpResponseException.CreateNotificationValidationErrorResponse("Error creating dictionary item"); } } @@ -260,7 +260,7 @@ namespace Umbraco.Web.BackOffice.Controllers } catch (Exception ex) { - _logger.Error(GetType(), ex, "Error saving dictionary with {Name} under {ParentId}", dictionary.Name, dictionary.ParentId); + _logger.LogError(ex, "Error saving dictionary with {Name} under {ParentId}", dictionary.Name, dictionary.ParentId); throw HttpResponseException.CreateNotificationValidationErrorResponse("Something went wrong saving dictionary"); } } diff --git a/src/Umbraco.Web.BackOffice/Controllers/ExamineManagementController.cs b/src/Umbraco.Web.BackOffice/Controllers/ExamineManagementController.cs index a302f7f7cf..72f07c02f3 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/ExamineManagementController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/ExamineManagementController.cs @@ -4,10 +4,10 @@ using System.Linq; using Examine; using Microsoft.AspNetCore.Http.Features; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Examine; using Umbraco.Extensions; using Umbraco.Web.Common.Attributes; @@ -22,14 +22,14 @@ namespace Umbraco.Web.BackOffice.Controllers public class ExamineManagementController : UmbracoAuthorizedJsonController { private readonly IExamineManager _examineManager; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IIOHelper _ioHelper; private readonly IIndexDiagnosticsFactory _indexDiagnosticsFactory; private readonly IAppPolicyCache _runtimeCache; private readonly IndexRebuilder _indexRebuilder; - public ExamineManagementController(IExamineManager examineManager, ILogger logger, IIOHelper ioHelper, IIndexDiagnosticsFactory indexDiagnosticsFactory, + public ExamineManagementController(IExamineManager examineManager, ILogger logger, IIOHelper ioHelper, IIndexDiagnosticsFactory indexDiagnosticsFactory, AppCaches appCaches, IndexRebuilder indexRebuilder) { @@ -136,7 +136,7 @@ namespace Umbraco.Web.BackOffice.Controllers if (!validate.IsSuccessStatusCode()) throw new HttpResponseException(validate); - _logger.Info("Rebuilding index '{IndexName}'", indexName); + _logger.LogInformation("Rebuilding index '{IndexName}'", indexName); //remove it in case there's a handler there already index.IndexOperationComplete -= Indexer_IndexOperationComplete; @@ -162,7 +162,7 @@ namespace Umbraco.Web.BackOffice.Controllers { //ensure it's not listening index.IndexOperationComplete -= Indexer_IndexOperationComplete; - _logger.Error(ex, "An error occurred rebuilding index"); + _logger.LogError(ex, "An error occurred rebuilding index"); var response = new ConflictObjectResult("The index could not be rebuilt at this time, most likely there is another thread currently writing to the index. Error: {ex}"); HttpContext.SetReasonPhrase("Could Not Rebuild"); @@ -245,14 +245,12 @@ namespace Umbraco.Web.BackOffice.Controllers { var indexer = (IIndex)sender; - _logger.Debug("Logging operation completed for index {IndexName}", indexer.Name); + _logger.LogDebug("Logging operation completed for index {IndexName}", indexer.Name); //ensure it's not listening anymore indexer.IndexOperationComplete -= Indexer_IndexOperationComplete; - _logger - .Info($"Rebuilding index '{indexer.Name}' done."); + _logger.LogInformation($"Rebuilding index '{indexer.Name}' done."); var cacheKey = "temp_indexing_op_" + indexer.Name; _runtimeCache.Clear(cacheKey); diff --git a/src/Umbraco.Web.BackOffice/Controllers/HelpController.cs b/src/Umbraco.Web.BackOffice/Controllers/HelpController.cs index 24ec184519..285915873c 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/HelpController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/HelpController.cs @@ -3,8 +3,8 @@ using System.Collections.Generic; using System.Net.Http; using System.Runtime.Serialization; using System.Threading.Tasks; +using Microsoft.Extensions.Logging; using Umbraco.Core; -using Umbraco.Core.Logging; using Umbraco.Web.Common.Attributes; using Umbraco.Web.Editors; @@ -13,9 +13,9 @@ namespace Umbraco.Web.BackOffice.Controllers [PluginController(Constants.Web.Mvc.BackOfficeApiArea)] public class HelpController : UmbracoAuthorizedJsonController { - private readonly ILogger _logger; + private readonly ILogger _logger; - public HelpController(ILogger logger) + public HelpController(ILogger logger) { _logger = logger; } @@ -40,7 +40,7 @@ namespace Umbraco.Web.BackOffice.Controllers } catch (HttpRequestException rex) { - _logger.Info(GetType(), $"Check your network connection, exception: {rex.Message}"); + _logger.LogInformation($"Check your network connection, exception: {rex.Message}"); } return new List(); diff --git a/src/Umbraco.Web.BackOffice/Controllers/MacrosController.cs b/src/Umbraco.Web.BackOffice/Controllers/MacrosController.cs index b64a4753bb..9b6878dcbe 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/MacrosController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/MacrosController.cs @@ -5,8 +5,8 @@ using System.IO; using System.Linq; using System.Net.Http; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; using Umbraco.Core.Hosting; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Strings; using Umbraco.Web.Models.ContentEditing; @@ -34,7 +34,7 @@ namespace Umbraco.Web.BackOffice.Controllers private readonly IMacroService _macroService; private readonly IShortStringHelper _shortStringHelper; private readonly IBackofficeSecurityAccessor _backofficeSecurityAccessor; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IHostingEnvironment _hostingEnvironment; private readonly UmbracoMapper _umbracoMapper; @@ -43,7 +43,7 @@ namespace Umbraco.Web.BackOffice.Controllers IMacroService macroService, IShortStringHelper shortStringHelper, IBackofficeSecurityAccessor backofficeSecurityAccessor, - ILogger logger, + ILogger logger, IHostingEnvironment hostingEnvironment, UmbracoMapper umbracoMapper ) @@ -103,7 +103,7 @@ namespace Umbraco.Web.BackOffice.Controllers catch (Exception exception) { const string errorMessage = "Error creating macro"; - _logger.Error(exception, errorMessage); + _logger.LogError(exception, errorMessage); throw HttpResponseException.CreateNotificationValidationErrorResponse(errorMessage); } } @@ -227,7 +227,7 @@ namespace Umbraco.Web.BackOffice.Controllers catch (Exception exception) { const string errorMessage = "Error creating macro"; - _logger.Error(exception, errorMessage); + _logger.LogError(exception, errorMessage); throw HttpResponseException.CreateNotificationValidationErrorResponse(errorMessage); } } diff --git a/src/Umbraco.Web.BackOffice/Controllers/MediaController.cs b/src/Umbraco.Web.BackOffice/Controllers/MediaController.cs index 8b6a60d299..5bf6798170 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/MediaController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/MediaController.cs @@ -8,6 +8,7 @@ using System.Text; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Umbraco.Core; using Umbraco.Core.Configuration; @@ -16,7 +17,6 @@ using Umbraco.Core.Dictionary; using Umbraco.Core.Events; using Umbraco.Core.Hosting; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Mapping; using Umbraco.Core.Media; using Umbraco.Core.Models; @@ -64,10 +64,11 @@ namespace Umbraco.Web.BackOffice.Controllers private readonly IContentTypeBaseServiceProvider _contentTypeBaseServiceProvider; private readonly IRelationService _relationService; private readonly IImageUrlGenerator _imageUrlGenerator; + private readonly ILogger _logger; public MediaController( ICultureDictionary cultureDictionary, - ILogger logger, + ILoggerFactory loggerFactory, IShortStringHelper shortStringHelper, IEventMessagesFactory eventMessages, ILocalizedTextService localizedTextService, @@ -85,7 +86,7 @@ namespace Umbraco.Web.BackOffice.Controllers IMediaFileSystem mediaFileSystem, IHostingEnvironment hostingEnvironment, IImageUrlGenerator imageUrlGenerator) - : base(cultureDictionary, logger, shortStringHelper, eventMessages, localizedTextService) + : base(cultureDictionary, loggerFactory, shortStringHelper, eventMessages, localizedTextService) { _shortStringHelper = shortStringHelper; _contentSettings = contentSettings.Value; @@ -102,6 +103,7 @@ namespace Umbraco.Web.BackOffice.Controllers _propertyEditors = propertyEditors; _mediaFileSystem = mediaFileSystem; _hostingEnvironment = hostingEnvironment; + _logger = loggerFactory.CreateLogger(); _imageUrlGenerator = imageUrlGenerator; } @@ -626,14 +628,14 @@ namespace Umbraco.Web.BackOffice.Controllers // Save Media with new sort order and update content xml in db accordingly if (mediaService.Sort(sortedMedia) == false) { - Logger.Warn("Media sorting failed, this was probably caused by an event being cancelled"); + _logger.LogWarning("Media sorting failed, this was probably caused by an event being cancelled"); throw HttpResponseException.CreateValidationErrorResponse("Media sorting failed, this was probably caused by an event being cancelled"); } return Ok(); } catch (Exception ex) { - Logger.Error(ex, "Could not update media sort order"); + _logger.LogError(ex, "Could not update media sort order"); throw; } } diff --git a/src/Umbraco.Web.BackOffice/Controllers/MemberController.cs b/src/Umbraco.Web.BackOffice/Controllers/MemberController.cs index 6d60da0910..18393421d2 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/MemberController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/MemberController.cs @@ -8,12 +8,12 @@ using System.Net.Mime; using System.Text; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Umbraco.Core; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Dictionary; using Umbraco.Core.Events; -using Umbraco.Core.Logging; using Umbraco.Core.Mapping; using Umbraco.Core.Models; using Umbraco.Core.Models.ContentEditing; @@ -59,7 +59,7 @@ namespace Umbraco.Web.BackOffice.Controllers public MemberController( ICultureDictionary cultureDictionary, - ILogger logger, + ILoggerFactory loggerFactory, IShortStringHelper shortStringHelper, IEventMessagesFactory eventMessages, ILocalizedTextService localizedTextService, @@ -72,7 +72,7 @@ namespace Umbraco.Web.BackOffice.Controllers IDataTypeService dataTypeService, IBackofficeSecurityAccessor backofficeSecurityAccessor, IJsonSerializer jsonSerializer) - : base(cultureDictionary, logger, shortStringHelper, eventMessages, localizedTextService) + : base(cultureDictionary, loggerFactory, shortStringHelper, eventMessages, localizedTextService) { _passwordConfig = passwordConfig.Value; _propertyEditors = propertyEditors; diff --git a/src/Umbraco.Web.BackOffice/Controllers/PackageInstallController.cs b/src/Umbraco.Web.BackOffice/Controllers/PackageInstallController.cs index fe9523f410..4959ffe2aa 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/PackageInstallController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/PackageInstallController.cs @@ -5,11 +5,11 @@ using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; using Semver; using Umbraco.Core; using Umbraco.Core.Configuration; using Umbraco.Core.Hosting; -using Umbraco.Core.Logging; using Umbraco.Core.Models.Packaging; using Umbraco.Net; using Umbraco.Core.Packaging; @@ -38,7 +38,7 @@ namespace Umbraco.Web.BackOffice.Controllers private readonly IUmbracoApplicationLifetime _umbracoApplicationLifetime; private readonly IRuntimeMinifier _runtimeMinifier; private readonly IPackagingService _packagingService; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IBackofficeSecurityAccessor _backofficeSecurityAccessor; private readonly ILocalizedTextService _localizedTextService; @@ -48,7 +48,7 @@ namespace Umbraco.Web.BackOffice.Controllers IUmbracoApplicationLifetime umbracoApplicationLifetime, IRuntimeMinifier runtimeMinifier, IPackagingService packagingService, - ILogger logger, + ILogger logger, IBackofficeSecurityAccessor backofficeSecurityAccessor, ILocalizedTextService localizedTextService) { @@ -100,7 +100,7 @@ namespace Umbraco.Web.BackOffice.Controllers } catch (Exception ex) { - _logger.Error(ex, "Failed to uninstall."); + _logger.LogError(ex, "Failed to uninstall."); throw; } diff --git a/src/Umbraco.Web.BackOffice/Controllers/RedirectUrlManagementController.cs b/src/Umbraco.Web.BackOffice/Controllers/RedirectUrlManagementController.cs index c5a2108ced..898cf123a5 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/RedirectUrlManagementController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/RedirectUrlManagementController.cs @@ -2,7 +2,7 @@ using System.Xml; using System.Security; using Microsoft.AspNetCore.Mvc; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Core.Models; using Umbraco.Web.Models.ContentEditing; using Umbraco.Core; @@ -22,7 +22,7 @@ namespace Umbraco.Web.BackOffice.Controllers [PluginController(Constants.Web.Mvc.BackOfficeApiArea)] public class RedirectUrlManagementController : UmbracoAuthorizedApiController { - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly WebRoutingSettings _webRoutingSettings; private readonly IBackofficeSecurityAccessor _backofficeSecurityAccessor; private readonly IRedirectUrlService _redirectUrlService; @@ -31,7 +31,7 @@ namespace Umbraco.Web.BackOffice.Controllers private readonly IConfigManipulator _configManipulator; public RedirectUrlManagementController( - ILogger logger, + ILogger logger, IOptions webRoutingSettings, IBackofficeSecurityAccessor backofficeSecurityAccessor, IRedirectUrlService redirectUrlService, @@ -116,7 +116,7 @@ namespace Umbraco.Web.BackOffice.Controllers if (userIsAdmin == false) { var errorMessage = "User is not a member of the administrators group and so is not allowed to toggle the URL tracker"; - _logger.Debug(errorMessage); + _logger.LogDebug(errorMessage); throw new SecurityException(errorMessage); } diff --git a/src/Umbraco.Web.BackOffice/Controllers/RelationTypeController.cs b/src/Umbraco.Web.BackOffice/Controllers/RelationTypeController.cs index 54fc3352d3..1ab5bd9bfa 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/RelationTypeController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/RelationTypeController.cs @@ -4,8 +4,8 @@ using System.Linq; using System.Net; using System.Net.Http; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; using Umbraco.Core; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Services; using Umbraco.Core.Strings; @@ -25,13 +25,13 @@ namespace Umbraco.Web.BackOffice.Controllers [UmbracoTreeAuthorize(Constants.Trees.RelationTypes)] public class RelationTypeController : BackOfficeNotificationsController { - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly UmbracoMapper _umbracoMapper; private readonly IRelationService _relationService; private readonly IShortStringHelper _shortStringHelper; public RelationTypeController( - ILogger logger, + ILogger logger, UmbracoMapper umbracoMapper, IRelationService relationService, IShortStringHelper shortStringHelper) @@ -154,7 +154,7 @@ namespace Umbraco.Web.BackOffice.Controllers } catch (Exception ex) { - _logger.Error(GetType(), ex, "Error creating relation type with {Name}", relationType.Name); + _logger.LogError(ex, "Error creating relation type with {Name}", relationType.Name); throw HttpResponseException.CreateNotificationValidationErrorResponse("Error creating relation type."); } } @@ -185,7 +185,7 @@ namespace Umbraco.Web.BackOffice.Controllers } catch (Exception ex) { - _logger.Error(GetType(), ex, "Error saving relation type with {Id}", relationType.Id); + _logger.LogError(ex, "Error saving relation type with {Id}", relationType.Id); throw HttpResponseException.CreateNotificationValidationErrorResponse("Something went wrong when saving the relation type"); } } diff --git a/src/Umbraco.Web.BackOffice/Controllers/UsersController.cs b/src/Umbraco.Web.BackOffice/Controllers/UsersController.cs index 3e7216e497..d45951a3df 100644 --- a/src/Umbraco.Web.BackOffice/Controllers/UsersController.cs +++ b/src/Umbraco.Web.BackOffice/Controllers/UsersController.cs @@ -11,6 +11,7 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Routing; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.BackOffice; using Umbraco.Core.Cache; @@ -18,7 +19,6 @@ using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Hosting; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Mapping; using Umbraco.Core.Media; using Umbraco.Core.Models; @@ -73,7 +73,7 @@ namespace Umbraco.Web.BackOffice.Controllers private readonly IContentService _contentService; private readonly GlobalSettings _globalSettings; private readonly IBackOfficeUserManager _backOfficeUserManager; - private readonly ILogger _logger; + private readonly ILoggerFactory _loggerFactory; private readonly LinkGenerator _linkGenerator; public UsersController( @@ -96,7 +96,7 @@ namespace Umbraco.Web.BackOffice.Controllers IContentService contentService, IOptions globalSettings, IBackOfficeUserManager backOfficeUserManager, - ILogger logger, + ILoggerFactory loggerFactory, LinkGenerator linkGenerator) { _mediaFileSystem = mediaFileSystem; @@ -118,7 +118,7 @@ namespace Umbraco.Web.BackOffice.Controllers _contentService = contentService; _globalSettings = globalSettings.Value; _backOfficeUserManager = backOfficeUserManager; - _logger = logger; + _loggerFactory = loggerFactory; _linkGenerator = linkGenerator; } @@ -661,7 +661,7 @@ namespace Umbraco.Web.BackOffice.Controllers throw new HttpResponseException(HttpStatusCode.NotFound); } - var passwordChanger = new PasswordChanger(_logger); + var passwordChanger = new PasswordChanger(_loggerFactory.CreateLogger()); var passwordChangeResult = await passwordChanger.ChangePasswordWithIdentityAsync(_backofficeSecurityAccessor.BackofficeSecurity.CurrentUser, found, changingPasswordModel, _backOfficeUserManager); if (passwordChangeResult.Success) diff --git a/src/Umbraco.Web.BackOffice/Filters/ContentModelValidator.cs b/src/Umbraco.Web.BackOffice/Filters/ContentModelValidator.cs index eee5cb6d30..812e4e0a73 100644 --- a/src/Umbraco.Web.BackOffice/Filters/ContentModelValidator.cs +++ b/src/Umbraco.Web.BackOffice/Filters/ContentModelValidator.cs @@ -6,7 +6,7 @@ using System.Linq; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; using Microsoft.AspNetCore.Mvc.ModelBinding; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Core.Models; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; @@ -24,9 +24,9 @@ namespace Umbraco.Web.BackOffice.Filters protected IBackofficeSecurity BackofficeSecurity { get; } public IPropertyValidationService PropertyValidationService { get; } - protected ILogger Logger { get; } + protected ILogger Logger { get; } - protected ContentModelValidator(ILogger logger, IBackofficeSecurity backofficeSecurity, IPropertyValidationService propertyValidationService) + protected ContentModelValidator(ILogger logger, IBackofficeSecurity backofficeSecurity, IPropertyValidationService propertyValidationService) { Logger = logger ?? throw new ArgumentNullException(nameof(logger)); BackofficeSecurity = backofficeSecurity ?? throw new ArgumentNullException(nameof(backofficeSecurity)); @@ -52,7 +52,7 @@ namespace Umbraco.Web.BackOffice.Filters private readonly ILocalizedTextService _textService; protected ContentModelValidator( - ILogger logger, + ILogger logger, IBackofficeSecurity backofficeSecurity, ILocalizedTextService textService, IPropertyValidationService propertyValidationService) @@ -144,7 +144,7 @@ namespace Umbraco.Web.BackOffice.Filters { var message = $"Could not find property editor \"{p.DataType.EditorAlias}\" for property with id {p.Id}."; - Logger.Warn(message); + Logger.LogWarning(message); continue; } diff --git a/src/Umbraco.Web.BackOffice/Filters/ContentSaveModelValidator.cs b/src/Umbraco.Web.BackOffice/Filters/ContentSaveModelValidator.cs index a73b20dca5..bf28b2ff63 100644 --- a/src/Umbraco.Web.BackOffice/Filters/ContentSaveModelValidator.cs +++ b/src/Umbraco.Web.BackOffice/Filters/ContentSaveModelValidator.cs @@ -1,4 +1,4 @@ -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Core.Models; using Umbraco.Core.Services; using Umbraco.Web.Models.ContentEditing; @@ -12,7 +12,7 @@ namespace Umbraco.Web.BackOffice.Filters internal class ContentSaveModelValidator : ContentModelValidator { public ContentSaveModelValidator( - ILogger logger, + ILogger logger, IBackofficeSecurity backofficeSecurity, ILocalizedTextService textService, IPropertyValidationService propertyValidationService) diff --git a/src/Umbraco.Web.BackOffice/Filters/ContentSaveValidationAttribute.cs b/src/Umbraco.Web.BackOffice/Filters/ContentSaveValidationAttribute.cs index 457929690f..c2717f7335 100644 --- a/src/Umbraco.Web.BackOffice/Filters/ContentSaveValidationAttribute.cs +++ b/src/Umbraco.Web.BackOffice/Filters/ContentSaveValidationAttribute.cs @@ -4,8 +4,8 @@ using System.Linq; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; using Microsoft.AspNetCore.Mvc.Infrastructure; +using Microsoft.Extensions.Logging; using Umbraco.Core; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Security; using Umbraco.Core.Services; @@ -32,14 +32,14 @@ namespace Umbraco.Web.BackOffice.Filters private readonly IContentService _contentService; private readonly IEntityService _entityService; private readonly IPropertyValidationService _propertyValidationService; - private readonly ILogger _logger; + private readonly ILoggerFactory _loggerFactory; private readonly ILocalizedTextService _textService; private readonly IUserService _userService; private readonly IBackofficeSecurityAccessor _backofficeSecurityAccessor; public ContentSaveValidationFilter( - ILogger logger, + ILoggerFactory loggerFactory, IBackofficeSecurityAccessor backofficeSecurityAccessor, ILocalizedTextService textService, IContentService contentService, @@ -47,7 +47,7 @@ namespace Umbraco.Web.BackOffice.Filters IEntityService entityService, IPropertyValidationService propertyValidationService) { - _logger = logger ?? throw new ArgumentNullException(nameof(logger)); + _loggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory)); _backofficeSecurityAccessor = backofficeSecurityAccessor ?? throw new ArgumentNullException(nameof(backofficeSecurityAccessor)); _textService = textService ?? throw new ArgumentNullException(nameof(textService)); _contentService = contentService ?? throw new ArgumentNullException(nameof(contentService)); @@ -59,7 +59,7 @@ namespace Umbraco.Web.BackOffice.Filters public void OnActionExecuting(ActionExecutingContext context) { var model = (ContentItemSave) context.ActionArguments["contentItem"]; - var contentItemValidator = new ContentSaveModelValidator(_logger, _backofficeSecurityAccessor.BackofficeSecurity, _textService, _propertyValidationService); + var contentItemValidator = new ContentSaveModelValidator(_loggerFactory.CreateLogger(), _backofficeSecurityAccessor.BackofficeSecurity, _textService, _propertyValidationService); if (!ValidateAtLeastOneVariantIsBeingSaved(model, context)) return; if (!contentItemValidator.ValidateExistingContent(model, context)) return; diff --git a/src/Umbraco.Web.BackOffice/Filters/FileUploadCleanupFilterAttribute.cs b/src/Umbraco.Web.BackOffice/Filters/FileUploadCleanupFilterAttribute.cs index 0646f94121..d008b2d536 100644 --- a/src/Umbraco.Web.BackOffice/Filters/FileUploadCleanupFilterAttribute.cs +++ b/src/Umbraco.Web.BackOffice/Filters/FileUploadCleanupFilterAttribute.cs @@ -5,8 +5,8 @@ using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; +using Microsoft.Extensions.Logging; using Umbraco.Core; -using Umbraco.Core.Logging; using Umbraco.Web.Models.ContentEditing; namespace Umbraco.Web.WebApi.Filters @@ -36,10 +36,10 @@ namespace Umbraco.Web.WebApi.Filters private class FileUploadCleanupFilter : IAsyncActionFilter { - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly bool _incomingModel; - public FileUploadCleanupFilter(ILogger logger, bool incomingModel) + public FileUploadCleanupFilter(ILogger logger, bool incomingModel) { _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _incomingModel = incomingModel; @@ -75,7 +75,7 @@ namespace Umbraco.Web.WebApi.Filters } catch (Exception ex) { - _logger.Error(ex, + _logger.LogError(ex, "Could not delete temp file {FileName}", f.TempFilePath); } } @@ -86,20 +86,20 @@ namespace Umbraco.Web.WebApi.Filters { if (context == null) { - _logger.Warn("The context is null!!??"); + _logger.LogWarning("The context is null!!??"); return Task.CompletedTask; } if (context.Result == null) { - _logger.Warn( + _logger.LogWarning( "The context.Result is null!!??"); return Task.CompletedTask; } if(!(context.Result is ObjectResult objectResult)) { - _logger.Warn( + _logger.LogWarning( "Could not acquire context.Result as ObjectResult"); return Task.CompletedTask; } @@ -120,7 +120,7 @@ namespace Umbraco.Web.WebApi.Filters tempFolders.Add(dir); } - _logger.Debug( + _logger.LogDebug( "Removing temp file {FileName}", f.TempFilePath); try @@ -129,7 +129,7 @@ namespace Umbraco.Web.WebApi.Filters } catch (Exception ex) { - _logger.Error(ex, + _logger.LogError(ex, "Could not delete temp file {FileName}", f.TempFilePath); } @@ -138,20 +138,20 @@ namespace Umbraco.Web.WebApi.Filters } else { - _logger.Warn( + _logger.LogWarning( "The f.TempFilePath is null or whitespace!!??"); } } } else { - _logger.Warn( + _logger.LogWarning( "The uploadedFiles.UploadedFiles is null!!??"); } } else { - _logger.Warn( + _logger.LogWarning( "The actionExecutedContext.Request.Content.Value is not IHaveUploadedFiles, it is {ObjectType}", objectResult.Value.GetType()); } diff --git a/src/Umbraco.Web.BackOffice/Filters/MediaItemSaveValidationAttribute.cs b/src/Umbraco.Web.BackOffice/Filters/MediaItemSaveValidationAttribute.cs index ee89a8e2fd..d30cf7c7ea 100644 --- a/src/Umbraco.Web.BackOffice/Filters/MediaItemSaveValidationAttribute.cs +++ b/src/Umbraco.Web.BackOffice/Filters/MediaItemSaveValidationAttribute.cs @@ -1,8 +1,8 @@ using System; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; +using Microsoft.Extensions.Logging; using Umbraco.Core; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Security; using Umbraco.Core.Services; @@ -27,20 +27,20 @@ namespace Umbraco.Web.BackOffice.Filters private readonly IPropertyValidationService _propertyValidationService; - private readonly ILogger _logger; private readonly IMediaService _mediaService; private readonly ILocalizedTextService _textService; + private readonly ILoggerFactory _loggerFactory; private readonly IBackofficeSecurityAccessor _backofficeSecurityAccessor; public MediaItemSaveValidationFilter( - ILogger logger, + ILoggerFactory loggerFactory, IBackofficeSecurityAccessor backofficeSecurityAccessor, ILocalizedTextService textService, IMediaService mediaService, IEntityService entityService, IPropertyValidationService propertyValidationService) { - _logger = logger ?? throw new ArgumentNullException(nameof(logger)); + _loggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory)); _backofficeSecurityAccessor = backofficeSecurityAccessor ?? throw new ArgumentNullException(nameof(backofficeSecurityAccessor)); _textService = textService ?? throw new ArgumentNullException(nameof(textService)); _mediaService = mediaService ?? throw new ArgumentNullException(nameof(mediaService)); @@ -51,7 +51,7 @@ namespace Umbraco.Web.BackOffice.Filters public void OnActionExecuting(ActionExecutingContext context) { var model = (MediaItemSave) context.ActionArguments["contentItem"]; - var contentItemValidator = new MediaSaveModelValidator(_logger, _backofficeSecurityAccessor.BackofficeSecurity, _textService, _propertyValidationService); + var contentItemValidator = new MediaSaveModelValidator(_loggerFactory.CreateLogger(), _backofficeSecurityAccessor.BackofficeSecurity, _textService, _propertyValidationService); if (ValidateUserAccess(model, context)) { diff --git a/src/Umbraco.Web.BackOffice/Filters/MediaSaveModelValidator.cs b/src/Umbraco.Web.BackOffice/Filters/MediaSaveModelValidator.cs index 7eaf0cb60f..e906226809 100644 --- a/src/Umbraco.Web.BackOffice/Filters/MediaSaveModelValidator.cs +++ b/src/Umbraco.Web.BackOffice/Filters/MediaSaveModelValidator.cs @@ -1,4 +1,4 @@ -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Core.Models; using Umbraco.Core.Services; using Umbraco.Web.Models.ContentEditing; @@ -12,7 +12,7 @@ namespace Umbraco.Web.BackOffice.Filters internal class MediaSaveModelValidator : ContentModelValidator> { public MediaSaveModelValidator( - ILogger logger, + ILogger logger, IBackofficeSecurity backofficeSecurity, ILocalizedTextService textService, IPropertyValidationService propertyValidationService) diff --git a/src/Umbraco.Web.BackOffice/Filters/MemberSaveModelValidator.cs b/src/Umbraco.Web.BackOffice/Filters/MemberSaveModelValidator.cs index 9ca7cc4f31..7b3fa00835 100644 --- a/src/Umbraco.Web.BackOffice/Filters/MemberSaveModelValidator.cs +++ b/src/Umbraco.Web.BackOffice/Filters/MemberSaveModelValidator.cs @@ -4,8 +4,8 @@ using System.Linq; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; using Microsoft.AspNetCore.Mvc.ModelBinding; +using Microsoft.Extensions.Logging; using Umbraco.Core; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Services; using Umbraco.Core.Strings; @@ -25,7 +25,7 @@ namespace Umbraco.Web.BackOffice.Filters private readonly IShortStringHelper _shortStringHelper; public MemberSaveModelValidator( - ILogger logger, + ILogger logger, IBackofficeSecurity backofficeSecurity, ILocalizedTextService textService, IMemberTypeService memberTypeService, diff --git a/src/Umbraco.Web.BackOffice/Filters/MemberSaveValidationAttribute.cs b/src/Umbraco.Web.BackOffice/Filters/MemberSaveValidationAttribute.cs index bfa03264c3..1bbe4a80b7 100644 --- a/src/Umbraco.Web.BackOffice/Filters/MemberSaveValidationAttribute.cs +++ b/src/Umbraco.Web.BackOffice/Filters/MemberSaveValidationAttribute.cs @@ -1,7 +1,7 @@ using System; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Core.Security; using Umbraco.Core.Services; using Umbraco.Core.Strings; @@ -22,7 +22,7 @@ namespace Umbraco.Web.BackOffice.Filters private sealed class MemberSaveValidationFilter : IActionFilter { - private readonly ILogger _logger; + private readonly ILoggerFactory _loggerFactory; private readonly IBackofficeSecurityAccessor _backofficeSecurityAccessor; private readonly ILocalizedTextService _textService; private readonly IMemberTypeService _memberTypeService; @@ -31,7 +31,7 @@ namespace Umbraco.Web.BackOffice.Filters private readonly IPropertyValidationService _propertyValidationService; public MemberSaveValidationFilter( - ILogger logger, + ILoggerFactory loggerFactory, IBackofficeSecurityAccessor backofficeSecurityAccessor, ILocalizedTextService textService, IMemberTypeService memberTypeService, @@ -39,7 +39,7 @@ namespace Umbraco.Web.BackOffice.Filters IShortStringHelper shortStringHelper, IPropertyValidationService propertyValidationService) { - _logger = logger ?? throw new ArgumentNullException(nameof(logger)); + _loggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory)); _backofficeSecurityAccessor = backofficeSecurityAccessor ?? throw new ArgumentNullException(nameof(backofficeSecurityAccessor)); _textService = textService ?? throw new ArgumentNullException(nameof(textService)); _memberTypeService = memberTypeService ?? throw new ArgumentNullException(nameof(memberTypeService)); @@ -51,7 +51,7 @@ namespace Umbraco.Web.BackOffice.Filters public void OnActionExecuting(ActionExecutingContext context) { var model = (MemberSave)context.ActionArguments["contentItem"]; - var contentItemValidator = new MemberSaveModelValidator(_logger, _backofficeSecurityAccessor.BackofficeSecurity, _textService, _memberTypeService, _memberService, _shortStringHelper, _propertyValidationService); + var contentItemValidator = new MemberSaveModelValidator(_loggerFactory.CreateLogger(), _backofficeSecurityAccessor.BackofficeSecurity, _textService, _memberTypeService, _memberService, _shortStringHelper, _propertyValidationService); //now do each validation step if (contentItemValidator.ValidateExistingContent(model, context)) if (contentItemValidator.ValidateProperties(model, model, context)) diff --git a/src/Umbraco.Web.BackOffice/Filters/ValidateAngularAntiForgeryTokenAttribute.cs b/src/Umbraco.Web.BackOffice/Filters/ValidateAngularAntiForgeryTokenAttribute.cs index acafacff47..556a84e0dc 100644 --- a/src/Umbraco.Web.BackOffice/Filters/ValidateAngularAntiForgeryTokenAttribute.cs +++ b/src/Umbraco.Web.BackOffice/Filters/ValidateAngularAntiForgeryTokenAttribute.cs @@ -6,8 +6,8 @@ using Microsoft.AspNetCore.Antiforgery; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; +using Microsoft.Extensions.Logging; using Umbraco.Core; -using Umbraco.Core.Logging; using Umbraco.Extensions; using Umbraco.Web.BackOffice.Security; @@ -29,11 +29,11 @@ namespace Umbraco.Web.BackOffice.Filters private class ValidateAngularAntiForgeryTokenFilter : IAsyncActionFilter { - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IBackOfficeAntiforgery _antiforgery; private readonly ICookieManager _cookieManager; - public ValidateAngularAntiForgeryTokenFilter(ILogger logger, IBackOfficeAntiforgery antiforgery, ICookieManager cookieManager) + public ValidateAngularAntiForgeryTokenFilter(ILogger logger, IBackOfficeAntiforgery antiforgery, ICookieManager cookieManager) { _logger = logger; _antiforgery = antiforgery; @@ -104,7 +104,7 @@ namespace Umbraco.Web.BackOffice.Filters } catch (AntiforgeryValidationException ex) { - _logger.Error(ex, "Could not validate XSRF token"); + _logger.LogError(ex, "Could not validate XSRF token"); return false; } } diff --git a/src/Umbraco.Web.BackOffice/HealthCheck/HealthCheckController.cs b/src/Umbraco.Web.BackOffice/HealthCheck/HealthCheckController.cs index fc5ea85dfa..99535d3d30 100644 --- a/src/Umbraco.Web.BackOffice/HealthCheck/HealthCheckController.cs +++ b/src/Umbraco.Web.BackOffice/HealthCheck/HealthCheckController.cs @@ -3,13 +3,13 @@ using System.Collections.Generic; using System.Linq; using Microsoft.AspNetCore.Mvc; using Umbraco.Core; -using Umbraco.Core.Logging; using Umbraco.Core.Configuration.HealthChecks; using Umbraco.Web.BackOffice.Filters; using Umbraco.Web.HealthCheck; using Umbraco.Web.Common.Attributes; using Umbraco.Core.Configuration.Models; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; namespace Umbraco.Web.BackOffice.Controllers { @@ -22,9 +22,9 @@ namespace Umbraco.Web.BackOffice.Controllers { private readonly HealthCheckCollection _checks; private readonly IList _disabledCheckIds; - private readonly ILogger _logger; + private readonly ILogger _logger; - public HealthCheckController(HealthCheckCollection checks, ILogger logger, IOptions healthChecksSettings) + public HealthCheckController(HealthCheckCollection checks, ILogger logger, IOptions healthChecksSettings) { _checks = checks ?? throw new ArgumentNullException(nameof(checks)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); @@ -73,7 +73,7 @@ namespace Umbraco.Web.BackOffice.Controllers } catch (Exception ex) { - _logger.Error(ex, "Exception in health check: {HealthCheckName}", check.Name); + _logger.LogError(ex, "Exception in health check: {HealthCheckName}", check.Name); throw; } } diff --git a/src/Umbraco.Web.BackOffice/Mapping/ContentMapDefinition.cs b/src/Umbraco.Web.BackOffice/Mapping/ContentMapDefinition.cs index af8862bdec..8124a91377 100644 --- a/src/Umbraco.Web.BackOffice/Mapping/ContentMapDefinition.cs +++ b/src/Umbraco.Web.BackOffice/Mapping/ContentMapDefinition.cs @@ -1,9 +1,9 @@ using System; using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Dictionary; -using Umbraco.Core.Logging; using Umbraco.Core.Mapping; using Umbraco.Core.Models; using Umbraco.Core.Models.PublishedContent; @@ -30,7 +30,7 @@ namespace Umbraco.Web.Models.Mapping private readonly IUmbracoContextAccessor _umbracoContextAccessor; private readonly IPublishedRouter _publishedRouter; private readonly ILocalizationService _localizationService; - private readonly ILogger _logger; + private readonly ILoggerFactory _loggerFactory; private readonly IUserService _userService; private readonly IEntityService _entityService; private readonly IVariationContextAccessor _variationContextAccessor; @@ -43,7 +43,7 @@ namespace Umbraco.Web.Models.Mapping public ContentMapDefinition(CommonMapper commonMapper, CommonTreeNodeMapper commonTreeNodeMapper, ICultureDictionary cultureDictionary, ILocalizedTextService localizedTextService, IContentService contentService, IContentTypeService contentTypeService, - IFileService fileService, IUmbracoContextAccessor umbracoContextAccessor, IPublishedRouter publishedRouter, ILocalizationService localizationService, ILogger logger, + IFileService fileService, IUmbracoContextAccessor umbracoContextAccessor, IPublishedRouter publishedRouter, ILocalizationService localizationService, ILoggerFactory loggerFactory, IUserService userService, IVariationContextAccessor variationContextAccessor, IContentTypeBaseServiceProvider contentTypeBaseServiceProvider, UriUtility uriUtility, IPublishedUrlProvider publishedUrlProvider, IEntityService entityService) { _commonMapper = commonMapper; @@ -56,7 +56,7 @@ namespace Umbraco.Web.Models.Mapping _umbracoContextAccessor = umbracoContextAccessor; _publishedRouter = publishedRouter; _localizationService = localizationService; - _logger = logger; + _loggerFactory = loggerFactory; _userService = userService; _entityService = entityService; _variationContextAccessor = variationContextAccessor; @@ -188,7 +188,7 @@ namespace Umbraco.Web.Models.Mapping var urls = umbracoContext == null ? new[] { UrlInfo.Message("Cannot generate urls without a current Umbraco Context") } - : source.GetContentUrls(_publishedRouter, umbracoContext, _localizationService, _localizedTextService, _contentService, _variationContextAccessor, _logger, _uriUtility, _publishedUrlProvider).ToArray(); + : source.GetContentUrls(_publishedRouter, umbracoContext, _localizationService, _localizedTextService, _contentService, _variationContextAccessor, _loggerFactory.CreateLogger(), _uriUtility, _publishedUrlProvider).ToArray(); return urls; } diff --git a/src/Umbraco.Web.BackOffice/PropertyEditors/RteEmbedController.cs b/src/Umbraco.Web.BackOffice/PropertyEditors/RteEmbedController.cs index 5ce8e09280..164864410c 100644 --- a/src/Umbraco.Web.BackOffice/PropertyEditors/RteEmbedController.cs +++ b/src/Umbraco.Web.BackOffice/PropertyEditors/RteEmbedController.cs @@ -1,6 +1,6 @@ using System; using System.Text.RegularExpressions; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Web.BackOffice.Controllers; using Umbraco.Core.Media; using Umbraco.Web.Common.Attributes; @@ -16,9 +16,9 @@ namespace Umbraco.Web.BackOffice.PropertyEditors public class RteEmbedController : UmbracoAuthorizedJsonController { private readonly EmbedProvidersCollection _embedCollection; - private readonly ILogger _logger; + private readonly ILogger _logger; - public RteEmbedController(EmbedProvidersCollection embedCollection, ILogger logger) + public RteEmbedController(EmbedProvidersCollection embedCollection, ILogger logger) { _embedCollection = embedCollection ?? throw new ArgumentNullException(nameof(embedCollection)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); @@ -63,7 +63,7 @@ namespace Umbraco.Web.BackOffice.PropertyEditors } catch(Exception ex) { - _logger.Error(ex, "Error embedding url {Url} - width: {Width} height: {Height}", url, width, height); + _logger.LogError(ex, "Error embedding url {Url} - width: {Width} height: {Height}", url, width, height); result.OEmbedStatus = OEmbedStatus.Error; } diff --git a/src/Umbraco.Web.BackOffice/Runtime/BackOfficeComposer.cs b/src/Umbraco.Web.BackOffice/Runtime/BackOfficeComposer.cs index 177465bcde..1ce0724aea 100644 --- a/src/Umbraco.Web.BackOffice/Runtime/BackOfficeComposer.cs +++ b/src/Umbraco.Web.BackOffice/Runtime/BackOfficeComposer.cs @@ -1,9 +1,9 @@ using System.Linq; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Composing; using Umbraco.Core.Hosting; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Services; using Umbraco.Extensions; using Umbraco.Web.BackOffice.Controllers; @@ -44,7 +44,7 @@ namespace Umbraco.Web.BackOffice.Runtime new PhysicalFileSystem( factory.GetInstance(), factory.GetInstance(), - factory.GetInstance(), + factory.GetInstance>(), "~/")); composition.RegisterUnique(); diff --git a/src/Umbraco.Web.BackOffice/Security/PasswordChanger.cs b/src/Umbraco.Web.BackOffice/Security/PasswordChanger.cs index 76ecaa32e3..1a4298cd6b 100644 --- a/src/Umbraco.Web.BackOffice/Security/PasswordChanger.cs +++ b/src/Umbraco.Web.BackOffice/Security/PasswordChanger.cs @@ -1,9 +1,9 @@ using System; using System.ComponentModel.DataAnnotations; using System.Threading.Tasks; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.BackOffice; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Extensions; using Umbraco.Web.Models; @@ -13,9 +13,9 @@ namespace Umbraco.Web.BackOffice.Security { internal class PasswordChanger { - private readonly ILogger _logger; + private readonly ILogger _logger; - public PasswordChanger(ILogger logger) + public PasswordChanger(ILogger logger) { _logger = logger; } @@ -72,7 +72,7 @@ namespace Umbraco.Web.BackOffice.Security if (resetResult.Succeeded == false) { var errors = resetResult.Errors.ToErrorMessage(); - _logger.Warn("Could not reset user password {PasswordErrors}", errors); + _logger.LogWarning("Could not reset user password {PasswordErrors}", errors); return Attempt.Fail(new PasswordChangedModel { ChangeError = new ValidationResult(errors, new[] { "value" }) }); } @@ -92,7 +92,7 @@ namespace Umbraco.Web.BackOffice.Security { //no, fail with error messages for "password" var errors = changeResult.Errors.ToErrorMessage(); - _logger.Warn("Could not change user password {PasswordErrors}", errors); + _logger.LogWarning("Could not change user password {PasswordErrors}", errors); return Attempt.Fail(new PasswordChangedModel { ChangeError = new ValidationResult(errors, new[] { "password" }) }); } return Attempt.Succeed(new PasswordChangedModel()); diff --git a/src/Umbraco.Web.BackOffice/Trees/ContentTreeController.cs b/src/Umbraco.Web.BackOffice/Trees/ContentTreeController.cs index ab5ae19d77..1685b329dd 100644 --- a/src/Umbraco.Web.BackOffice/Trees/ContentTreeController.cs +++ b/src/Umbraco.Web.BackOffice/Trees/ContentTreeController.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Net; using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; @@ -12,7 +13,6 @@ using Umbraco.Web.Models.Trees; using Umbraco.Web.Models.ContentEditing; using Umbraco.Web.Search; using Umbraco.Core.Configuration; -using Umbraco.Core.Logging; using Umbraco.Core.Security; using Constants = Umbraco.Core.Constants; using Umbraco.Web.BackOffice.Filters; @@ -58,7 +58,7 @@ namespace Umbraco.Web.Trees IMenuItemCollectionFactory menuItemCollectionFactory, IEntityService entityService, IBackofficeSecurityAccessor backofficeSecurityAccessor, - ILogger logger, + ILogger logger, ActionCollection actionCollection, IUserService userService, IDataTypeService dataTypeService, diff --git a/src/Umbraco.Web.BackOffice/Trees/ContentTreeControllerBase.cs b/src/Umbraco.Web.BackOffice/Trees/ContentTreeControllerBase.cs index ef2f4c2899..227bfd5746 100644 --- a/src/Umbraco.Web.BackOffice/Trees/ContentTreeControllerBase.cs +++ b/src/Umbraco.Web.BackOffice/Trees/ContentTreeControllerBase.cs @@ -3,9 +3,9 @@ using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Net; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Services; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Web.Models.Trees; using Umbraco.Core.Models.Entities; @@ -26,7 +26,7 @@ namespace Umbraco.Web.Trees { private readonly IEntityService _entityService; private readonly IBackofficeSecurityAccessor _backofficeSecurityAccessor; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly ActionCollection _actionCollection; private readonly IUserService _userService; private readonly IDataTypeService _dataTypeService; @@ -39,7 +39,7 @@ namespace Umbraco.Web.Trees IMenuItemCollectionFactory menuItemCollectionFactory, IEntityService entityService, IBackofficeSecurityAccessor backofficeSecurityAccessor, - ILogger logger, + ILogger logger, ActionCollection actionCollection, IUserService userService, IDataTypeService dataTypeService @@ -196,7 +196,7 @@ namespace Umbraco.Web.Trees // TODO: in the future we could return a validation statement so we can have some UI to notify the user they don't have access if (ignoreUserStartNodes == false && HasPathAccess(id, queryStrings) == false) { - _logger.Warn("User {Username} does not have access to node with id {Id}", _backofficeSecurityAccessor.BackofficeSecurity.CurrentUser.Username, id); + _logger.LogWarning("User {Username} does not have access to node with id {Id}", _backofficeSecurityAccessor.BackofficeSecurity.CurrentUser.Username, id); return nodes; } diff --git a/src/Umbraco.Web.BackOffice/Trees/MediaTreeController.cs b/src/Umbraco.Web.BackOffice/Trees/MediaTreeController.cs index bfcb3507f3..10edcd46c7 100644 --- a/src/Umbraco.Web.BackOffice/Trees/MediaTreeController.cs +++ b/src/Umbraco.Web.BackOffice/Trees/MediaTreeController.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Net; using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Models; using Umbraco.Core.Models.Entities; @@ -11,7 +12,6 @@ using Umbraco.Web.Actions; using Umbraco.Web.Models.Trees; using Umbraco.Web.Models.ContentEditing; using Umbraco.Web.Search; -using Umbraco.Core.Logging; using Umbraco.Core.Security; using Constants = Umbraco.Core.Constants; using Umbraco.Web.BackOffice.Filters; @@ -48,7 +48,7 @@ namespace Umbraco.Web.Trees IMenuItemCollectionFactory menuItemCollectionFactory, IEntityService entityService, IBackofficeSecurityAccessor backofficeSecurityAccessor, - ILogger logger, + ILogger logger, ActionCollection actionCollection, IUserService userService, IDataTypeService dataTypeService, diff --git a/src/Umbraco.Web.Common/Controllers/PluginController.cs b/src/Umbraco.Web.Common/Controllers/PluginController.cs index f78fa1a7e4..d5b033c26e 100644 --- a/src/Umbraco.Web.Common/Controllers/PluginController.cs +++ b/src/Umbraco.Web.Common/Controllers/PluginController.cs @@ -49,11 +49,6 @@ namespace Umbraco.Web.Common.Controllers /// public AppCaches AppCaches { get; } - /// - /// Gets or sets the logger. - /// - public ILogger Logger { get; } - /// /// Gets or sets the profiling logger. /// @@ -64,13 +59,12 @@ namespace Umbraco.Web.Common.Controllers /// internal PluginControllerMetadata Metadata => GetMetadata(GetType()); - protected PluginController(IUmbracoContextAccessor umbracoContextAccessor, IUmbracoDatabaseFactory databaseFactory, ServiceContext services, AppCaches appCaches, ILogger logger, IProfilingLogger profilingLogger) + protected PluginController(IUmbracoContextAccessor umbracoContextAccessor, IUmbracoDatabaseFactory databaseFactory, ServiceContext services, AppCaches appCaches, IProfilingLogger profilingLogger) { UmbracoContextAccessor = umbracoContextAccessor; DatabaseFactory = databaseFactory; Services = services; AppCaches = appCaches; - Logger = logger; ProfilingLogger = profilingLogger; } diff --git a/src/Umbraco.Web.Common/Extensions/ImageCropperTemplateExtensions.cs b/src/Umbraco.Web.Common/Extensions/ImageCropperTemplateExtensions.cs index ddcd8e7abe..77c07e85b2 100644 --- a/src/Umbraco.Web.Common/Extensions/ImageCropperTemplateExtensions.cs +++ b/src/Umbraco.Web.Common/Extensions/ImageCropperTemplateExtensions.cs @@ -4,6 +4,7 @@ using Newtonsoft.Json; using Umbraco.Composing; using Umbraco.Core; using Umbraco.Core.PropertyEditors.ValueConverters; +using Microsoft.Extensions.Logging; namespace Umbraco.Extensions { @@ -27,7 +28,7 @@ namespace Umbraco.Extensions } catch (Exception ex) { - Current.Logger.Error(typeof(ImageCropperTemplateExtensions), ex, "Could not parse the json string: {Json}", json); + Current.Logger.LogError(ex, "Could not parse the json string: {Json}", json); } } diff --git a/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs b/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs index 212faa3670..1b3cde509a 100644 --- a/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs +++ b/src/Umbraco.Web.Common/Extensions/UmbracoCoreServiceCollectionExtensions.cs @@ -13,6 +13,7 @@ using Microsoft.Extensions.Options; using Serilog; using Serilog.Extensions.Hosting; using Serilog.Extensions.Logging; +using Umbraco.Composing; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Composing; @@ -30,7 +31,7 @@ using Umbraco.Web.Common.Profiler; using ConnectionStrings = Umbraco.Core.Configuration.Models.ConnectionStrings; using CoreDebugSettings = Umbraco.Core.Configuration.Models.CoreDebugSettings; using IHostingEnvironment = Umbraco.Core.Hosting.IHostingEnvironment; -using ILogger = Umbraco.Core.Logging.ILogger; +using ILogger = Microsoft.Extensions.Logging.ILogger; namespace Umbraco.Extensions { @@ -232,7 +233,7 @@ namespace Umbraco.Extensions ILoggingConfiguration loggingConfiguration, IConfiguration configuration, //TODO: Yep that's extremely ugly - Func getRuntime, + Func getRuntime, out IFactory factory) { if (services is null) throw new ArgumentNullException(nameof(services)); @@ -272,18 +273,19 @@ namespace Umbraco.Extensions hostingSettings, webHostEnvironment, loggingConfiguration, - configuration, - out var logger, out var ioHelper, out var hostingEnvironment, out var backOfficeInfo, out var profiler); + configuration, out var ioHelper, out var hostingEnvironment, out var backOfficeInfo, out var profiler); + + var loggerFactory = serviceProvider.GetService(); var umbracoVersion = new UmbracoVersion(); - var typeFinder = CreateTypeFinder(logger, profiler, webHostEnvironment, entryAssembly, typeFinderSettings); + var typeFinder = CreateTypeFinder(loggerFactory, profiler, webHostEnvironment, entryAssembly, typeFinderSettings); var coreRuntime = getRuntime( globalSettings.CurrentValue, connectionStrings.Value, umbracoVersion, ioHelper, - logger, + loggerFactory, profiler, hostingEnvironment, backOfficeInfo, @@ -303,16 +305,16 @@ namespace Umbraco.Extensions return services; } - private static ITypeFinder CreateTypeFinder(Core.Logging.ILogger logger, IProfiler profiler, IWebHostEnvironment webHostEnvironment, Assembly entryAssembly, IOptionsMonitor typeFinderSettings) + private static ITypeFinder CreateTypeFinder(ILoggerFactory loggerFactory, IProfiler profiler, IWebHostEnvironment webHostEnvironment, Assembly entryAssembly, IOptionsMonitor typeFinderSettings) { var runtimeHashPaths = new RuntimeHashPaths(); runtimeHashPaths.AddFolder(new DirectoryInfo(Path.Combine(webHostEnvironment.ContentRootPath, "bin"))); - var runtimeHash = new RuntimeHash(new ProfilingLogger(logger, profiler), runtimeHashPaths); - return new TypeFinder(logger, new DefaultUmbracoAssemblyProvider(entryAssembly), runtimeHash, new TypeFinderConfig(typeFinderSettings)); + var runtimeHash = new RuntimeHash(new ProfilingLogger(loggerFactory.CreateLogger("RuntimeHash"), profiler), runtimeHashPaths); + return new TypeFinder(loggerFactory.CreateLogger(), new DefaultUmbracoAssemblyProvider(entryAssembly), runtimeHash, new TypeFinderConfig(typeFinderSettings)); } private static IRuntime GetCoreRuntime( - GlobalSettings globalSettings, ConnectionStrings connectionStrings, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, ILogger logger, + GlobalSettings globalSettings, ConnectionStrings connectionStrings, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, ILoggerFactory loggerFactory, IProfiler profiler, IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo, ITypeFinder typeFinder, AppCaches appCaches, IDbProviderFactoryCreator dbProviderFactoryCreator) { @@ -321,17 +323,17 @@ namespace Umbraco.Extensions var isWindows = RuntimeInformation.IsOSPlatform(OSPlatform.Windows); var mainDomLock = appSettingMainDomLock == "SqlMainDomLock" || isWindows == false - ? (IMainDomLock)new SqlMainDomLock(logger, globalSettings, connectionStrings, dbProviderFactoryCreator, hostingEnvironment) - : new MainDomSemaphoreLock(logger, hostingEnvironment); + ? (IMainDomLock)new SqlMainDomLock(loggerFactory.CreateLogger(), loggerFactory, globalSettings, connectionStrings, dbProviderFactoryCreator, hostingEnvironment) + : new MainDomSemaphoreLock(loggerFactory.CreateLogger(), hostingEnvironment); - var mainDom = new MainDom(logger, mainDomLock); + var mainDom = new MainDom(loggerFactory.CreateLogger(), mainDomLock); var coreRuntime = new CoreRuntime( globalSettings, connectionStrings, umbracoVersion, ioHelper, - logger, + loggerFactory, profiler, new AspNetCoreBootPermissionsChecker(), hostingEnvironment, @@ -351,7 +353,6 @@ namespace Umbraco.Extensions IWebHostEnvironment webHostEnvironment, ILoggingConfiguration loggingConfiguration, IConfiguration configuration, - out Core.Logging.ILogger logger, out IIOHelper ioHelper, out Core.Hosting.IHostingEnvironment hostingEnvironment, out IBackOfficeInfo backOfficeInfo, @@ -362,7 +363,7 @@ namespace Umbraco.Extensions hostingEnvironment = new AspNetCoreHostingEnvironment(hostingSettings, webHostEnvironment); ioHelper = new IOHelper(hostingEnvironment); - logger = AddLogger(services, hostingEnvironment, loggingConfiguration, configuration); + AddLogger(services, hostingEnvironment, loggingConfiguration, configuration); backOfficeInfo = new AspNetCoreBackOfficeInfo(globalSettings); profiler = GetWebProfiler(hostingEnvironment); @@ -373,7 +374,11 @@ namespace Umbraco.Extensions /// Create and configure the logger /// /// - private static Core.Logging.ILogger AddLogger(IServiceCollection services, Core.Hosting.IHostingEnvironment hostingEnvironment, ILoggingConfiguration loggingConfiguration, IConfiguration configuration) + private static void AddLogger( + IServiceCollection services, + Core.Hosting.IHostingEnvironment hostingEnvironment, + ILoggingConfiguration loggingConfiguration, + IConfiguration configuration) { // Create a serilog logger var logger = SerilogLogger.CreateWithDefaultConfiguration(hostingEnvironment, loggingConfiguration, configuration); @@ -393,9 +398,6 @@ namespace Umbraco.Extensions configure.AddSerilog(logger.SerilogLog, false); }); - - //services.AddSingleton(services => new SerilogLoggerFactory(logger.SerilogLog, false)); - // This won't (and shouldn't) take ownership of the logger. services.AddSingleton(logger.SerilogLog); @@ -407,8 +409,6 @@ namespace Umbraco.Extensions // Consumed by user code services.AddSingleton(diagnosticContext); - - return logger; } private static IProfiler GetWebProfiler(Umbraco.Core.Hosting.IHostingEnvironment hostingEnvironment) diff --git a/src/Umbraco.Web.Common/Install/InstallApiController.cs b/src/Umbraco.Web.Common/Install/InstallApiController.cs index 3470553c56..8c32796ad8 100644 --- a/src/Umbraco.Web.Common/Install/InstallApiController.cs +++ b/src/Umbraco.Web.Common/Install/InstallApiController.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Reflection; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; using Newtonsoft.Json.Linq; using Umbraco.Core; using Umbraco.Core.Logging; @@ -31,10 +32,10 @@ namespace Umbraco.Web.Common.Install private readonly InstallStatusTracker _installStatusTracker; private readonly IUmbracoApplicationLifetime _umbracoApplicationLifetime; 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) { @@ -44,7 +45,7 @@ namespace Umbraco.Web.Common.Install _installStatusTracker = installStatusTracker; _umbracoApplicationLifetime = umbracoApplicationLifetime; InstallHelper = installHelper; - _logger = _proflog; + _logger = logger; } @@ -145,7 +146,7 @@ namespace Umbraco.Web.Common.Install } catch (Exception ex) { - _logger.Error(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) @@ -258,7 +259,7 @@ namespace Umbraco.Web.Common.Install } catch (Exception ex) { - _logger.Error(ex, "Checking if step requires execution ({Step}) failed.", + _logger.LogError(ex, "Checking if step requires execution ({Step}) failed.", step.Name); throw; } @@ -289,7 +290,7 @@ namespace Umbraco.Web.Common.Install } catch (Exception ex) { - _logger.Error(ex, "Installation step {Step} failed.", step.Name); + _logger.LogError(ex, "Installation step {Step} failed.", step.Name); throw; } } diff --git a/src/Umbraco.Web.Common/Install/InstallAuthorizeAttribute.cs b/src/Umbraco.Web.Common/Install/InstallAuthorizeAttribute.cs index 80a21d6724..6ccebc9b25 100644 --- a/src/Umbraco.Web.Common/Install/InstallAuthorizeAttribute.cs +++ b/src/Umbraco.Web.Common/Install/InstallAuthorizeAttribute.cs @@ -2,8 +2,8 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; using Umbraco.Core; -using Umbraco.Core.Logging; namespace Umbraco.Web.Common.Install { @@ -24,7 +24,7 @@ namespace Umbraco.Web.Common.Install var serviceProvider = authorizationFilterContext.HttpContext.RequestServices; var runtimeState = serviceProvider.GetService(); var umbracoContext = serviceProvider.GetService(); - var logger = serviceProvider.GetService(); + var logger = serviceProvider.GetService>(); if (!IsAllowed(runtimeState, umbracoContext, logger)) { @@ -33,7 +33,7 @@ namespace Umbraco.Web.Common.Install } - private static bool IsAllowed(IRuntimeState runtimeState, IUmbracoContext umbracoContext, ILogger logger) + private static bool IsAllowed(IRuntimeState runtimeState, IUmbracoContext umbracoContext, ILogger logger) { try { @@ -45,7 +45,7 @@ namespace Umbraco.Web.Common.Install } catch (Exception ex) { - logger.Error(ex, "An error occurred determining authorization"); + logger.LogError(ex, "An error occurred determining authorization"); return false; } } diff --git a/src/Umbraco.Web.Common/Install/InstallController.cs b/src/Umbraco.Web.Common/Install/InstallController.cs index 026f604d50..e908b4f128 100644 --- a/src/Umbraco.Web.Common/Install/InstallController.cs +++ b/src/Umbraco.Web.Common/Install/InstallController.cs @@ -2,11 +2,11 @@ using Microsoft.AspNetCore.Http.Extensions; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Routing; +using Microsoft.Extensions.Logging; using System.Threading.Tasks; using Umbraco.Core; using Umbraco.Core.Configuration; using Umbraco.Core.Hosting; -using Umbraco.Core.Logging; using Umbraco.Core.Security; using Umbraco.Core.WebAssets; using Umbraco.Extensions; @@ -32,7 +32,7 @@ namespace Umbraco.Web.Common.Install private readonly GlobalSettings _globalSettings; private readonly IHostingEnvironment _hostingEnvironment; private readonly IUmbracoVersion _umbracoVersion; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly LinkGenerator _linkGenerator; private readonly IRuntimeMinifier _runtimeMinifier; @@ -44,7 +44,7 @@ namespace Umbraco.Web.Common.Install IRuntimeMinifier runtimeMinifier, IHostingEnvironment hostingEnvironment, IUmbracoVersion umbracoVersion, - ILogger logger, + ILogger logger, LinkGenerator linkGenerator) { _backofficeSecurityAccessor = backofficeSecurityAccessor; @@ -116,12 +116,12 @@ namespace Umbraco.Web.Common.Install private static bool _reported; private static RuntimeLevel _reportedLevel; - private static void ReportRuntime(ILogger logger, RuntimeLevel level, string message) + private static void ReportRuntime(ILogger logger, RuntimeLevel level, string message) { if (_reported && _reportedLevel == level) return; _reported = true; _reportedLevel = level; - logger.Warn(typeof(UmbracoInstallApplicationBuilderExtensions), message); + logger.LogWarning(message); } } } diff --git a/src/Umbraco.Web.Common/Macros/MacroRenderer.cs b/src/Umbraco.Web.Common/Macros/MacroRenderer.cs index 58c1e59338..c0d2fdbdd4 100644 --- a/src/Umbraco.Web.Common/Macros/MacroRenderer.cs +++ b/src/Umbraco.Web.Common/Macros/MacroRenderer.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Text; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Configuration.Models; @@ -21,7 +22,8 @@ namespace Umbraco.Web.Macros { public class MacroRenderer : IMacroRenderer { - private readonly IProfilingLogger _plogger; + private readonly IProfilingLogger _profilingLogger; + private readonly ILogger _logger; private readonly IUmbracoContextAccessor _umbracoContextAccessor; private readonly ContentSettings _contentSettings; private readonly ILocalizedTextService _textService; @@ -35,7 +37,8 @@ namespace Umbraco.Web.Macros private readonly IHttpContextAccessor _httpContextAccessor; public MacroRenderer( - IProfilingLogger plogger, + IProfilingLogger profilingLogger , + ILogger logger, IUmbracoContextAccessor umbracoContextAccessor, IOptions contentSettings, ILocalizedTextService textService, @@ -48,7 +51,8 @@ namespace Umbraco.Web.Macros IRequestAccessor requestAccessor, IHttpContextAccessor httpContextAccessor) { - _plogger = plogger ?? throw new ArgumentNullException(nameof(plogger)); + _profilingLogger = profilingLogger ?? throw new ArgumentNullException(nameof(profilingLogger )); + _logger = logger; _umbracoContextAccessor = umbracoContextAccessor ?? throw new ArgumentNullException(nameof(umbracoContextAccessor)); _contentSettings = contentSettings.Value ?? throw new ArgumentNullException(nameof(contentSettings)); _textService = textService; @@ -111,7 +115,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 @@ -120,13 +124,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; } } @@ -160,7 +164,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 @@ -219,7 +223,7 @@ namespace Umbraco.Web.Macros if (content == null) throw new ArgumentNullException(nameof(content)); var macroInfo = $"Render Macro: {macro.Name}, cache: {macro.CacheDuration}"; - using (_plogger.DebugDuration(macroInfo, "Rendered Macro.")) + using (_profilingLogger.DebugDuration(macroInfo, "Rendered Macro.")) { // parse macro parameters ie replace the special [#key], [$key], etc. syntaxes foreach (var prop in macro.Properties) @@ -265,7 +269,7 @@ namespace Umbraco.Web.Macros /// private Attempt ExecuteMacroWithErrorWrapper(MacroModel macro, string msgIn, string msgOut, Func getMacroContent, Func msgErr) { - using (_plogger.DebugDuration(msgIn, msgOut)) + using (_profilingLogger.DebugDuration(msgIn, msgOut)) { return ExecuteProfileMacroWithErrorWrapper(macro, msgIn, getMacroContent, msgErr); } @@ -282,7 +286,7 @@ namespace Umbraco.Web.Macros } catch (Exception e) { - _plogger.Warn(e, "Failed {MsgIn}", msgIn); + _logger.LogWarning(e, "Failed {MsgIn}", msgIn); var macroErrorEventArgs = new MacroErrorEventArgs { diff --git a/src/Umbraco.Web.Common/Middleware/UmbracoRequestMiddleware.cs b/src/Umbraco.Web.Common/Middleware/UmbracoRequestMiddleware.cs index f5b8d74402..3544465dfe 100644 --- a/src/Umbraco.Web.Common/Middleware/UmbracoRequestMiddleware.cs +++ b/src/Umbraco.Web.Common/Middleware/UmbracoRequestMiddleware.cs @@ -2,6 +2,7 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http.Extensions; +using Microsoft.Extensions.Logging; using Umbraco.Web.Common.Lifetime; using Umbraco.Core; using Umbraco.Core.Logging; @@ -21,14 +22,14 @@ namespace Umbraco.Web.Common.Middleware /// public class UmbracoRequestMiddleware : IMiddleware { - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IUmbracoRequestLifetimeManager _umbracoRequestLifetimeManager; private readonly IUmbracoContextFactory _umbracoContextFactory; private readonly IRequestCache _requestCache; private readonly IBackofficeSecurityFactory _backofficeSecurityFactory; public UmbracoRequestMiddleware( - ILogger logger, + ILogger logger, IUmbracoRequestLifetimeManager umbracoRequestLifetimeManager, IUmbracoContextFactory umbracoContextFactory, IRequestCache requestCache, @@ -60,7 +61,7 @@ namespace Umbraco.Web.Common.Middleware if (umbracoContextReference.UmbracoContext.IsFrontEndUmbracoRequest) { LogHttpRequest.TryGetCurrentHttpRequestId(out var httpRequestId, _requestCache); - _logger.Verbose("Begin request [{HttpRequestId}]: {RequestUrl}", httpRequestId, requestUri); + _logger.LogTrace("Begin request [{HttpRequestId}]: {RequestUrl}", httpRequestId, requestUri); } try @@ -70,7 +71,7 @@ namespace Umbraco.Web.Common.Middleware catch (Exception ex) { // try catch so we don't kill everything in all requests - _logger.Error(ex); + _logger.LogError(ex.Message); } finally { @@ -89,7 +90,7 @@ namespace Umbraco.Web.Common.Middleware if (umbracoContextReference.UmbracoContext.IsFrontEndUmbracoRequest) { LogHttpRequest.TryGetCurrentHttpRequestId(out var httpRequestId, _requestCache); - _logger.Verbose("End Request [{HttpRequestId}]: {RequestUrl} ({RequestDuration}ms)", httpRequestId, requestUri, DateTime.Now.Subtract(umbracoContextReference.UmbracoContext.ObjectCreated).TotalMilliseconds); + _logger.LogTrace("End Request [{HttpRequestId}]: {RequestUrl} ({RequestDuration}ms)", httpRequestId, requestUri, DateTime.Now.Subtract(umbracoContextReference.UmbracoContext.ObjectCreated).TotalMilliseconds); } try @@ -109,7 +110,7 @@ namespace Umbraco.Web.Common.Middleware /// /// /// - private static void DisposeRequestCacheItems(ILogger logger, IRequestCache requestCache, Uri requestUri) + private static void DisposeRequestCacheItems(ILogger logger, IRequestCache requestCache, Uri requestUri) { // do not process if client-side request if (requestUri.IsClientSideRequest()) @@ -133,7 +134,7 @@ namespace Umbraco.Web.Common.Middleware } catch (Exception ex) { - logger.Error("Could not dispose item with key " + k, ex); + logger.LogError("Could not dispose item with key " + k, ex); } try { @@ -141,7 +142,7 @@ namespace Umbraco.Web.Common.Middleware } catch (Exception ex) { - logger.Error("Could not dispose item key " + k, ex); + logger.LogError("Could not dispose item key " + k, ex); } } } diff --git a/src/Umbraco.Web.Common/Profiler/WebProfilerComponent.cs b/src/Umbraco.Web.Common/Profiler/WebProfilerComponent.cs index dfd13ff101..0c10b7d95a 100644 --- a/src/Umbraco.Web.Common/Profiler/WebProfilerComponent.cs +++ b/src/Umbraco.Web.Common/Profiler/WebProfilerComponent.cs @@ -1,6 +1,7 @@ using Microsoft.AspNetCore.Http; using System; using System.Collections.Generic; +using Microsoft.Extensions.Logging; using Umbraco.Core.Composing; using Umbraco.Core.Logging; using Umbraco.Net; @@ -17,7 +18,7 @@ namespace Umbraco.Web.Common.Profiler private readonly IUmbracoRequestLifetime _umbracoRequestLifetime; private readonly List _terminate = new List(); - public WebProfilerComponent(IProfiler profiler, ILogger logger, IUmbracoRequestLifetime umbracoRequestLifetime, + public WebProfilerComponent(IProfiler profiler, ILogger logger, IUmbracoRequestLifetime umbracoRequestLifetime, IUmbracoApplicationLifetime umbracoApplicationLifetime) { _umbracoRequestLifetime = umbracoRequestLifetime; @@ -31,7 +32,7 @@ namespace Umbraco.Web.Common.Profiler // if VoidProfiler was registered, let it be known if (profiler is VoidProfiler) - logger.Info( + logger.LogInformation( "Profiler is VoidProfiler, not profiling (must run debug mode to profile)."); _profile = false; } diff --git a/src/Umbraco.Web.Website/Controllers/SurfaceController.cs b/src/Umbraco.Web.Website/Controllers/SurfaceController.cs index be6ee8ddce..726ce4ab82 100644 --- a/src/Umbraco.Web.Website/Controllers/SurfaceController.cs +++ b/src/Umbraco.Web.Website/Controllers/SurfaceController.cs @@ -39,8 +39,8 @@ namespace Umbraco.Web.Website.Controllers } } - protected SurfaceController(IUmbracoContextAccessor umbracoContextAccessor, IUmbracoDatabaseFactory databaseFactory, ServiceContext services, AppCaches appCaches, ILogger logger, IProfilingLogger profilingLogger, IPublishedUrlProvider publishedUrlProvider) - : base(umbracoContextAccessor, databaseFactory, services, appCaches, logger, profilingLogger) + protected SurfaceController(IUmbracoContextAccessor umbracoContextAccessor, IUmbracoDatabaseFactory databaseFactory, ServiceContext services, AppCaches appCaches, IProfilingLogger profilingLogger, IPublishedUrlProvider publishedUrlProvider) + : base(umbracoContextAccessor, databaseFactory, services, appCaches, profilingLogger) { _publishedUrlProvider = publishedUrlProvider; } diff --git a/src/Umbraco.Web/AspNet/AspNetBackOfficeInfo.cs b/src/Umbraco.Web/AspNet/AspNetBackOfficeInfo.cs index 515824dc77..88fc07c5fa 100644 --- a/src/Umbraco.Web/AspNet/AspNetBackOfficeInfo.cs +++ b/src/Umbraco.Web/AspNet/AspNetBackOfficeInfo.cs @@ -5,7 +5,7 @@ using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Configuration.UmbracoSettings; using Umbraco.Core.IO; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; namespace Umbraco.Web { @@ -13,10 +13,10 @@ namespace Umbraco.Web { private readonly GlobalSettings _globalSettings; private readonly IIOHelper _ioHelper; - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly WebRoutingSettings _webRoutingSettings; - public AspNetBackOfficeInfo(GlobalSettings globalSettings, IIOHelper ioHelper, ILogger logger, IOptions webRoutingSettings) + public AspNetBackOfficeInfo(GlobalSettings globalSettings, IIOHelper ioHelper, ILogger logger, IOptions webRoutingSettings) { _globalSettings = globalSettings; _ioHelper = ioHelper; @@ -33,7 +33,7 @@ namespace Umbraco.Web if (url.IsNullOrWhiteSpace() == false) { var umbracoApplicationUrl = url.TrimEnd('/'); - _logger.Info("ApplicationUrl: {UmbracoAppUrl} (using web.routing/@umbracoApplicationUrl)", umbracoApplicationUrl); + _logger.LogInformation("ApplicationUrl: {UmbracoAppUrl} (using web.routing/@umbracoApplicationUrl)", umbracoApplicationUrl); return umbracoApplicationUrl; } diff --git a/src/Umbraco.Web/CdfLogger.cs b/src/Umbraco.Web/CdfLogger.cs deleted file mode 100644 index 83a51a7b38..0000000000 --- a/src/Umbraco.Web/CdfLogger.cs +++ /dev/null @@ -1,47 +0,0 @@ -using System; -using Umbraco.Core.Logging; -using Umbraco.Web.Composing; -using ICdfLogger = ClientDependency.Core.Logging.ILogger; -using ICoreLogger = Umbraco.Core.Logging.ILogger; - -namespace Umbraco.Web -{ - /// - /// A logger for ClientDependency - /// - public class CdfLogger : ICdfLogger - { - private readonly ICoreLogger _logger; - - // Client Dependency doesn't know how to inject - public CdfLogger(/*ICoreLogger logger*/) - { - _logger = Current.Logger; - } - - public void Debug(string msg) - { - _logger.Debug(msg); - } - - public void Info(string msg) - { - _logger.Info(msg); - } - - public void Warn(string msg) - { - _logger.Warn(msg); - } - - public void Error(string msg, Exception ex) - { - _logger.Error(ex, msg); - } - - public void Fatal(string msg, Exception ex) - { - _logger.Error(ex, msg); - } - } -} diff --git a/src/Umbraco.Web/Composing/Current.cs b/src/Umbraco.Web/Composing/Current.cs index f5c9213117..44468f2943 100644 --- a/src/Umbraco.Web/Composing/Current.cs +++ b/src/Umbraco.Web/Composing/Current.cs @@ -1,4 +1,5 @@ using System; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Dictionary; @@ -246,7 +247,9 @@ namespace Umbraco.Web.Composing public static IShortStringHelper ShortStringHelper => Factory.GetInstance(); - public static ILogger Logger => Umbraco.Composing.Current.Logger; + public static ILogger Logger => Factory.GetInstance>(); + + public static ILoggerFactory LoggerFactory => Factory.GetInstance(); public static IProfiler Profiler => Factory.GetInstance(); diff --git a/src/Umbraco.Web/Controllers/UmbLoginController.cs b/src/Umbraco.Web/Controllers/UmbLoginController.cs index cd0489433c..1f3faf7a43 100644 --- a/src/Umbraco.Web/Controllers/UmbLoginController.cs +++ b/src/Umbraco.Web/Controllers/UmbLoginController.cs @@ -19,9 +19,9 @@ namespace Umbraco.Web.Controllers } public UmbLoginController(IUmbracoContextAccessor umbracoContextAccessor, IUmbracoDatabaseFactory databaseFactory, - ServiceContext services, AppCaches appCaches, ILogger logger, IProfilingLogger profilingLogger, + ServiceContext services, AppCaches appCaches, IProfilingLogger profilingLogger, MembershipHelper membershipHelper) - : base(umbracoContextAccessor, databaseFactory, services, appCaches, logger, profilingLogger) + : base(umbracoContextAccessor, databaseFactory, services, appCaches, profilingLogger) { _membershipHelper = membershipHelper; } diff --git a/src/Umbraco.Web/Controllers/UmbLoginStatusController.cs b/src/Umbraco.Web/Controllers/UmbLoginStatusController.cs index 825dd1e904..d7a8601838 100644 --- a/src/Umbraco.Web/Controllers/UmbLoginStatusController.cs +++ b/src/Umbraco.Web/Controllers/UmbLoginStatusController.cs @@ -21,9 +21,9 @@ namespace Umbraco.Web.Controllers } public UmbLoginStatusController(IUmbracoContextAccessor umbracoContextAccessor, - IUmbracoDatabaseFactory databaseFactory, ServiceContext services, AppCaches appCaches, ILogger logger, + IUmbracoDatabaseFactory databaseFactory, ServiceContext services, AppCaches appCaches, IProfilingLogger profilingLogger, MembershipHelper membershipHelper) - : base(umbracoContextAccessor, databaseFactory, services, appCaches, logger, profilingLogger) + : base(umbracoContextAccessor, databaseFactory, services, appCaches, profilingLogger) { _membershipHelper = membershipHelper; } diff --git a/src/Umbraco.Web/Controllers/UmbProfileController.cs b/src/Umbraco.Web/Controllers/UmbProfileController.cs index c5a37e7629..88edee26c8 100644 --- a/src/Umbraco.Web/Controllers/UmbProfileController.cs +++ b/src/Umbraco.Web/Controllers/UmbProfileController.cs @@ -21,9 +21,9 @@ namespace Umbraco.Web.Controllers { } public UmbProfileController(IUmbracoContextAccessor umbracoContextAccessor, IUmbracoDatabaseFactory databaseFactory, - ServiceContext services, AppCaches appCaches, ILogger logger, IProfilingLogger profilingLogger, + ServiceContext services, AppCaches appCaches, IProfilingLogger profilingLogger, MembershipHelper membershipHelper) - : base(umbracoContextAccessor, databaseFactory, services, appCaches, logger, profilingLogger) + : base(umbracoContextAccessor, databaseFactory, services, appCaches, profilingLogger) { _membershipHelper = membershipHelper; } diff --git a/src/Umbraco.Web/Controllers/UmbRegisterController.cs b/src/Umbraco.Web/Controllers/UmbRegisterController.cs index 1e83fadda6..30720eb776 100644 --- a/src/Umbraco.Web/Controllers/UmbRegisterController.cs +++ b/src/Umbraco.Web/Controllers/UmbRegisterController.cs @@ -21,9 +21,9 @@ namespace Umbraco.Web.Controllers } public UmbRegisterController(IUmbracoContextAccessor umbracoContextAccessor, - IUmbracoDatabaseFactory databaseFactory, ServiceContext services, AppCaches appCaches, ILogger logger, + IUmbracoDatabaseFactory databaseFactory, ServiceContext services, AppCaches appCaches, IProfilingLogger profilingLogger, MembershipHelper membershipHelper) - : base(umbracoContextAccessor, databaseFactory, services, appCaches, logger, profilingLogger) + : base(umbracoContextAccessor, databaseFactory, services, appCaches, profilingLogger) { _membershipHelper = membershipHelper; } diff --git a/src/Umbraco.Web/Editors/AuthenticationController.cs b/src/Umbraco.Web/Editors/AuthenticationController.cs index 1cf5efb69e..5265dc13cb 100644 --- a/src/Umbraco.Web/Editors/AuthenticationController.cs +++ b/src/Umbraco.Web/Editors/AuthenticationController.cs @@ -11,6 +11,7 @@ using System.Web.Http; using System.Web.Mvc; using Microsoft.AspNetCore.Identity; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Models; @@ -48,6 +49,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 SecuritySettings _securitySettings; private readonly IRequestAccessor _requestAccessor; @@ -61,17 +63,19 @@ namespace Umbraco.Web.Editors ISqlContext sqlContext, ServiceContext services, AppCaches appCaches, - IProfilingLogger logger, + IProfilingLogger profilingLogger , + ILogger logger, IRuntimeState runtimeState, UmbracoMapper umbracoMapper, IOptions securitySettings, IPublishedUrlProvider publishedUrlProvider, IRequestAccessor requestAccessor, IEmailSender emailSender) - : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoMapper, publishedUrlProvider) + : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, profilingLogger , 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.Value ?? throw new ArgumentNullException(nameof(securitySettings)); _requestAccessor = requestAccessor ?? throw new ArgumentNullException(nameof(securitySettings)); @@ -119,7 +123,7 @@ namespace Umbraco.Web.Editors var userId = await SignInManager.GetVerifiedUserIdAsync(); if (string.IsNullOrWhiteSpace(userId)) { - Logger.Warn("Get2FAProviders :: No verified user found, returning 404"); + _logger.LogWarning("Get2FAProviders :: No verified user found, returning 404"); throw new HttpResponseException(HttpStatusCode.NotFound); } @@ -138,7 +142,7 @@ namespace Umbraco.Web.Editors var userId = await SignInManager.GetVerifiedUserIdAsync(); if (string.IsNullOrWhiteSpace(userId)) { - Logger.Warn("Get2FAProviders :: No verified user found, returning 404"); + _logger.LogWarning("Get2FAProviders :: No verified user found, returning 404"); throw new HttpResponseException(HttpStatusCode.NotFound); } @@ -161,7 +165,7 @@ namespace Umbraco.Web.Editors var userName = await SignInManager.GetVerifiedUserNameAsync(); if (userName == null) { - Logger.Warn("Get2FAProviders :: No verified user found, returning 404"); + _logger.LogWarning("Get2FAProviders :: No verified user found, returning 404"); throw new HttpResponseException(HttpStatusCode.NotFound); } diff --git a/src/Umbraco.Web/Editors/BackOfficeController.cs b/src/Umbraco.Web/Editors/BackOfficeController.cs index 64bc2fd380..f8848f64f0 100644 --- a/src/Umbraco.Web/Editors/BackOfficeController.cs +++ b/src/Umbraco.Web/Editors/BackOfficeController.cs @@ -5,6 +5,7 @@ using System.Web; using System.Web.Mvc; using Microsoft.AspNetCore.Identity; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; using Microsoft.Owin.Security; using Umbraco.Core; using Umbraco.Core.Cache; @@ -39,6 +40,7 @@ namespace Umbraco.Web.Editors private readonly RuntimeSettings _runtimeSettings; private readonly SecuritySettings _securitySettings; private readonly IIconService _iconService; + private readonly ILogger _logger; public BackOfficeController( UmbracoFeatures features, @@ -47,13 +49,14 @@ namespace Umbraco.Web.Editors ServiceContext services, AppCaches appCaches, IProfilingLogger profilingLogger, + ILoggerFactory loggerFactory, IUmbracoVersion umbracoVersion, IOptions contentSettings, IHostingEnvironment hostingEnvironment, IOptions settings, IOptions securitySettings, IIconService iconService) - : base(globalSettings, umbracoContextAccessor, services, appCaches, profilingLogger) + : base(globalSettings, umbracoContextAccessor, services, appCaches, profilingLogger, loggerFactory) { _features = features; @@ -63,6 +66,7 @@ namespace Umbraco.Web.Editors _runtimeSettings = settings.Value; _securitySettings = securitySettings.Value; _iconService = iconService; + _logger = loggerFactory.CreateLogger(); } protected BackOfficeSignInManager SignInManager => _signInManager ?? (_signInManager = OwinContext.GetBackOfficeSignInManager()); @@ -180,7 +184,7 @@ namespace Umbraco.Web.Editors var authType = OwinContext.Authentication.GetExternalAuthenticationTypes().FirstOrDefault(x => x.AuthenticationType == loginInfo.Login.LoginProvider); if (authType == null) { - Logger.Warn("Could not find external authentication provider registered: {LoginProvider}", loginInfo.Login.LoginProvider); + _logger.LogWarning("Could not find external authentication provider registered: {LoginProvider}", loginInfo.Login.LoginProvider); } else { @@ -203,7 +207,7 @@ namespace Umbraco.Web.Editors shouldSignIn = autoLinkOptions.OnExternalLogin(user, loginInfo); if (shouldSignIn == false) { - Logger.Warn("The AutoLinkOptions of the external authentication provider '{LoginProvider}' have refused the login based on the OnExternalLogin method. Affected user id: '{UserId}'", loginInfo.Login.LoginProvider, user.Id); + _logger.LogWarning("The AutoLinkOptions of the external authentication provider '{LoginProvider}' have refused the login based on the OnExternalLogin method. Affected user id: '{UserId}'", loginInfo.Login.LoginProvider, user.Id); } } diff --git a/src/Umbraco.Web/Editors/PasswordChanger.cs b/src/Umbraco.Web/Editors/PasswordChanger.cs index 631403d71f..be6a20e7cc 100644 --- a/src/Umbraco.Web/Editors/PasswordChanger.cs +++ b/src/Umbraco.Web/Editors/PasswordChanger.cs @@ -1,8 +1,8 @@ using System; using System.ComponentModel.DataAnnotations; using System.Threading.Tasks; +using Microsoft.Extensions.Logging; using Umbraco.Core; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Extensions; using Umbraco.Web.Models; @@ -14,9 +14,9 @@ namespace Umbraco.Web.Editors { internal class PasswordChanger { - private readonly ILogger _logger; + private readonly ILogger _logger; - public PasswordChanger(ILogger logger) + public PasswordChanger(ILogger logger) { _logger = logger; } @@ -73,7 +73,7 @@ namespace Umbraco.Web.Editors if (resetResult.Succeeded == false) { var errors = resetResult.Errors.ToErrorMessage(); - _logger.Warn("Could not reset user password {PasswordErrors}", errors); + _logger.LogWarning("Could not reset user password {PasswordErrors}", errors); return Attempt.Fail(new PasswordChangedModel { ChangeError = new ValidationResult(errors, new[] { "value" }) }); } @@ -93,7 +93,7 @@ namespace Umbraco.Web.Editors { //no, fail with error messages for "password" var errors = changeResult.Errors.ToErrorMessage(); - _logger.Warn("Could not change user password {PasswordErrors}", errors); + _logger.LogWarning("Could not change user password {PasswordErrors}", errors); return Attempt.Fail(new PasswordChangedModel { ChangeError = new ValidationResult(errors, new[] { "password" }) }); } return Attempt.Succeed(new PasswordChangedModel()); diff --git a/src/Umbraco.Web/ImageProcessorLogger.cs b/src/Umbraco.Web/ImageProcessorLogger.cs index d01207b401..ad7a6ceaaf 100644 --- a/src/Umbraco.Web/ImageProcessorLogger.cs +++ b/src/Umbraco.Web/ImageProcessorLogger.cs @@ -1,8 +1,8 @@ using System; using System.Runtime.CompilerServices; +using Microsoft.Extensions.Logging; using ImageProcessor.Common.Exceptions; using Umbraco.Web.Composing; -using Umbraco.Core.Logging; namespace Umbraco.Web { @@ -28,7 +28,7 @@ namespace Umbraco.Web { // Using LogHelper since the ImageProcessor logger expects a parameterless constructor. var message = $"{callerName} {lineNumber} : {text}"; - Current.Logger.Error(new ImageProcessingException(message)); + Current.Logger.LogError(new ImageProcessingException(message).Message); } /// @@ -42,7 +42,7 @@ namespace Umbraco.Web { // Using LogHelper since the ImageProcessor logger expects a parameterless constructor. var message = $"{callerName} {lineNumber} : {text}"; - Current.Logger.Error(type, new ImageProcessingException(message)); + Current.Logger.LogError(new ImageProcessingException(message).Message); } } } diff --git a/src/Umbraco.Web/Logging/OwinLogger.cs b/src/Umbraco.Web/Logging/OwinLogger.cs index 7ca3d2a915..7983ee36c7 100644 --- a/src/Umbraco.Web/Logging/OwinLogger.cs +++ b/src/Umbraco.Web/Logging/OwinLogger.cs @@ -1,6 +1,6 @@ using System; using System.Diagnostics; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; namespace Umbraco.Web.Logging { @@ -27,34 +27,34 @@ namespace Umbraco.Web.Logging switch (eventType) { case TraceEventType.Critical: - _logger.Fatal(_type.Value, exception, "[{EventType}] Event Id: {EventId}, State: {State}", eventType, eventId, state); + _logger.LogCritical(exception, "[{EventType}] Event Id: {EventId}, State: {State}", eventType, eventId, state); return true; case TraceEventType.Error: - _logger.Error(_type.Value, exception, "[{EventType}] Event Id: {EventId}, State: {State}", eventType, eventId, state); + _logger.LogError(exception, "[{EventType}] Event Id: {EventId}, State: {State}", eventType, eventId, state); return true; case TraceEventType.Warning: - _logger.Warn(_type.Value, "[{EventType}] Event Id: {EventId}, State: {State}", eventType, eventId, state); + _logger.LogWarning("[{EventType}] Event Id: {EventId}, State: {State}", eventType, eventId, state); return true; case TraceEventType.Information: - _logger.Info(_type.Value, "[{EventType}] Event Id: {EventId}, State: {State}", eventType, eventId, state); + _logger.LogInformation("[{EventType}] Event Id: {EventId}, State: {State}", eventType, eventId, state); return true; case TraceEventType.Verbose: - _logger.Debug(_type.Value, "[{EventType}] Event Id: {EventId}, State: {State}", eventType, eventId, state); + _logger.LogDebug("[{EventType}] Event Id: {EventId}, State: {State}", eventType, eventId, state); return true; case TraceEventType.Start: - _logger.Debug(_type.Value, "[{EventType}] Event Id: {EventId}, State: {State}", eventType, eventId, state); + _logger.LogDebug("[{EventType}] Event Id: {EventId}, State: {State}", eventType, eventId, state); return true; case TraceEventType.Stop: - _logger.Debug(_type.Value, "[{EventType}] Event Id: {EventId}, State: {State}", eventType, eventId, state); + _logger.LogDebug("[{EventType}] Event Id: {EventId}, State: {State}", eventType, eventId, state); return true; case TraceEventType.Suspend: - _logger.Debug(_type.Value, "[{EventType}] Event Id: {EventId}, State: {State}", eventType, eventId, state); + _logger.LogDebug("[{EventType}] Event Id: {EventId}, State: {State}", eventType, eventId, state); return true; case TraceEventType.Resume: - _logger.Debug(_type.Value, "[{EventType}] Event Id: {EventId}, State: {State}", eventType, eventId, state); + _logger.LogDebug("[{EventType}] Event Id: {EventId}, State: {State}", eventType, eventId, state); return true; case TraceEventType.Transfer: - _logger.Debug(_type.Value, "[{EventType}] Event Id: {EventId}, State: {State}", eventType, eventId, state); + _logger.LogDebug("[{EventType}] Event Id: {EventId}, State: {State}", eventType, eventId, state); return true; default: throw new ArgumentOutOfRangeException("eventType"); diff --git a/src/Umbraco.Web/Logging/WebProfilerComponent.cs b/src/Umbraco.Web/Logging/WebProfilerComponent.cs index ff25eb6a22..f2ac5e532c 100755 --- a/src/Umbraco.Web/Logging/WebProfilerComponent.cs +++ b/src/Umbraco.Web/Logging/WebProfilerComponent.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Web; +using Microsoft.Extensions.Logging; using Umbraco.Core.Composing; using Umbraco.Core.Logging; @@ -11,7 +12,7 @@ namespace Umbraco.Web.Logging private readonly WebProfiler _profiler; private readonly bool _profile; - public WebProfilerComponent(IProfiler profiler, ILogger logger) + public WebProfilerComponent(IProfiler profiler, ILogger logger) { _profile = true; @@ -22,7 +23,7 @@ namespace Umbraco.Web.Logging // if VoidProfiler was registered, let it be known if (profiler is VoidProfiler) - logger.Info("Profiler is VoidProfiler, not profiling (must run debug mode to profile)."); + logger.LogInformation("Profiler is VoidProfiler, not profiling (must run debug mode to profile)."); _profile = false; } diff --git a/src/Umbraco.Web/Macros/MacroRenderer.cs b/src/Umbraco.Web/Macros/MacroRenderer.cs index 8d13c03e8b..93dc6a14d5 100644 --- a/src/Umbraco.Web/Macros/MacroRenderer.cs +++ b/src/Umbraco.Web/Macros/MacroRenderer.cs @@ -4,6 +4,7 @@ using System.IO; using System.Linq; using System.Text; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Configuration.Models; @@ -20,7 +21,8 @@ namespace Umbraco.Web.Macros { internal class MacroRenderer : IMacroRenderer { - private readonly IProfilingLogger _plogger; + private readonly IProfilingLogger _profilingLogger; + private readonly ILogger _logger; private readonly IUmbracoContextAccessor _umbracoContextAccessor; private readonly ContentSettings _contentSettings; private readonly ILocalizedTextService _textService; @@ -35,7 +37,8 @@ namespace Umbraco.Web.Macros public MacroRenderer( - IProfilingLogger plogger, + IProfilingLogger profilingLogger , + ILogger logger, IUmbracoContextAccessor umbracoContextAccessor, IOptions contentSettings, ILocalizedTextService textService, @@ -46,9 +49,10 @@ namespace Umbraco.Web.Macros IMemberUserKeyProvider memberUserKeyProvider, ISessionManager sessionManager, IRequestAccessor requestAccessor, - IHttpContextAccessor httpContextAccessor) + IHttpContextAccessor httpContextAccessor) { - _plogger = plogger ?? throw new ArgumentNullException(nameof(plogger)); + _profilingLogger = profilingLogger ?? throw new ArgumentNullException(nameof(profilingLogger )); + _logger = logger; _umbracoContextAccessor = umbracoContextAccessor ?? throw new ArgumentNullException(nameof(umbracoContextAccessor)); _contentSettings = contentSettings.Value ?? throw new ArgumentNullException(nameof(contentSettings)); _textService = textService; @@ -111,7 +115,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 @@ -120,13 +124,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; } } @@ -160,7 +164,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 @@ -219,7 +223,7 @@ namespace Umbraco.Web.Macros if (content == null) throw new ArgumentNullException(nameof(content)); var macroInfo = $"Render Macro: {macro.Name}, cache: {macro.CacheDuration}"; - using (_plogger.DebugDuration(macroInfo, "Rendered Macro.")) + using (_profilingLogger.DebugDuration(macroInfo, "Rendered Macro.")) { // parse macro parameters ie replace the special [#key], [$key], etc. syntaxes foreach (var prop in macro.Properties) @@ -265,7 +269,7 @@ namespace Umbraco.Web.Macros /// private Attempt ExecuteMacroWithErrorWrapper(MacroModel macro, string msgIn, string msgOut, Func getMacroContent, Func msgErr) { - using (_plogger.DebugDuration(msgIn, msgOut)) + using (_profilingLogger.DebugDuration(msgIn, msgOut)) { return ExecuteProfileMacroWithErrorWrapper(macro, msgIn, getMacroContent, msgErr); } @@ -282,7 +286,7 @@ namespace Umbraco.Web.Macros } catch (Exception e) { - _plogger.Warn(e, "Failed {MsgIn}", msgIn); + _logger.LogWarning(e, "Failed {MsgIn}", msgIn); var macroErrorEventArgs = new MacroErrorEventArgs { diff --git a/src/Umbraco.Web/Mvc/AdminTokenAuthorizeAttribute.cs b/src/Umbraco.Web/Mvc/AdminTokenAuthorizeAttribute.cs index 882cb5624c..25a2f958f8 100644 --- a/src/Umbraco.Web/Mvc/AdminTokenAuthorizeAttribute.cs +++ b/src/Umbraco.Web/Mvc/AdminTokenAuthorizeAttribute.cs @@ -4,8 +4,8 @@ using System.Text; using System.Text.RegularExpressions; using System.Web; using System.Web.Mvc; +using Microsoft.Extensions.Logging; using Umbraco.Core; -using Umbraco.Core.Logging; using Umbraco.Core.Services; using Umbraco.Web.Composing; @@ -19,7 +19,7 @@ namespace Umbraco.Web.Mvc // see note in HttpInstallAuthorizeAttribute private readonly IUserService _userService; private readonly IRuntimeState _runtimeState; - private readonly ILogger _logger; + private readonly ILogger _logger; private IUserService UserService => _userService ?? Current.Services.UserService; @@ -119,7 +119,7 @@ namespace Umbraco.Web.Mvc } catch (Exception ex) { - Logger.Error(ex, "Failed to format passed in token value"); + Logger.LogError(ex, "Failed to format passed in token value"); return false; } } diff --git a/src/Umbraco.Web/Mvc/PluginController.cs b/src/Umbraco.Web/Mvc/PluginController.cs index 9f34de174b..09ed97171e 100644 --- a/src/Umbraco.Web/Mvc/PluginController.cs +++ b/src/Umbraco.Web/Mvc/PluginController.cs @@ -49,11 +49,6 @@ namespace Umbraco.Web.Mvc /// public AppCaches AppCaches { get; } - /// - /// Gets or sets the logger. - /// - public ILogger Logger { get; } - /// /// Gets or sets the profiling logger. /// @@ -75,19 +70,17 @@ namespace Umbraco.Web.Mvc Current.Factory.GetInstance(), Current.Factory.GetInstance(), Current.Factory.GetInstance(), - Current.Factory.GetInstance(), Current.Factory.GetInstance() ) { } - protected PluginController(IUmbracoContextAccessor umbracoContextAccessor, IUmbracoDatabaseFactory databaseFactory, ServiceContext services, AppCaches appCaches, ILogger logger, IProfilingLogger profilingLogger) + protected PluginController(IUmbracoContextAccessor umbracoContextAccessor, IUmbracoDatabaseFactory databaseFactory, ServiceContext services, AppCaches appCaches, IProfilingLogger profilingLogger) { UmbracoContextAccessor = umbracoContextAccessor; DatabaseFactory = databaseFactory; Services = services; AppCaches = appCaches; - Logger = logger; ProfilingLogger = profilingLogger; } diff --git a/src/Umbraco.Web/Mvc/RenderMvcController.cs b/src/Umbraco.Web/Mvc/RenderMvcController.cs index be17bf85c2..42fef69f0f 100644 --- a/src/Umbraco.Web/Mvc/RenderMvcController.cs +++ b/src/Umbraco.Web/Mvc/RenderMvcController.cs @@ -1,6 +1,7 @@ using System; using System.Web.Mvc; using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; using Umbraco.Core.Cache; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; @@ -21,16 +22,18 @@ namespace Umbraco.Web.Mvc public class RenderMvcController : UmbracoController, IRenderMvcController { private IPublishedRequest _publishedRequest; + private readonly ILogger _logger; public RenderMvcController() { ActionInvoker = new RenderActionInvoker(); } - public RenderMvcController(IOptions globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ServiceContext services, AppCaches appCaches, IProfilingLogger profilingLogger) - : base(globalSettings, umbracoContextAccessor, services, appCaches, profilingLogger) + public RenderMvcController(IOptions globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ServiceContext services, AppCaches appCaches, IProfilingLogger profilingLogger, ILoggerFactory loggerFactory) + : base(globalSettings, umbracoContextAccessor, services, appCaches, profilingLogger, loggerFactory) { ActionInvoker = new RenderActionInvoker(); + _logger = loggerFactory.CreateLogger(); } /// @@ -70,7 +73,7 @@ namespace Umbraco.Web.Mvc var result = ViewEngines.Engines.FindView(ControllerContext, template, null); if (result.View != null) return true; - Logger.Warn("No physical template file was found for template {Template}", template); + _logger.LogWarning("No physical template file was found for template {Template}", template); return false; } diff --git a/src/Umbraco.Web/Mvc/RenderRouteHandler.cs b/src/Umbraco.Web/Mvc/RenderRouteHandler.cs index 9000e426ac..af896ae243 100644 --- a/src/Umbraco.Web/Mvc/RenderRouteHandler.cs +++ b/src/Umbraco.Web/Mvc/RenderRouteHandler.cs @@ -4,9 +4,9 @@ using System.Web; using System.Web.Mvc; using System.Web.Routing; using System.Web.SessionState; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Composing; -using Umbraco.Core.Logging; using Umbraco.Core.Strings; using Umbraco.Web.Features; using Umbraco.Web.Models; @@ -280,7 +280,7 @@ namespace Umbraco.Web.Mvc } else { - Current.Logger.Warn("The current Document Type {ContentTypeAlias} matches a locally declared controller of type {ControllerName}. Custom Controllers for Umbraco routing must implement '{UmbracoRenderController}' and inherit from '{UmbracoControllerBase}'.", + Current.Logger.LogWarning("The current Document Type {ContentTypeAlias} matches a locally declared controller of type {ControllerName}. Custom Controllers for Umbraco routing must implement '{UmbracoRenderController}' and inherit from '{UmbracoControllerBase}'.", request.PublishedContent.ContentType.Alias, controllerType.FullName, typeof(IRenderController).FullName, diff --git a/src/Umbraco.Web/Mvc/SurfaceController.cs b/src/Umbraco.Web/Mvc/SurfaceController.cs index 29f2f5c541..cd344ea261 100644 --- a/src/Umbraco.Web/Mvc/SurfaceController.cs +++ b/src/Umbraco.Web/Mvc/SurfaceController.cs @@ -22,8 +22,8 @@ namespace Umbraco.Web.Mvc protected SurfaceController() { } - protected SurfaceController(IUmbracoContextAccessor umbracoContextAccessor, IUmbracoDatabaseFactory databaseFactory, ServiceContext services, AppCaches appCaches, ILogger logger, IProfilingLogger profilingLogger) - : base(umbracoContextAccessor, databaseFactory, services, appCaches, logger, profilingLogger) + protected SurfaceController(IUmbracoContextAccessor umbracoContextAccessor, IUmbracoDatabaseFactory databaseFactory, ServiceContext services, AppCaches appCaches, IProfilingLogger profilingLogger) + : base(umbracoContextAccessor, databaseFactory, services, appCaches,profilingLogger) { } /// diff --git a/src/Umbraco.Web/Mvc/UmbracoAuthorizedController.cs b/src/Umbraco.Web/Mvc/UmbracoAuthorizedController.cs index 6471656c42..520a0ef738 100644 --- a/src/Umbraco.Web/Mvc/UmbracoAuthorizedController.cs +++ b/src/Umbraco.Web/Mvc/UmbracoAuthorizedController.cs @@ -1,4 +1,5 @@ using Microsoft.Extensions.Options; +using Microsoft.Extensions.Logging; using Umbraco.Core.Cache; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; @@ -23,8 +24,8 @@ namespace Umbraco.Web.Mvc { } - protected UmbracoAuthorizedController(IOptions globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ServiceContext services, AppCaches appCaches, IProfilingLogger profilingLogger) - : base(globalSettings, umbracoContextAccessor, services, appCaches, profilingLogger) + protected UmbracoAuthorizedController(IOptions globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ServiceContext services, AppCaches appCaches, IProfilingLogger profilingLogger, ILoggerFactory loggerFactory) + : base(globalSettings, umbracoContextAccessor, services, appCaches, profilingLogger, loggerFactory) { } } diff --git a/src/Umbraco.Web/Mvc/UmbracoController.cs b/src/Umbraco.Web/Mvc/UmbracoController.cs index 29f0949473..be46c30dd9 100644 --- a/src/Umbraco.Web/Mvc/UmbracoController.cs +++ b/src/Umbraco.Web/Mvc/UmbracoController.cs @@ -1,6 +1,7 @@ using System; using System.Web; using System.Web.Mvc; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Microsoft.Owin; using Umbraco.Core.Cache; @@ -47,16 +48,17 @@ namespace Umbraco.Web.Mvc /// public AppCaches AppCaches { get; } - /// - /// Gets or sets the logger. - /// - public ILogger Logger { get; } /// /// Gets or sets the profiling logger. /// public IProfilingLogger ProfilingLogger { get; set; } + /// + /// Gets the LoggerFactory + /// + public ILoggerFactory LoggerFactory { get; } + protected IOwinContext OwinContext => Request.GetOwinContext(); /// @@ -75,19 +77,20 @@ namespace Umbraco.Web.Mvc Current.Factory.GetInstance(), Current.Factory.GetInstance(), Current.Factory.GetInstance(), - Current.Factory.GetInstance() + Current.Factory.GetInstance(), + Current.Factory.GetInstance() ) { } - protected UmbracoController(IOptions globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ServiceContext services, AppCaches appCaches, IProfilingLogger profilingLogger) + protected UmbracoController(IOptions globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ServiceContext services, AppCaches appCaches, IProfilingLogger profilingLogger, ILoggerFactory loggerFactory) { GlobalSettings = globalSettings; UmbracoContextAccessor = umbracoContextAccessor; Services = services; AppCaches = appCaches; - Logger = profilingLogger; ProfilingLogger = profilingLogger; + LoggerFactory = loggerFactory; } } } diff --git a/src/Umbraco.Web/RoutableDocumentFilter.cs b/src/Umbraco.Web/RoutableDocumentFilter.cs index 3580e25c78..03f264ab22 100644 --- a/src/Umbraco.Web/RoutableDocumentFilter.cs +++ b/src/Umbraco.Web/RoutableDocumentFilter.cs @@ -81,7 +81,7 @@ namespace Umbraco.Web //NOTE: No need to warn, plus if we do we should log the document, as this message doesn't really tell us anything :) //if (!maybeDoc) //{ - // Logger.Warn("Not a document"); + // Logger.LogWarning("Not a document"); //} return maybeDoc; } diff --git a/src/Umbraco.Web/Security/AuthenticationOptionsExtensions.cs b/src/Umbraco.Web/Security/AuthenticationOptionsExtensions.cs index 7616282689..73156cec45 100644 --- a/src/Umbraco.Web/Security/AuthenticationOptionsExtensions.cs +++ b/src/Umbraco.Web/Security/AuthenticationOptionsExtensions.cs @@ -1,4 +1,5 @@ using System; +using Microsoft.Extensions.Logging; using Microsoft.Owin; using Microsoft.Owin.Security; using Umbraco.Core; @@ -109,7 +110,7 @@ namespace Umbraco.Web.Security } catch (System.Exception ex) { - Current.Logger.Error(typeof (AuthenticationOptionsExtensions), ex, "Could not read AuthenticationOptions properties"); + Current.Logger.LogError(ex, "Could not read AuthenticationOptions properties"); } } else diff --git a/src/Umbraco.Web/Security/MembershipHelper.cs b/src/Umbraco.Web/Security/MembershipHelper.cs index 8ca5af397b..1469b6fea6 100644 --- a/src/Umbraco.Web/Security/MembershipHelper.cs +++ b/src/Umbraco.Web/Security/MembershipHelper.cs @@ -2,8 +2,8 @@ using System.Collections.Generic; using System.Linq; using System.Web.Security; +using Microsoft.Extensions.Logging; using Umbraco.Core; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Web.Models; using Umbraco.Web.PublishedCache; @@ -30,6 +30,7 @@ namespace Umbraco.Web.Security private readonly IMemberTypeService _memberTypeService; private readonly IPublicAccessService _publicAccessService; private readonly AppCaches _appCaches; + private readonly ILoggerFactory _loggerFactory; private readonly ILogger _logger; private readonly IShortStringHelper _shortStringHelper; private readonly IEntityService _entityService; @@ -46,7 +47,7 @@ namespace Umbraco.Web.Security IMemberTypeService memberTypeService, IPublicAccessService publicAccessService, AppCaches appCaches, - ILogger logger, + ILoggerFactory loggerFactory, IShortStringHelper shortStringHelper, IEntityService entityService ) @@ -57,7 +58,8 @@ namespace Umbraco.Web.Security _memberTypeService = memberTypeService; _publicAccessService = publicAccessService; _appCaches = appCaches; - _logger = logger; + _loggerFactory = loggerFactory; + _logger = _loggerFactory.CreateLogger(); _shortStringHelper = shortStringHelper; _membershipProvider = membershipProvider ?? throw new ArgumentNullException(nameof(membershipProvider)); @@ -305,7 +307,7 @@ namespace Umbraco.Web.Security if (member == null) { //this should not happen - Current.Logger.Warn("The member validated but then no member was returned with the username {Username}", username); + _logger.LogWarning("The member validated but then no member was returned with the username {Username}", username); return false; } //Log them in @@ -705,7 +707,7 @@ namespace Umbraco.Web.Security /// public virtual Attempt ChangePassword(string username, ChangingPasswordModel passwordModel, MembershipProvider membershipProvider) { - var passwordChanger = new PasswordChanger(_logger); + var passwordChanger = new PasswordChanger(_loggerFactory.CreateLogger()); return ChangePasswordWithMembershipProvider(username, passwordModel, membershipProvider); } @@ -830,7 +832,7 @@ namespace Umbraco.Web.Security } catch (Exception ex) { - _logger.Warn(ex, "Could not change member password"); + _logger.LogWarning(ex, "Could not change member password"); return Attempt.Fail(new PasswordChangedModel { ChangeError = new ValidationResult("Could not change password, error: " + ex.Message + " (see log for full details)", new[] { "value" }) }); } diff --git a/src/Umbraco.Web/Security/MembershipProviderBase.cs b/src/Umbraco.Web/Security/MembershipProviderBase.cs index eacb992b0b..a62ef958c4 100644 --- a/src/Umbraco.Web/Security/MembershipProviderBase.cs +++ b/src/Umbraco.Web/Security/MembershipProviderBase.cs @@ -8,10 +8,10 @@ using System.Web; using System.Web.Hosting; using System.Web.Configuration; using System.Web.Security; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Web.Composing; using Umbraco.Core.Hosting; -using Umbraco.Core.Logging; using Umbraco.Core.Security; namespace Umbraco.Web.Security @@ -257,7 +257,7 @@ namespace Umbraco.Web.Security if ((PasswordFormat == MembershipPasswordFormat.Hashed) && EnablePasswordRetrieval) { var ex = new ProviderException("Provider can not retrieve a hashed password"); - Current.Logger.Error(ex, "Cannot specify a Hashed password format with the enabledPasswordRetrieval option set to true"); + Current.Logger.LogError(ex, "Cannot specify a Hashed password format with the enabledPasswordRetrieval option set to true"); throw ex; } diff --git a/src/Umbraco.Web/Security/Providers/UmbracoMembershipProvider.cs b/src/Umbraco.Web/Security/Providers/UmbracoMembershipProvider.cs index d059113e0a..53cbd266dc 100644 --- a/src/Umbraco.Web/Security/Providers/UmbracoMembershipProvider.cs +++ b/src/Umbraco.Web/Security/Providers/UmbracoMembershipProvider.cs @@ -5,10 +5,10 @@ using System.Linq; using System.Text; using System.Web.Configuration; using System.Web.Security; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Configuration; using Umbraco.Core.Hosting; -using Umbraco.Core.Logging; using Umbraco.Core.Models.Membership; using Umbraco.Net; using Umbraco.Core.Persistence.Querying; @@ -130,7 +130,7 @@ namespace Umbraco.Web.Security.Providers if (MemberService.Exists(username)) { status = MembershipCreateStatus.DuplicateUserName; - Current.Logger.Warn>("Cannot create member as username already exists: {Username}", username); + Current.Logger.LogWarning("Cannot create member as username already exists: {Username}", username); return null; } @@ -138,7 +138,7 @@ namespace Umbraco.Web.Security.Providers if (MemberService.GetByEmail(email) != null && RequiresUniqueEmail) { status = MembershipCreateStatus.DuplicateEmail; - Current.Logger.Warn>("Cannot create member as a member with the same email address exists: {Email}", email); + Current.Logger.LogWarning("Cannot create member as a member with the same email address exists: {Email}", email); return null; } @@ -490,7 +490,7 @@ namespace Umbraco.Web.Security.Providers if (member == null) { - Current.Logger.Info("Login attempt failed for username {Username} from IP address {IpAddress}, the user does not exist", username, _ipResolver.GetCurrentRequestIpAddress()); + Current.Logger.LogInformation("Login attempt failed for username {Username} from IP address {IpAddress}, the user does not exist", username, _ipResolver.GetCurrentRequestIpAddress()); return new ValidateUserResult { @@ -500,7 +500,7 @@ namespace Umbraco.Web.Security.Providers if (member.IsApproved == false) { - Current.Logger.Info("Login attempt failed for username {Username} from IP address {IpAddress}, the user is not approved", username, _ipResolver.GetCurrentRequestIpAddress()); + Current.Logger.LogInformation("Login attempt failed for username {Username} from IP address {IpAddress}, the user is not approved", username, _ipResolver.GetCurrentRequestIpAddress()); return new ValidateUserResult { @@ -510,7 +510,7 @@ namespace Umbraco.Web.Security.Providers } if (member.IsLockedOut) { - Current.Logger.Info("Login attempt failed for username {Username} from IP address {IpAddress}, the user is locked", username, _ipResolver.GetCurrentRequestIpAddress()); + Current.Logger.LogInformation("Login attempt failed for username {Username} from IP address {IpAddress}, the user is locked", username, _ipResolver.GetCurrentRequestIpAddress()); return new ValidateUserResult { @@ -536,11 +536,11 @@ namespace Umbraco.Web.Security.Providers member.IsLockedOut = true; member.LastLockoutDate = DateTime.Now; - Current.Logger.Info("Login attempt failed for username {Username} from IP address {IpAddress}, the user is now locked out, max invalid password attempts exceeded", username, _ipResolver.GetCurrentRequestIpAddress()); + Current.Logger.LogInformation("Login attempt failed for username {Username} from IP address {IpAddress}, the user is now locked out, max invalid password attempts exceeded", username, _ipResolver.GetCurrentRequestIpAddress()); } else { - Current.Logger.Info("Login attempt failed for username {Username} from IP address {IpAddress}", username, _ipResolver.GetCurrentRequestIpAddress()); + Current.Logger.LogInformation("Login attempt failed for username {Username} from IP address {IpAddress}", username, _ipResolver.GetCurrentRequestIpAddress()); } requiresFullSave = true; @@ -556,7 +556,7 @@ namespace Umbraco.Web.Security.Providers member.LastLoginDate = DateTime.Now; - Current.Logger.Info("Login attempt succeeded for username {Username} from IP address {IpAddress}", username, _ipResolver.GetCurrentRequestIpAddress()); + Current.Logger.LogInformation("Login attempt succeeded for username {Username} from IP address {IpAddress}", username, _ipResolver.GetCurrentRequestIpAddress()); } // don't raise events for this! It just sets the member dates, if we do raise events this will diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj index af9f9f76f6..099c995126 100644 --- a/src/Umbraco.Web/Umbraco.Web.csproj +++ b/src/Umbraco.Web/Umbraco.Web.csproj @@ -314,7 +314,6 @@ - @@ -402,4 +401,4 @@ - \ No newline at end of file + diff --git a/src/Umbraco.Web/UmbracoApplication.cs b/src/Umbraco.Web/UmbracoApplication.cs index 989dcfaf83..8f6231b22a 100644 --- a/src/Umbraco.Web/UmbracoApplication.cs +++ b/src/Umbraco.Web/UmbracoApplication.cs @@ -1,5 +1,6 @@ using System.Runtime.InteropServices; using System.Web; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Configuration; @@ -18,7 +19,7 @@ namespace Umbraco.Web /// public class UmbracoApplication : UmbracoApplicationBase { - protected override IRuntime GetRuntime(GlobalSettings globalSettings, ConnectionStrings connectionStrings, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, ILogger logger, IProfiler profiler, IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo) + protected override IRuntime GetRuntime(GlobalSettings globalSettings, ConnectionStrings connectionStrings, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, ILogger logger, ILoggerFactory loggerFactory, IProfiler profiler, IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo) { var dbProviderFactoryCreator = new UmbracoDbProviderFactoryCreator(); @@ -28,10 +29,10 @@ namespace Umbraco.Web var isWindows = RuntimeInformation.IsOSPlatform(OSPlatform.Windows); var mainDomLock = appSettingMainDomLock == "SqlMainDomLock" || isWindows == false - ? (IMainDomLock)new SqlMainDomLock(logger, globalSettings, connectionStrings, dbProviderFactoryCreator, hostingEnvironment) - : new MainDomSemaphoreLock(logger, hostingEnvironment); + ? (IMainDomLock)new SqlMainDomLock(loggerFactory.CreateLogger(), loggerFactory, globalSettings, connectionStrings, dbProviderFactoryCreator, hostingEnvironment) + : new MainDomSemaphoreLock(loggerFactory.CreateLogger(), hostingEnvironment); - var mainDom = new MainDom(logger, mainDomLock); + var mainDom = new MainDom(loggerFactory.CreateLogger(), mainDomLock); var requestCache = new HttpRequestAppCache(() => HttpContext.Current != null ? HttpContext.Current.Items : null); var appCaches = new AppCaches( @@ -40,7 +41,7 @@ namespace Umbraco.Web new IsolatedCaches(type => new DeepCloneAppCache(new ObjectCacheAppCache()))); var umbracoBootPermissionChecker = new AspNetUmbracoBootPermissionChecker(); - return new CoreRuntime(globalSettings, connectionStrings,umbracoVersion, ioHelper, logger, profiler, umbracoBootPermissionChecker, hostingEnvironment, backOfficeInfo, dbProviderFactoryCreator, mainDom, + return new CoreRuntime(globalSettings, connectionStrings,umbracoVersion, ioHelper, loggerFactory, profiler, umbracoBootPermissionChecker, hostingEnvironment, backOfficeInfo, dbProviderFactoryCreator, mainDom, GetTypeFinder(hostingEnvironment, logger, profiler), appCaches); } diff --git a/src/Umbraco.Web/UmbracoApplicationBase.cs b/src/Umbraco.Web/UmbracoApplicationBase.cs index 440cceebf5..0be333d28c 100644 --- a/src/Umbraco.Web/UmbracoApplicationBase.cs +++ b/src/Umbraco.Web/UmbracoApplicationBase.cs @@ -5,8 +5,11 @@ using System.Reflection; using System.Threading; using System.Web; using System.Web.Hosting; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Logging.Abstractions; using Microsoft.Extensions.Options; +using Serilog; using Serilog.Context; using Umbraco.Core; using Umbraco.Core.Cache; @@ -24,6 +27,7 @@ using Umbraco.Web.Logging; using ConnectionStrings = Umbraco.Core.Configuration.Models.ConnectionStrings; using Current = Umbraco.Web.Composing.Current; using GlobalSettings = Umbraco.Core.Configuration.Models.GlobalSettings; +using ILogger = Microsoft.Extensions.Logging.ILogger; namespace Umbraco.Web { @@ -32,11 +36,14 @@ namespace Umbraco.Web /// public abstract class UmbracoApplicationBase : HttpApplication { + private readonly ILogger _logger; private readonly SecuritySettings _securitySettings; private readonly GlobalSettings _globalSettings; private readonly ConnectionStrings _connectionStrings; + private readonly IIOHelper _ioHelper; private IRuntime _runtime; private IFactory _factory; + private ILoggerFactory _loggerFactory; protected UmbracoApplicationBase() { @@ -53,13 +60,13 @@ namespace Umbraco.Web var ioHelper = new IOHelper(hostingEnvironment); var logger = SerilogLogger.CreateWithDefaultConfiguration(hostingEnvironment, loggingConfiguration, new ConfigurationRoot(new List())); - var backOfficeInfo = new AspNetBackOfficeInfo(globalSettings, ioHelper, logger, Options.Create(webRoutingSettings)); + var backOfficeInfo = new AspNetBackOfficeInfo(globalSettings, ioHelper, _loggerFactory.CreateLogger(), Options.Create(webRoutingSettings)); var profiler = GetWebProfiler(hostingEnvironment); - Umbraco.Composing.Current.Initialize(logger, + Umbraco.Composing.Current.Initialize(NullLogger.Instance, securitySettings, globalSettings, ioHelper, hostingEnvironment, backOfficeInfo, profiler); - Logger = logger; + Logger = NullLogger.Instance; } } @@ -79,11 +86,14 @@ namespace Umbraco.Web return webProfiler; } - protected UmbracoApplicationBase(ILogger logger, SecuritySettings securitySettings, GlobalSettings globalSettings, ConnectionStrings connectionStrings, IIOHelper ioHelper, IProfiler profiler, IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo) + protected UmbracoApplicationBase(ILogger logger, ILoggerFactory loggerFactory, SecuritySettings securitySettings, GlobalSettings globalSettings, ConnectionStrings connectionStrings, IIOHelper ioHelper, IProfiler profiler, IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo) { + _logger = logger; _securitySettings = securitySettings; _globalSettings = globalSettings; _connectionStrings = connectionStrings; + _ioHelper = ioHelper; + _loggerFactory = loggerFactory; if (!Umbraco.Composing.Current.IsInitialized) { @@ -92,7 +102,7 @@ namespace Umbraco.Web } } - protected ILogger Logger { get; } + protected ILogger Logger { get; } /// /// Gets a @@ -112,8 +122,8 @@ namespace Umbraco.Web runtimeHashPaths.AddFile(new FileInfo(hostingEnvironment.MapPathContentRoot("~/App_Code"))); // global.asax (the app domain also monitors this, if it changes will do a full restart) runtimeHashPaths.AddFile(new FileInfo(hostingEnvironment.MapPathContentRoot("~/global.asax"))); - var runtimeHash = new RuntimeHash(new ProfilingLogger(logger, profiler), runtimeHashPaths); - return new TypeFinder(Logger, new DefaultUmbracoAssemblyProvider( + var runtimeHash = new RuntimeHash(new ProfilingLogger(_loggerFactory.CreateLogger("RuntimeHash"), profiler), runtimeHashPaths); + return new TypeFinder(_loggerFactory.CreateLogger(), new DefaultUmbracoAssemblyProvider( // GetEntryAssembly was actually an exposed API by request of the aspnetcore team which works in aspnet core because a website // in that case is essentially an exe. However in netframework there is no entry assembly, things don't really work that way since // the process that is running the site is iisexpress, so this returns null. The best we can do is fallback to GetExecutingAssembly() @@ -131,7 +141,7 @@ namespace Umbraco.Web /// /// Gets a runtime. /// - protected abstract IRuntime GetRuntime(GlobalSettings globalSettings, ConnectionStrings connectionStrings, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, ILogger logger, IProfiler profiler, IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo); + protected abstract IRuntime GetRuntime(GlobalSettings globalSettings, ConnectionStrings connectionStrings, IUmbracoVersion umbracoVersion, IIOHelper ioHelper, ILogger logger, ILoggerFactory loggerFactory, IProfiler profiler, IHostingEnvironment hostingEnvironment, IBackOfficeInfo backOfficeInfo); /// /// Gets the application register. @@ -180,8 +190,9 @@ namespace Umbraco.Web _globalSettings, _connectionStrings, umbracoVersion, - Umbraco.Composing.Current.IOHelper, - Umbraco.Composing.Current.Logger, + _ioHelper, + _logger, + _loggerFactory, Umbraco.Composing.Current.Profiler, Umbraco.Composing.Current.HostingEnvironment, Umbraco.Composing.Current.BackOfficeInfo); @@ -263,7 +274,7 @@ namespace Umbraco.Web BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetField, null, runtime, null); - Current.Logger.Info("Application shutdown. Details: {ShutdownReason}\r\n\r\n_shutDownMessage={ShutdownMessage}\r\n\r\n_shutDownStack={ShutdownStack}", + Current.Logger.LogInformation("Application shutdown. Details: {ShutdownReason}\r\n\r\n_shutDownMessage={ShutdownMessage}\r\n\r\n_shutDownStack={ShutdownStack}", HostingEnvironment.ShutdownReason, shutDownMessage, shutDownStack); @@ -271,7 +282,7 @@ namespace Umbraco.Web catch (Exception) { //if for some reason that fails, then log the normal output - Current.Logger.Info("Application shutdown. Reason: {ShutdownReason}", HostingEnvironment.ShutdownReason); + Current.Logger.LogInformation("Application shutdown. Reason: {ShutdownReason}", HostingEnvironment.ShutdownReason); } Current.Logger.DisposeIfDisposable(); @@ -303,7 +314,7 @@ namespace Umbraco.Web // ignore HTTP errors if (exception.GetType() == typeof(HttpException)) return; - Current.Logger.Error(exception, "An unhandled exception occurred"); + Current.Logger.LogError(exception, "An unhandled exception occurred"); } // called by ASP.NET (auto event wireup) at any phase in the application life cycle @@ -326,7 +337,7 @@ namespace Umbraco.Web } catch (Exception ex) { - Current.Logger.Error(ex, "Error in {Name} handler.", name); + Current.Logger.LogError(ex, "Error in {Name} handler.", name); throw; } } diff --git a/src/Umbraco.Web/UmbracoHelper.cs b/src/Umbraco.Web/UmbracoHelper.cs index 5b72e9cda0..d81bb61251 100644 --- a/src/Umbraco.Web/UmbracoHelper.cs +++ b/src/Umbraco.Web/UmbracoHelper.cs @@ -11,6 +11,7 @@ using Umbraco.Core.Templates; using Umbraco.Core.Strings; using Umbraco.Core.Xml; using Umbraco.Web.Mvc; +using Microsoft.Extensions.Logging; namespace Umbraco.Web { @@ -455,7 +456,7 @@ namespace Umbraco.Web } catch (Exception ex) when (ex is FormatException || ex is ArgumentException) { - Current.Logger.Warn(typeof(UmbracoHelper), "A value was detected in the ufprt parameter but Umbraco could not decrypt the string"); + Current.Logger.LogWarning("A value was detected in the ufprt parameter but Umbraco could not decrypt the string"); parts = null; return false; } diff --git a/src/Umbraco.Web/UmbracoHttpHandler.cs b/src/Umbraco.Web/UmbracoHttpHandler.cs index 7db09b62ff..bd8d4415f4 100644 --- a/src/Umbraco.Web/UmbracoHttpHandler.cs +++ b/src/Umbraco.Web/UmbracoHttpHandler.cs @@ -1,6 +1,7 @@ using System; using System.Web; using System.Web.Mvc; +using Microsoft.Extensions.Logging; using Umbraco.Core.Cache; using Umbraco.Core.Logging; using Umbraco.Core.Services; @@ -14,14 +15,14 @@ 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 profilingLogger ) { UmbracoContextAccessor = umbracoContextAccessor; - Logger = plogger; - ProfilingLogger = plogger; + Logger = logger; + ProfilingLogger = profilingLogger ; Services = service; } diff --git a/src/Umbraco.Web/UmbracoInjectedModule.cs b/src/Umbraco.Web/UmbracoInjectedModule.cs index 06b8953338..7faa4b3b4a 100644 --- a/src/Umbraco.Web/UmbracoInjectedModule.cs +++ b/src/Umbraco.Web/UmbracoInjectedModule.cs @@ -1,13 +1,13 @@ using System; using System.Web; using System.Web.Routing; +using Microsoft.Extensions.Logging; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Configuration; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Exceptions; using Umbraco.Core.Hosting; -using Umbraco.Core.Logging; using Umbraco.Core.Security; using Umbraco.Web.Composing; using Umbraco.Web.Routing; @@ -227,7 +227,7 @@ namespace Umbraco.Web if (context.Content.HasContent()) return true; - _logger.Warn("Umbraco has no content"); + _logger.LogWarning("Umbraco has no content"); if (RouteTable.Routes[Constants.Web.NoContentRouteName] is Route route) { diff --git a/src/Umbraco.Web/UmbracoModule.cs b/src/Umbraco.Web/UmbracoModule.cs index 358d213bb8..932861a89c 100644 --- a/src/Umbraco.Web/UmbracoModule.cs +++ b/src/Umbraco.Web/UmbracoModule.cs @@ -1,7 +1,7 @@ using System; using System.Web; +using Microsoft.Extensions.Logging; using Umbraco.Core; -using Umbraco.Core.Logging; using Umbraco.Web.Composing; using Umbraco.Web.Routing; @@ -50,7 +50,7 @@ namespace Umbraco.Web var end = false; var response = context.Response; - logger.Debug("Response status: Redirect={Redirect}, Is404={Is404}, StatusCode={ResponseStatusCode}", + logger.LogDebug("Response status: Redirect={Redirect}, Is404={Is404}, StatusCode={ResponseStatusCode}", pcr.IsRedirect ? (pcr.IsRedirectPermanent ? "permanent" : "redirect") : "none", pcr.Is404 ? "true" : "false", pcr.ResponseStatusCode); @@ -78,7 +78,7 @@ namespace Umbraco.Web response.TrySkipIisCustomErrors = /*Current.Configs.WebRouting().TrySkipIisCustomErrors; TODO introduce from config*/ false; if (response.TrySkipIisCustomErrors == false) - logger.Warn("Status code is 404 yet TrySkipIisCustomErrors is false - IIS will take over."); + logger.LogWarning("Status code is 404 yet TrySkipIisCustomErrors is false - IIS will take over."); } if (pcr.ResponseStatusCode > 0) @@ -97,7 +97,7 @@ namespace Umbraco.Web context.ApplicationInstance.CompleteRequest(); // though some say that .CompleteRequest() does not properly shutdown the response // and the request will hang until the whole code has run... would need to test? - logger.Debug("Response status: redirecting, complete request now."); + logger.LogDebug("Response status: redirecting, complete request now."); return end; } diff --git a/src/Umbraco.Web/UmbracoWebService.cs b/src/Umbraco.Web/UmbracoWebService.cs index 9dca6f5d33..285c9f1803 100644 --- a/src/Umbraco.Web/UmbracoWebService.cs +++ b/src/Umbraco.Web/UmbracoWebService.cs @@ -1,5 +1,6 @@ using System.Web.Mvc; using System.Web.Services; +using Microsoft.Extensions.Logging; using Umbraco.Core.Configuration.Models; using Umbraco.Core.Logging; using Umbraco.Core.Services; @@ -15,9 +16,9 @@ namespace Umbraco.Web { private UrlHelper _url; - protected UmbracoWebService(IProfilingLogger profilingLogger, IUmbracoContextAccessor umbracoContextAccessor, ServiceContext services, GlobalSettings globalSettings) + protected UmbracoWebService(ILogger logger, IProfilingLogger profilingLogger, IUmbracoContextAccessor umbracoContextAccessor, ServiceContext services, GlobalSettings globalSettings) { - Logger = profilingLogger; + Logger = logger; ProfilingLogger = profilingLogger; UmbracoContextAccessor = umbracoContextAccessor; Services = services; @@ -25,7 +26,7 @@ namespace Umbraco.Web } protected UmbracoWebService() - : this(Current.ProfilingLogger, Current.UmbracoContextAccessor, Current.Services, new GlobalSettings()) + : this(Current.Logger, Current.ProfilingLogger, Current.UmbracoContextAccessor, Current.Services, new GlobalSettings()) { } diff --git a/src/Umbraco.Web/WebApi/Filters/AngularAntiForgeryHelper.cs b/src/Umbraco.Web/WebApi/Filters/AngularAntiForgeryHelper.cs index a15014d4e5..4b16e650da 100644 --- a/src/Umbraco.Web/WebApi/Filters/AngularAntiForgeryHelper.cs +++ b/src/Umbraco.Web/WebApi/Filters/AngularAntiForgeryHelper.cs @@ -3,8 +3,8 @@ using System.Collections.Generic; using System.Linq; using System.Net.Http.Headers; using System.Web.Helpers; +using Microsoft.Extensions.Logging; using Umbraco.Core; -using Umbraco.Core.Logging; using Umbraco.Web.Composing; namespace Umbraco.Web.WebApi.Filters @@ -44,7 +44,7 @@ namespace Umbraco.Web.WebApi.Filters } catch (Exception ex) { - Current.Logger.Error(typeof(AngularAntiForgeryHelper), ex, "Could not validate XSRF token"); + Current.Logger.LogError(ex, "Could not validate XSRF token"); return false; } return true; diff --git a/src/Umbraco.Web/WebApi/Filters/FileUploadCleanupFilterAttribute.cs b/src/Umbraco.Web/WebApi/Filters/FileUploadCleanupFilterAttribute.cs index 1646c8a426..b12fc51ca6 100644 --- a/src/Umbraco.Web/WebApi/Filters/FileUploadCleanupFilterAttribute.cs +++ b/src/Umbraco.Web/WebApi/Filters/FileUploadCleanupFilterAttribute.cs @@ -4,8 +4,8 @@ using System.IO; using System.Linq; using System.Net.Http; using System.Web.Http.Filters; +using Microsoft.Extensions.Logging; using Umbraco.Core; -using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Web.Composing; using Umbraco.Web.Models.ContentEditing; @@ -57,7 +57,7 @@ namespace Umbraco.Web.WebApi.Filters } catch (System.Exception ex) { - Current.Logger.Error(ex, "Could not delete temp file {FileName}", f.TempFilePath); + Current.Logger.LogError(ex, "Could not delete temp file {FileName}", f.TempFilePath); } } } @@ -67,17 +67,17 @@ namespace Umbraco.Web.WebApi.Filters { if (actionExecutedContext == null) { - Current.Logger.Warn("The actionExecutedContext is null!!??"); + Current.Logger.LogWarning("The actionExecutedContext is null!!??"); return; } if (actionExecutedContext.Request == null) { - Current.Logger.Warn("The actionExecutedContext.Request is null!!??"); + Current.Logger.LogWarning("The actionExecutedContext.Request is null!!??"); return; } if (actionExecutedContext.Request.Content == null) { - Current.Logger.Warn("The actionExecutedContext.Request.Content is null!!??"); + Current.Logger.LogWarning("The actionExecutedContext.Request.Content is null!!??"); return; } @@ -89,7 +89,7 @@ namespace Umbraco.Web.WebApi.Filters } catch (System.Exception ex) { - Current.Logger.Error(ex, "Could not acquire actionExecutedContext.Response.Content"); + Current.Logger.LogError(ex, "Could not acquire actionExecutedContext.Response.Content"); return; } @@ -111,7 +111,7 @@ namespace Umbraco.Web.WebApi.Filters tempFolders.Add(dir); } - Current.Logger.Debug("Removing temp file {FileName}", f.TempFilePath); + Current.Logger.LogDebug("Removing temp file {FileName}", f.TempFilePath); try { @@ -119,7 +119,7 @@ namespace Umbraco.Web.WebApi.Filters } catch (System.Exception ex) { - Current.Logger.Error(ex, "Could not delete temp file {FileName}", f.TempFilePath); + Current.Logger.LogError(ex, "Could not delete temp file {FileName}", f.TempFilePath); } //clear out the temp path so it's not returned in the response @@ -127,23 +127,23 @@ namespace Umbraco.Web.WebApi.Filters } else { - Current.Logger.Warn("The f.TempFilePath is null or whitespace!!??"); + Current.Logger.LogWarning("The f.TempFilePath is null or whitespace!!??"); } } } else { - Current.Logger.Warn("The uploadedFiles.UploadedFiles is null!!??"); + Current.Logger.LogWarning("The uploadedFiles.UploadedFiles is null!!??"); } } else { - Current.Logger.Warn("The actionExecutedContext.Request.Content.Value is not IHaveUploadedFiles, it is {ObjectType}", objectContent.Value.GetType()); + Current.Logger.LogWarning("The actionExecutedContext.Request.Content.Value is not IHaveUploadedFiles, it is {ObjectType}", objectContent.Value.GetType()); } } else { - Current.Logger.Warn("The actionExecutedContext.Request.Content is not ObjectContent, it is {RequestObjectType}", actionExecutedContext.Request.Content.GetType()); + Current.Logger.LogWarning("The actionExecutedContext.Request.Content is not ObjectContent, it is {RequestObjectType}", actionExecutedContext.Request.Content.GetType()); } } } diff --git a/src/Umbraco.Web/WebApi/UnhandledExceptionLogger.cs b/src/Umbraco.Web/WebApi/UnhandledExceptionLogger.cs index 323ab2e727..903e333846 100644 --- a/src/Umbraco.Web/WebApi/UnhandledExceptionLogger.cs +++ b/src/Umbraco.Web/WebApi/UnhandledExceptionLogger.cs @@ -1,6 +1,6 @@ using System.Web.Http.ExceptionHandling; using Umbraco.Web.Composing; -using Umbraco.Core.Logging; +using Microsoft.Extensions.Logging; namespace Umbraco.Web.WebApi { @@ -28,7 +28,7 @@ namespace Umbraco.Web.WebApi var requestUrl = context.ExceptionContext?.ControllerContext?.Request?.RequestUri?.AbsoluteUri; var controllerType = context.ExceptionContext?.ActionContext?.ControllerContext?.Controller?.GetType(); - _logger.Error(controllerType, context.Exception, "Unhandled controller exception occurred for request '{RequestUrl}'", requestUrl); + _logger.LogError(context.Exception, "Unhandled controller exception occurred for request '{RequestUrl}'", requestUrl); } } diff --git a/src/Umbraco.Web/WebAssets/CDF/ClientDependencyConfiguration.cs b/src/Umbraco.Web/WebAssets/CDF/ClientDependencyConfiguration.cs index e4360e0845..2f427a8949 100644 --- a/src/Umbraco.Web/WebAssets/CDF/ClientDependencyConfiguration.cs +++ b/src/Umbraco.Web/WebAssets/CDF/ClientDependencyConfiguration.cs @@ -6,11 +6,11 @@ using System.Security.Cryptography; using System.Text; using System.Web; using System.Xml.Linq; +using Microsoft.Extensions.Logging; using ClientDependency.Core.CompositeFiles.Providers; using ClientDependency.Core.Config; using Semver; using Umbraco.Core.IO; -using Umbraco.Core.Logging; namespace Umbraco.Web.WebAssets.CDF { @@ -19,7 +19,7 @@ namespace Umbraco.Web.WebAssets.CDF /// public class ClientDependencyConfiguration { - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly string _fileName; private string FileMapDefaultFolder @@ -28,7 +28,7 @@ namespace Umbraco.Web.WebAssets.CDF set => XmlFileMapper.FileMapDefaultFolder = value; } - public ClientDependencyConfiguration(ILogger logger, IIOHelper ioHelper) + public ClientDependencyConfiguration(ILogger logger, IIOHelper ioHelper) { if (logger == null) throw new ArgumentNullException("logger"); _logger = logger; @@ -85,13 +85,13 @@ namespace Umbraco.Web.WebAssets.CDF versionAttribute.SetValue(newVersion); clientDependencyConfigXml.Save(_fileName, SaveOptions.DisableFormatting); - _logger.Info("Updated version number from {OldVersion} to {NewVersion}", oldVersion, newVersion); + _logger.LogInformation("Updated version number from {OldVersion} to {NewVersion}", oldVersion, newVersion); return true; } } catch (Exception ex) { - _logger.Error(ex, "Couldn't update ClientDependency version number"); + _logger.LogError(ex, "Couldn't update ClientDependency version number"); } return false; @@ -124,7 +124,7 @@ namespace Umbraco.Web.WebAssets.CDF catch (Exception ex) { //invalid path format or something... try/catch to be safe - _logger.Error(ex, "Could not get path from ClientDependency.config"); + _logger.LogError(ex, "Could not get path from ClientDependency.config"); } var success = true; @@ -140,7 +140,7 @@ namespace Umbraco.Web.WebAssets.CDF catch (Exception ex) { // Something could be locking the directory or the was another error, making sure we don't break the upgrade installer - _logger.Error(ex, "Could not clear temp files"); + _logger.LogError(ex, "Could not clear temp files"); success = false; } } diff --git a/src/Umbraco.Web/WebAssets/CDF/ClientDependencyRuntimeMinifier.cs b/src/Umbraco.Web/WebAssets/CDF/ClientDependencyRuntimeMinifier.cs index 0cd03d2ee6..1bdb1bf945 100644 --- a/src/Umbraco.Web/WebAssets/CDF/ClientDependencyRuntimeMinifier.cs +++ b/src/Umbraco.Web/WebAssets/CDF/ClientDependencyRuntimeMinifier.cs @@ -5,12 +5,12 @@ using System.Linq; using System.Reflection; using System.Threading.Tasks; using System.Web; +using Microsoft.Extensions.Logging; using ClientDependency.Core; using ClientDependency.Core.CompositeFiles; using ClientDependency.Core.Config; using Umbraco.Core.Configuration; using Umbraco.Core.IO; -using Umbraco.Core.Logging; using Umbraco.Core.Manifest; using Umbraco.Core.PropertyEditors; using Umbraco.Core.WebAssets; @@ -23,7 +23,8 @@ namespace Umbraco.Web.WebAssets.CDF { private readonly IHttpContextAccessor _httpContextAccessor; private readonly IIOHelper _ioHelper; - private readonly ILogger _logger; + private readonly ILoggerFactory _loggerFactory; + private readonly ILogger _logger; private readonly IUmbracoVersion _umbracoVersion; public string CacheBuster => ClientDependencySettings.Instance.Version.ToString(); @@ -31,12 +32,13 @@ namespace Umbraco.Web.WebAssets.CDF public ClientDependencyRuntimeMinifier( IHttpContextAccessor httpContextAccessor, IIOHelper ioHelper, - ILogger logger, + ILoggerFactory loggerFactory, IUmbracoVersion umbracoVersion) { _httpContextAccessor = httpContextAccessor; _ioHelper = ioHelper; - _logger = logger; + _loggerFactory = loggerFactory; + _logger = _loggerFactory.CreateLogger(); _umbracoVersion = umbracoVersion; } @@ -107,7 +109,7 @@ namespace Umbraco.Web.WebAssets.CDF public void Reset() { // Update ClientDependency version - var clientDependencyConfig = new ClientDependencyConfiguration(_logger, _ioHelper); + var clientDependencyConfig = new ClientDependencyConfiguration(_loggerFactory.CreateLogger(), _ioHelper); var clientDependencyUpdated = clientDependencyConfig.UpdateVersionNumber( _umbracoVersion.SemanticVersion, DateTime.UtcNow, "yyyyMMdd"); // Delete ClientDependency temp directories to make sure we get fresh caches