diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj
index a6716e5264..987855c932 100755
--- a/src/Umbraco.Core/Umbraco.Core.csproj
+++ b/src/Umbraco.Core/Umbraco.Core.csproj
@@ -129,19 +129,15 @@
-
-
-
-
@@ -155,35 +151,11 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -222,8 +194,5 @@
Umbraco.Infrastructure
-
-
-
\ No newline at end of file
diff --git a/src/Umbraco.Core/CompositionExtensions.cs b/src/Umbraco.Infrastructure/CompositionExtensions.cs
similarity index 100%
rename from src/Umbraco.Core/CompositionExtensions.cs
rename to src/Umbraco.Infrastructure/CompositionExtensions.cs
diff --git a/src/Umbraco.Core/CompositionExtensions_Essentials.cs b/src/Umbraco.Infrastructure/CompositionExtensions_Essentials.cs
similarity index 100%
rename from src/Umbraco.Core/CompositionExtensions_Essentials.cs
rename to src/Umbraco.Infrastructure/CompositionExtensions_Essentials.cs
diff --git a/src/Umbraco.Core/CompositionExtensions_FileSystems.cs b/src/Umbraco.Infrastructure/CompositionExtensions_FileSystems.cs
similarity index 100%
rename from src/Umbraco.Core/CompositionExtensions_FileSystems.cs
rename to src/Umbraco.Infrastructure/CompositionExtensions_FileSystems.cs
diff --git a/src/Umbraco.Infrastructure/Diagnostics/IMarchal.cs b/src/Umbraco.Infrastructure/Diagnostics/IMarchal.cs
new file mode 100644
index 0000000000..30e6a9e619
--- /dev/null
+++ b/src/Umbraco.Infrastructure/Diagnostics/IMarchal.cs
@@ -0,0 +1,12 @@
+using System;
+
+namespace Umbraco.Core.Diagnostics
+{
+ ///
+ /// Provides a collection of methods for allocating unmanaged memory, copying unmanaged memory blocks, and converting managed to unmanaged types, as well as other miscellaneous methods used when interacting with unmanaged code.
+ ///
+ public interface IMarchal
+ {
+ IntPtr GetExceptionPointers();
+ }
+}
diff --git a/src/Umbraco.Core/Diagnostics/MiniDump.cs b/src/Umbraco.Infrastructure/Diagnostics/MiniDump.cs
similarity index 91%
rename from src/Umbraco.Core/Diagnostics/MiniDump.cs
rename to src/Umbraco.Infrastructure/Diagnostics/MiniDump.cs
index 6534ad705c..9bc0b1c3fb 100644
--- a/src/Umbraco.Core/Diagnostics/MiniDump.cs
+++ b/src/Umbraco.Infrastructure/Diagnostics/MiniDump.cs
@@ -78,7 +78,7 @@ namespace Umbraco.Core.Diagnostics
[DllImport("kernel32.dll", EntryPoint = "GetCurrentThreadId", ExactSpelling = true)]
private static extern uint GetCurrentThreadId();
- private static bool Write(SafeHandle fileHandle, Option options, bool withException = false)
+ private static bool Write(IMarchal marchal, SafeHandle fileHandle, Option options, bool withException = false)
{
var currentProcess = Process.GetCurrentProcess();
var currentProcessHandle = currentProcess.Handle;
@@ -91,7 +91,7 @@ namespace Umbraco.Core.Diagnostics
exp.ExceptionPointers = IntPtr.Zero;
if (withException)
- exp.ExceptionPointers = Marshal.GetExceptionPointers();
+ exp.ExceptionPointers = marchal.GetExceptionPointers();
var bRet = exp.ExceptionPointers == IntPtr.Zero
? MiniDumpWriteDump(currentProcessHandle, currentProcessId, fileHandle, (uint) options, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero)
@@ -100,7 +100,7 @@ namespace Umbraco.Core.Diagnostics
return bRet;
}
- public static bool Dump(Option options = Option.WithFullMemory, bool withException = false)
+ public static bool Dump(IMarchal marchal, IIOHelper ioHelper, Option options = Option.WithFullMemory, bool withException = false)
{
lock (LockO)
{
@@ -110,8 +110,6 @@ namespace Umbraco.Core.Diagnostics
// filter everywhere in our code = not!
var stacktrace = withException ? Environment.StackTrace : string.Empty;
- var ioHelper = Current.Factory.GetInstance();
-
var filepath = ioHelper.MapPath("~/App_Data/MiniDump");
if (Directory.Exists(filepath) == false)
Directory.CreateDirectory(filepath);
@@ -119,16 +117,15 @@ namespace Umbraco.Core.Diagnostics
var filename = Path.Combine(filepath, $"{DateTime.UtcNow:yyyyMMddTHHmmss}.{Guid.NewGuid().ToString("N").Substring(0, 4)}.dmp");
using (var stream = new FileStream(filename, FileMode.Create, FileAccess.ReadWrite, FileShare.Write))
{
- return Write(stream.SafeFileHandle, options, withException);
+ return Write(marchal, stream.SafeFileHandle, options, withException);
}
}
}
- public static bool OkToDump()
+ public static bool OkToDump(IIOHelper ioHelper)
{
lock (LockO)
{
- var ioHelper = Current.Factory.GetInstance();
var filepath = ioHelper.MapPath("~/App_Data/MiniDump");
if (Directory.Exists(filepath) == false) return true;
var count = Directory.GetFiles(filepath, "*.dmp").Length;
diff --git a/src/Umbraco.Core/Logging/LogHttpRequest.cs b/src/Umbraco.Infrastructure/Logging/LogHttpRequest.cs
similarity index 100%
rename from src/Umbraco.Core/Logging/LogHttpRequest.cs
rename to src/Umbraco.Infrastructure/Logging/LogHttpRequest.cs
diff --git a/src/Umbraco.Core/Logging/MessageTemplates.cs b/src/Umbraco.Infrastructure/Logging/MessageTemplates.cs
similarity index 100%
rename from src/Umbraco.Core/Logging/MessageTemplates.cs
rename to src/Umbraco.Infrastructure/Logging/MessageTemplates.cs
diff --git a/src/Umbraco.Core/Logging/OwinLogger.cs b/src/Umbraco.Infrastructure/Logging/OwinLogger.cs
similarity index 100%
rename from src/Umbraco.Core/Logging/OwinLogger.cs
rename to src/Umbraco.Infrastructure/Logging/OwinLogger.cs
diff --git a/src/Umbraco.Core/Logging/OwinLoggerFactory.cs b/src/Umbraco.Infrastructure/Logging/OwinLoggerFactory.cs
similarity index 84%
rename from src/Umbraco.Core/Logging/OwinLoggerFactory.cs
rename to src/Umbraco.Infrastructure/Logging/OwinLoggerFactory.cs
index 31805b2edc..9cd4c06263 100644
--- a/src/Umbraco.Core/Logging/OwinLoggerFactory.cs
+++ b/src/Umbraco.Infrastructure/Logging/OwinLoggerFactory.cs
@@ -1,10 +1,10 @@
using System;
using Microsoft.Owin.Logging;
-using Umbraco.Core.Composing;
+using Umbraco.Composing;
namespace Umbraco.Core.Logging
{
- internal class OwinLoggerFactory : ILoggerFactory
+ public class OwinLoggerFactory : ILoggerFactory
{
///
/// Creates a new ILogger instance of the given name.
diff --git a/src/Umbraco.Core/Logging/Serilog/Enrichers/HttpRequestIdEnricher.cs b/src/Umbraco.Infrastructure/Logging/Serilog/Enrichers/HttpRequestIdEnricher.cs
similarity index 100%
rename from src/Umbraco.Core/Logging/Serilog/Enrichers/HttpRequestIdEnricher.cs
rename to src/Umbraco.Infrastructure/Logging/Serilog/Enrichers/HttpRequestIdEnricher.cs
diff --git a/src/Umbraco.Core/Logging/Serilog/Enrichers/HttpRequestNumberEnricher.cs b/src/Umbraco.Infrastructure/Logging/Serilog/Enrichers/HttpRequestNumberEnricher.cs
similarity index 100%
rename from src/Umbraco.Core/Logging/Serilog/Enrichers/HttpRequestNumberEnricher.cs
rename to src/Umbraco.Infrastructure/Logging/Serilog/Enrichers/HttpRequestNumberEnricher.cs
diff --git a/src/Umbraco.Core/Logging/Serilog/Enrichers/HttpSessionIdEnricher.cs b/src/Umbraco.Infrastructure/Logging/Serilog/Enrichers/HttpSessionIdEnricher.cs
similarity index 100%
rename from src/Umbraco.Core/Logging/Serilog/Enrichers/HttpSessionIdEnricher.cs
rename to src/Umbraco.Infrastructure/Logging/Serilog/Enrichers/HttpSessionIdEnricher.cs
diff --git a/src/Umbraco.Core/Logging/Serilog/Enrichers/Log4NetLevelMapperEnricher.cs b/src/Umbraco.Infrastructure/Logging/Serilog/Enrichers/Log4NetLevelMapperEnricher.cs
similarity index 100%
rename from src/Umbraco.Core/Logging/Serilog/Enrichers/Log4NetLevelMapperEnricher.cs
rename to src/Umbraco.Infrastructure/Logging/Serilog/Enrichers/Log4NetLevelMapperEnricher.cs
diff --git a/src/Umbraco.Core/Logging/Serilog/LoggerConfigExtensions.cs b/src/Umbraco.Infrastructure/Logging/Serilog/LoggerConfigExtensions.cs
similarity index 100%
rename from src/Umbraco.Core/Logging/Serilog/LoggerConfigExtensions.cs
rename to src/Umbraco.Infrastructure/Logging/Serilog/LoggerConfigExtensions.cs
diff --git a/src/Umbraco.Core/Logging/Serilog/SerilogLogger.cs b/src/Umbraco.Infrastructure/Logging/Serilog/SerilogLogger.cs
similarity index 88%
rename from src/Umbraco.Core/Logging/Serilog/SerilogLogger.cs
rename to src/Umbraco.Infrastructure/Logging/Serilog/SerilogLogger.cs
index af5f712489..9dde28e95a 100644
--- a/src/Umbraco.Core/Logging/Serilog/SerilogLogger.cs
+++ b/src/Umbraco.Infrastructure/Logging/Serilog/SerilogLogger.cs
@@ -5,9 +5,10 @@ using System.Threading;
using Serilog;
using Serilog.Events;
using Umbraco.Core.Cache;
-using Umbraco.Core.Composing;
+using Umbraco.Core.Configuration;
using Umbraco.Core.Diagnostics;
using Umbraco.Core.Hosting;
+using Umbraco.Core.IO;
using Umbraco.Net;
namespace Umbraco.Core.Logging.Serilog
@@ -17,19 +18,31 @@ namespace Umbraco.Core.Logging.Serilog
///
public class SerilogLogger : ILogger, IDisposable
{
+ private readonly ICoreDebug _coreDebug;
+ private readonly IIOHelper _ioHelper;
+ private readonly IMarchal _marchal;
+
///
/// Initialize a new instance of the class with a configuration file.
///
///
- public SerilogLogger(FileInfo logConfigFile)
+ public SerilogLogger(ICoreDebug coreDebug, IIOHelper ioHelper, IMarchal marchal, FileInfo logConfigFile)
{
+ _coreDebug = coreDebug;
+ _ioHelper = ioHelper;
+ _marchal = marchal;
+
Log.Logger = new LoggerConfiguration()
.ReadFrom.AppSettings(filePath: AppDomain.CurrentDomain.BaseDirectory + logConfigFile)
.CreateLogger();
}
- public SerilogLogger(LoggerConfiguration logConfig)
+ public SerilogLogger(ICoreDebug coreDebug, IIOHelper ioHelper, IMarchal marchal, LoggerConfiguration logConfig)
{
+ _coreDebug = coreDebug;
+ _ioHelper = ioHelper;
+ _marchal = marchal;
+
//Configure Serilog static global logger with config passed in
Log.Logger = logConfig.CreateLogger();
}
@@ -38,7 +51,7 @@ namespace Umbraco.Core.Logging.Serilog
/// Creates a logger with some pre-defined configuration and remainder from config file
///
/// Used by UmbracoApplicationBase to get its logger.
- public static SerilogLogger CreateWithDefaultConfiguration(IHostingEnvironment hostingEnvironment, ISessionIdResolver sessionIdResolver, Func requestCacheGetter)
+ public static SerilogLogger CreateWithDefaultConfiguration(IHostingEnvironment hostingEnvironment, ISessionIdResolver sessionIdResolver, Func requestCacheGetter, ICoreDebug coreDebug, IIOHelper ioHelper, IMarchal marchal)
{
var loggerConfig = new LoggerConfiguration();
loggerConfig
@@ -46,7 +59,7 @@ namespace Umbraco.Core.Logging.Serilog
.ReadFromConfigFile()
.ReadFromUserConfigFile();
- return new SerilogLogger(loggerConfig);
+ return new SerilogLogger(coreDebug, ioHelper, marchal, loggerConfig);
}
///
@@ -157,7 +170,7 @@ namespace Umbraco.Core.Logging.Serilog
logger.Error(exception, messageTemplate, propertyValues);
}
- private static void DumpThreadAborts(global::Serilog.ILogger logger, LogEventLevel level, Exception exception, ref string messageTemplate)
+ private void DumpThreadAborts(global::Serilog.ILogger logger, LogEventLevel level, Exception exception, ref string messageTemplate)
{
var dump = false;
@@ -166,17 +179,17 @@ namespace Umbraco.Core.Logging.Serilog
messageTemplate += "\r\nThe thread has been aborted, because the request has timed out.";
// dump if configured, or if stacktrace contains Monitor.ReliableEnter
- dump = Current.Configs.CoreDebug().DumpOnTimeoutThreadAbort || IsMonitorEnterThreadAbortException(exception);
+ dump = _coreDebug.DumpOnTimeoutThreadAbort || IsMonitorEnterThreadAbortException(exception);
// dump if it is ok to dump (might have a cap on number of dump...)
- dump &= MiniDump.OkToDump();
+ dump &= MiniDump.OkToDump(_ioHelper);
}
if (dump)
{
try
{
- var dumped = MiniDump.Dump(withException: true);
+ var dumped = MiniDump.Dump(_marchal, _ioHelper, withException: true);
messageTemplate += dumped
? "\r\nA minidump was created in App_Data/MiniDump"
: "\r\nFailed to create a minidump";
diff --git a/src/Umbraco.Core/Logging/Viewer/CountingFilter.cs b/src/Umbraco.Infrastructure/Logging/Viewer/CountingFilter.cs
similarity index 100%
rename from src/Umbraco.Core/Logging/Viewer/CountingFilter.cs
rename to src/Umbraco.Infrastructure/Logging/Viewer/CountingFilter.cs
diff --git a/src/Umbraco.Core/Logging/Viewer/ErrorCounterFilter.cs b/src/Umbraco.Infrastructure/Logging/Viewer/ErrorCounterFilter.cs
similarity index 100%
rename from src/Umbraco.Core/Logging/Viewer/ErrorCounterFilter.cs
rename to src/Umbraco.Infrastructure/Logging/Viewer/ErrorCounterFilter.cs
diff --git a/src/Umbraco.Core/Logging/Viewer/ExpressionFilter.cs b/src/Umbraco.Infrastructure/Logging/Viewer/ExpressionFilter.cs
similarity index 100%
rename from src/Umbraco.Core/Logging/Viewer/ExpressionFilter.cs
rename to src/Umbraco.Infrastructure/Logging/Viewer/ExpressionFilter.cs
diff --git a/src/Umbraco.Core/Logging/Viewer/ILogFilter.cs b/src/Umbraco.Infrastructure/Logging/Viewer/ILogFilter.cs
similarity index 100%
rename from src/Umbraco.Core/Logging/Viewer/ILogFilter.cs
rename to src/Umbraco.Infrastructure/Logging/Viewer/ILogFilter.cs
diff --git a/src/Umbraco.Core/Logging/Viewer/ILogViewer.cs b/src/Umbraco.Infrastructure/Logging/Viewer/ILogViewer.cs
similarity index 100%
rename from src/Umbraco.Core/Logging/Viewer/ILogViewer.cs
rename to src/Umbraco.Infrastructure/Logging/Viewer/ILogViewer.cs
diff --git a/src/Umbraco.Core/Logging/Viewer/JsonLogViewer.cs b/src/Umbraco.Infrastructure/Logging/Viewer/JsonLogViewer.cs
similarity index 100%
rename from src/Umbraco.Core/Logging/Viewer/JsonLogViewer.cs
rename to src/Umbraco.Infrastructure/Logging/Viewer/JsonLogViewer.cs
diff --git a/src/Umbraco.Core/Logging/Viewer/LogLevelCounts.cs b/src/Umbraco.Infrastructure/Logging/Viewer/LogLevelCounts.cs
similarity index 100%
rename from src/Umbraco.Core/Logging/Viewer/LogLevelCounts.cs
rename to src/Umbraco.Infrastructure/Logging/Viewer/LogLevelCounts.cs
diff --git a/src/Umbraco.Core/Logging/Viewer/LogMessage.cs b/src/Umbraco.Infrastructure/Logging/Viewer/LogMessage.cs
similarity index 100%
rename from src/Umbraco.Core/Logging/Viewer/LogMessage.cs
rename to src/Umbraco.Infrastructure/Logging/Viewer/LogMessage.cs
diff --git a/src/Umbraco.Core/Logging/Viewer/LogTemplate.cs b/src/Umbraco.Infrastructure/Logging/Viewer/LogTemplate.cs
similarity index 100%
rename from src/Umbraco.Core/Logging/Viewer/LogTemplate.cs
rename to src/Umbraco.Infrastructure/Logging/Viewer/LogTemplate.cs
diff --git a/src/Umbraco.Core/Logging/Viewer/LogTimePeriod.cs b/src/Umbraco.Infrastructure/Logging/Viewer/LogTimePeriod.cs
similarity index 100%
rename from src/Umbraco.Core/Logging/Viewer/LogTimePeriod.cs
rename to src/Umbraco.Infrastructure/Logging/Viewer/LogTimePeriod.cs
diff --git a/src/Umbraco.Core/Logging/Viewer/LogViewerComposer.cs b/src/Umbraco.Infrastructure/Logging/Viewer/LogViewerComposer.cs
similarity index 100%
rename from src/Umbraco.Core/Logging/Viewer/LogViewerComposer.cs
rename to src/Umbraco.Infrastructure/Logging/Viewer/LogViewerComposer.cs
diff --git a/src/Umbraco.Core/Logging/Viewer/LogViewerSourceBase.cs b/src/Umbraco.Infrastructure/Logging/Viewer/LogViewerSourceBase.cs
similarity index 100%
rename from src/Umbraco.Core/Logging/Viewer/LogViewerSourceBase.cs
rename to src/Umbraco.Infrastructure/Logging/Viewer/LogViewerSourceBase.cs
diff --git a/src/Umbraco.Core/Logging/Viewer/MessageTemplateFilter.cs b/src/Umbraco.Infrastructure/Logging/Viewer/MessageTemplateFilter.cs
similarity index 100%
rename from src/Umbraco.Core/Logging/Viewer/MessageTemplateFilter.cs
rename to src/Umbraco.Infrastructure/Logging/Viewer/MessageTemplateFilter.cs
diff --git a/src/Umbraco.Core/Logging/Viewer/SavedLogSearch.cs b/src/Umbraco.Infrastructure/Logging/Viewer/SavedLogSearch.cs
similarity index 100%
rename from src/Umbraco.Core/Logging/Viewer/SavedLogSearch.cs
rename to src/Umbraco.Infrastructure/Logging/Viewer/SavedLogSearch.cs
diff --git a/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj b/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj
index 8e9baebbf0..5763d2aca4 100644
--- a/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj
+++ b/src/Umbraco.Infrastructure/Umbraco.Infrastructure.csproj
@@ -9,6 +9,7 @@
+
@@ -19,6 +20,7 @@
+
diff --git a/src/Umbraco.Tests/TestHelpers/TestHelper.cs b/src/Umbraco.Tests/TestHelpers/TestHelper.cs
index fbbb0ecff7..64e7b7e040 100644
--- a/src/Umbraco.Tests/TestHelpers/TestHelper.cs
+++ b/src/Umbraco.Tests/TestHelpers/TestHelper.cs
@@ -13,6 +13,7 @@ using Umbraco.Core.Cache;
using Umbraco.Core.Composing;
using Umbraco.Core.Configuration;
using Umbraco.Core.Configuration.UmbracoSettings;
+using Umbraco.Core.Diagnostics;
using Umbraco.Core.Hosting;
using Umbraco.Core.IO;
using Umbraco.Core.Logging;
@@ -87,6 +88,8 @@ namespace Umbraco.Tests.TestHelpers
public static IShortStringHelper ShortStringHelper => new DefaultShortStringHelper(new DefaultShortStringHelperConfig());
public static IDbProviderFactoryCreator DbProviderFactoryCreator => new UmbracoDbProviderFactoryCreator(Constants.DbProviderNames.SqlCe);
public static IBulkSqlInsertProvider BulkSqlInsertProvider => new SqlCeBulkSqlInsertProvider();
+ public static IMarchal Marchal => new FrameworkMarchal();
+ public static ICoreDebug CoreDebug => new CoreDebug();
public static IIOHelper IOHelper = new IOHelper(GetHostingEnvironment());
diff --git a/src/Umbraco.Tests/TestHelpers/TestObjects-Mocks.cs b/src/Umbraco.Tests/TestHelpers/TestObjects-Mocks.cs
index e78b074b89..7230d1101e 100644
--- a/src/Umbraco.Tests/TestHelpers/TestObjects-Mocks.cs
+++ b/src/Umbraco.Tests/TestHelpers/TestObjects-Mocks.cs
@@ -158,7 +158,6 @@ namespace Umbraco.Tests.TestHelpers
{
return SettingsForTests.GetDefaultGlobalSettings();
}
-
public IFileSystems GetFileSystemsMock()
{
var fileSystems = Mock.Of();
diff --git a/src/Umbraco.Tests/Testing/UmbracoTestBase.cs b/src/Umbraco.Tests/Testing/UmbracoTestBase.cs
index ea13a25bbd..13ee8fea89 100644
--- a/src/Umbraco.Tests/Testing/UmbracoTestBase.cs
+++ b/src/Umbraco.Tests/Testing/UmbracoTestBase.cs
@@ -241,7 +241,7 @@ namespace Umbraco.Tests.Testing
profiler = Mock.Of();
break;
case UmbracoTestOptions.Logger.Serilog:
- logger = new SerilogLogger(new FileInfo(TestHelper.MapPathForTest("~/unit-test.config")));
+ logger = new SerilogLogger(TestHelper.CoreDebug, IOHelper, TestHelper.Marchal, new FileInfo(TestHelper.MapPathForTest("~/unit-test.config")));
profiler = new LogProfiler(logger);
break;
case UmbracoTestOptions.Logger.Console:
diff --git a/src/Umbraco.Tests/UmbracoExamine/ExamineBaseTest.cs b/src/Umbraco.Tests/UmbracoExamine/ExamineBaseTest.cs
index ce3e45c23f..2266bd0104 100644
--- a/src/Umbraco.Tests/UmbracoExamine/ExamineBaseTest.cs
+++ b/src/Umbraco.Tests/UmbracoExamine/ExamineBaseTest.cs
@@ -17,7 +17,7 @@ namespace Umbraco.Tests.UmbracoExamine
[OneTimeSetUp]
public void InitializeFixture()
{
- var logger = new SerilogLogger(new FileInfo(TestHelper.MapPathForTest("~/unit-test.config")));
+ var logger = new SerilogLogger(TestHelper.CoreDebug, IOHelper, TestHelper.Marchal, new FileInfo(TestHelper.MapPathForTest("~/unit-test.config")));
_profilingLogger = new ProfilingLogger(logger, new LogProfiler(logger));
}
diff --git a/src/Umbraco.Web/FrameworkMarchal.cs b/src/Umbraco.Web/FrameworkMarchal.cs
new file mode 100644
index 0000000000..c8cd8a5692
--- /dev/null
+++ b/src/Umbraco.Web/FrameworkMarchal.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Runtime.InteropServices;
+using Umbraco.Core.Diagnostics;
+
+namespace Umbraco.Web
+{
+
+ public class FrameworkMarchal : IMarchal
+ {
+ // This thing is not available in net standard, but exists in both .Net 4 and .Net Core 3
+ public IntPtr GetExceptionPointers() => Marshal.GetExceptionPointers();
+ }
+}
diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj
index d792ad84a3..bb4df93eb6 100755
--- a/src/Umbraco.Web/Umbraco.Web.csproj
+++ b/src/Umbraco.Web/Umbraco.Web.csproj
@@ -170,6 +170,7 @@
+
diff --git a/src/Umbraco.Web/UmbracoApplicationBase.cs b/src/Umbraco.Web/UmbracoApplicationBase.cs
index de780a6b48..9fee53dc48 100644
--- a/src/Umbraco.Web/UmbracoApplicationBase.cs
+++ b/src/Umbraco.Web/UmbracoApplicationBase.cs
@@ -46,7 +46,7 @@ namespace Umbraco.Web
_profiler = new LogProfiler(_logger);
- _logger = SerilogLogger.CreateWithDefaultConfiguration(_hostingEnvironment, new AspNetSessionIdResolver(), () => _factory?.GetInstance());
+ _logger = SerilogLogger.CreateWithDefaultConfiguration(_hostingEnvironment, new AspNetSessionIdResolver(), () => _factory?.GetInstance(), _configs.CoreDebug(), _ioHelper, new FrameworkMarchal());
_backOfficeInfo = new AspNetBackOfficeInfo(_configs.Global(), _ioHelper, _configs.Settings(), _logger);
Umbraco.Composing.Current.Logger = _logger;