private void Initialize(bool force = false)
{
if (this.initializeCalled && !force)
{
return;
}
this.initializeCalled = true;
// ReSharper disable once AssignNullToNotNullAttribute
this.LoggingDirectory = Path.Combine(new FileInfo(ReflectionExtensions.GetEntryAssembly().Location).DirectoryName, "Logging");
Directory.CreateDirectory(this.LoggingDirectory);
var configFile = new FileInfo(Path.Combine(this.LoggingDirectory, "Log4NetConfig_" + ReflectionExtensions.GetEntryAssembly().GetName().Name + ".xml"));
if (!configFile.Exists)
{
var backUpConfigFile = new FileInfo(Path.Combine(this.LoggingDirectory, "Log4NetDefaultConfig.xml"));
if (!backUpConfigFile.Exists)
{
Logger.Warn("Process -> " + Process.GetCurrentProcess().ProcessName + " -> File for log4net configuration (Log4NetDefaultConfig.xml) was not found. File will be created with backup configuration from SourceCode.");
backUpConfigFile.Create().Close();
File.WriteAllLines(backUpConfigFile.FullName, new[] { SourceCodeBackUpXml.Replace("'", "\"") });
}
backUpConfigFile.CopyTo(Path.Combine(this.LoggingDirectory, "Log4NetConfig_" + ReflectionExtensions.GetEntryAssembly().GetName().Name + ".xml"), true);
}
GlobalContext.Properties["PATHNAME"] = "Logging";
GlobalContext.Properties["FILENAME_TRACE"] = $"{ReflectionExtensions.GetEntryAssembly().GetName().Name}_TRACE.log";
GlobalContext.Properties["FILENAME_DEBUG"] = $"{ReflectionExtensions.GetEntryAssembly().GetName().Name}_DEBUG.log";
GlobalContext.Properties["FILENAME_NOTICE"] = $"{ReflectionExtensions.GetEntryAssembly().GetName().Name}.log";
XmlConfigurator.ConfigureAndWatch(configFile);
// Log Process Start now !
Bootstrapper.GetInstance<IProcessStateLogging>().LogProcessStart();
}