Logger improvements

This commit is contained in:
Loretta 2025-10-23 06:35:32 +02:00
parent ecdd922be2
commit 6f4f87ddd9
2 changed files with 29 additions and 11 deletions

View File

@ -19,15 +19,23 @@ public abstract class AcLogWriterBase : IAcLogWriterBase
{
CategoryName = categoryName ?? "...";
AppType = AcEnv.AppConfiguration.GetEnum<AppType>("AyCode:Logger:AppType");
try
{
AppType = AcEnv.AppConfiguration.GetEnum<AppType>("AyCode:Logger:AppType");
//AppType = (AppType)Enum.Parse(typeof(AppType), AcEnv.AppConfiguration["AyCode:Logger:AppType"], true);
//AppType = (AppType)Enum.Parse(typeof(AppType), AcEnv.AppConfiguration["AyCode:Logger:AppType"], true);
var writerSettings = AcEnv.AppConfiguration.GetSection("AyCode:Logger:LogWriters")
.GetChildren()
.FirstOrDefault(logWriter=> (logWriter["LogWriterType"].ToLower()).Equals(this.GetType().AssemblyQualifiedName, StringComparison.CurrentCultureIgnoreCase));
var writerSettings = AcEnv.AppConfiguration.GetSection("AyCode:Logger:LogWriters")
.GetChildren()
.FirstOrDefault(logWriter => logWriter["LogWriterType"]?.ToLower().Equals(GetType().AssemblyQualifiedName, StringComparison.CurrentCultureIgnoreCase) ?? false);
LogLevel = writerSettings.GetEnum<LogLevel>("LogLevel");
if (writerSettings != null) LogLevel = writerSettings.GetEnum<LogLevel>("LogLevel");
else Console.Error.WriteLine($"Not found appSettings.json LogWriterType! {GetType().Name}");
}
catch (Exception ex)
{
Console.Error.WriteLine($"{GetType().Name}; {ex}");
}
}
protected AcLogWriterBase(AppType appType, LogLevel logLevel, string? categoryName = null)

View File

@ -3,6 +3,7 @@ using System.Runtime.CompilerServices;
using System.Security.AccessControl;
using AyCode.Core.Consts;
using AyCode.Core.Enums;
using AyCode.Utils.Extensions;
using static System.Net.Mime.MediaTypeNames;
namespace AyCode.Core.Loggers;
@ -27,18 +28,27 @@ public abstract class AcLoggerBase : IAcLoggerBase
AppType = AcEnv.AppConfiguration.GetEnum<AppType>("AyCode:Logger:AppType");
LogLevel = AcEnv.AppConfiguration.GetEnum<LogLevel>("AyCode:Logger:LogLevel");
foreach (var logWriter in AcEnv.AppConfiguration.GetSection("AyCode:Logger:LogWriters").GetChildren())
foreach (var logWriterSection in AcEnv.AppConfiguration.GetSection("AyCode:Logger:LogWriters").GetChildren())
{
try
{
var logWriterType = Type.GetType(logWriter["LogWriterType"]);
var logWriterLogLevel = logWriter.GetEnum<LogLevel>("LogLevel");
Type? logWriterType;
var logWriterTypeString = logWriterSection["LogWriterType"];
if (logWriterTypeString.IsNullOrWhiteSpace()|| (logWriterType = Type.GetType(logWriterTypeString)) == null)
{
Console.Error.WriteLine($"{GetType().Name}; logWriterTypeString not valid; logWriterTypeString: {logWriterTypeString};");
continue;
}
var logWriterLogLevel = logWriterSection.GetEnum<LogLevel>("LogLevel");
LogWriters.Add(Activator.CreateInstance(logWriterType, AppType, logWriterLogLevel, CategoryName) as IAcLogWriterBase);
if (Activator.CreateInstance(logWriterType, AppType, logWriterLogLevel, CategoryName) is IAcLogWriterBase logWriter) LogWriters.Add(logWriter);
else Console.Error.WriteLine($"{GetType().Name}; Can't create logWriterType instance; logWriterType: {logWriterType?.AssemblyQualifiedName};");
}
catch (Exception ex)
{
Console.Error.WriteLine(ex);
Console.Error.WriteLine($"{GetType().Name}; {ex}");
}
}
}