diff --git a/.gitignore b/.gitignore
index b87d1df346..022acb5db7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -196,3 +196,4 @@ src/Umbraco.Tests.Integration/umbraco/logs/
src/Umbraco.Tests.Integration/Views/
src/Umbraco.Tests/TEMP/
+/src/Umbraco.Web.UI.NetCore/Umbraco/Data/*
diff --git a/src/Umbraco.Core/Constants-SystemDirectories.cs b/src/Umbraco.Core/Constants-SystemDirectories.cs
index a86e4171d6..6145f4190b 100644
--- a/src/Umbraco.Core/Constants-SystemDirectories.cs
+++ b/src/Umbraco.Core/Constants-SystemDirectories.cs
@@ -4,12 +4,30 @@ namespace Umbraco.Core
{
public static class SystemDirectories
{
+ ///
+ /// The aspnet bin folder
+ ///
public const string Bin = "~/bin";
+ // TODO: Shouldn't this exist underneath /Umbraco in the content root?
public const string Config = "~/config";
- public const string Data = "~/Umbraco/Data";
+ ///
+ /// The Umbraco folder that exists at the content root.
+ ///
+ ///
+ /// This is not the same as the Umbraco web folder which is configurable for serving front-end files.
+ ///
+ public const string Umbraco = "~/Umbraco";
+ ///
+ /// The Umbraco data folder in the content root
+ ///
+ public const string Data = Umbraco + "/Data";
+
+ ///
+ /// The Umbraco temp data folder in the content root
+ ///
public const string TempData = Data + "/TEMP";
public const string TempFileUploads = TempData + "/FileUploads";
@@ -30,8 +48,10 @@ namespace Umbraco.Core
public const string Preview = Data + "/preview";
- // TODO: This doesn't seem right?
- public const string LogFiles= "~/Logs";
+ ///
+ /// The default folder where Umbraco log files are stored
+ ///
+ public const string LogFiles = Umbraco + "/Logs";
}
}
}
diff --git a/src/Umbraco.Core/Logging/ILoggingConfiguration.cs b/src/Umbraco.Core/Logging/ILoggingConfiguration.cs
index d21a08e688..6590f9fc65 100644
--- a/src/Umbraco.Core/Logging/ILoggingConfiguration.cs
+++ b/src/Umbraco.Core/Logging/ILoggingConfiguration.cs
@@ -1,10 +1,10 @@
-namespace Umbraco.Core.Logging
+namespace Umbraco.Core.Logging
{
public interface ILoggingConfiguration
{
///
- /// The physical path where logs are stored
+ /// Gets the physical path where logs are stored
///
string LogDirectory { get; }
}
diff --git a/src/Umbraco.Infrastructure/Logging/Serilog/LoggerConfigExtensions.cs b/src/Umbraco.Infrastructure/Logging/Serilog/LoggerConfigExtensions.cs
index 84270b95bf..5481f22cb6 100644
--- a/src/Umbraco.Infrastructure/Logging/Serilog/LoggerConfigExtensions.cs
+++ b/src/Umbraco.Infrastructure/Logging/Serilog/LoggerConfigExtensions.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.IO;
using System.Text;
using Serilog;
@@ -127,7 +127,7 @@ namespace Umbraco.Core.Logging.Serilog
/// Outputs a CLEF format JSON log at /App_Data/Logs/
///
/// A Serilog LoggerConfiguration
- ///
+ /// The logging configuration
/// The log level you wish the JSON file to collect - default is Verbose (highest)
/// The number of days to keep log files. Default is set to null which means all logs are kept
public static LoggerConfiguration OutputDefaultJsonFile(
@@ -135,13 +135,13 @@ namespace Umbraco.Core.Logging.Serilog
IHostingEnvironment hostingEnvironment,
ILoggingConfiguration loggingConfiguration, LogEventLevel minimumLevel = LogEventLevel.Verbose, int? retainedFileCount = null)
{
- //.clef format (Compact log event format, that can be imported into local SEQ & will make searching/filtering logs easier)
- //Ends with ..txt as Date is inserted before file extension substring
+ // .clef format (Compact log event format, that can be imported into local SEQ & will make searching/filtering logs easier)
+ // Ends with ..txt as Date is inserted before file extension substring
logConfig.WriteTo.File(new CompactJsonFormatter(),
Path.Combine(hostingEnvironment.MapPathContentRoot(Constants.SystemDirectories.LogFiles) ,$"UmbracoTraceLog.{Environment.MachineName}..json"),
shared: true,
- rollingInterval: RollingInterval.Day, //Create a new JSON file every day
- retainedFileCountLimit: retainedFileCount, //Setting to null means we keep all files - default is 31 days
+ rollingInterval: RollingInterval.Day, // Create a new JSON file every day
+ retainedFileCountLimit: retainedFileCount, // Setting to null means we keep all files - default is 31 days
restrictedToMinimumLevel: minimumLevel);
return logConfig;
diff --git a/src/Umbraco.Web.Common/Builder/UmbracoBuilderExtensions.cs b/src/Umbraco.Web.Common/Builder/UmbracoBuilderExtensions.cs
index f346e0dd79..e72089b8fe 100644
--- a/src/Umbraco.Web.Common/Builder/UmbracoBuilderExtensions.cs
+++ b/src/Umbraco.Web.Common/Builder/UmbracoBuilderExtensions.cs
@@ -53,13 +53,20 @@ namespace Umbraco.Core.DependencyInjection
IConfiguration config)
{
if (services is null)
+ {
throw new ArgumentNullException(nameof(services));
+ }
+
if (config is null)
+ {
throw new ArgumentNullException(nameof(config));
+ }
- var loggingConfig = new LoggingConfiguration(Path.Combine(webHostEnvironment.ContentRootPath, "umbraco", "logs"));
+ IHostingEnvironment tempHostingEnvironment = GetTemporaryHostingEnvironment(webHostEnvironment, config);
+
+ var loggingDir = tempHostingEnvironment.MapPathContentRoot(Constants.SystemDirectories.LogFiles);
+ var loggingConfig = new LoggingConfiguration(loggingDir);
- var tempHostingEnvironment = GetTemporaryHostingEnvironment(webHostEnvironment, config);
services.AddLogger(tempHostingEnvironment, loggingConfig, config);
IHttpContextAccessor httpContextAccessor = new HttpContextAccessor();
@@ -69,11 +76,11 @@ namespace Umbraco.Core.DependencyInjection
var appCaches = AppCaches.Create(requestCache);
services.AddUnique(appCaches);
- var profiler = GetWebProfiler(config);
+ IProfiler profiler = GetWebProfiler(config);
services.AddUnique(profiler);
- var loggerFactory = LoggerFactory.Create(cfg => cfg.AddSerilog(Log.Logger, false));
- var typeLoader = services.AddTypeLoader(Assembly.GetEntryAssembly(), webHostEnvironment, tempHostingEnvironment, loggerFactory, appCaches, config, profiler);
+ ILoggerFactory loggerFactory = LoggerFactory.Create(cfg => cfg.AddSerilog(Log.Logger, false));
+ TypeLoader typeLoader = services.AddTypeLoader(Assembly.GetEntryAssembly(), webHostEnvironment, tempHostingEnvironment, loggerFactory, appCaches, config, profiler);
return new UmbracoBuilder(services, config, typeLoader, loggerFactory);
}