Add Logger
This commit is contained in:
parent
c1b0fcd0d7
commit
602975ab29
|
|
@ -6,4 +6,8 @@
|
|||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\AyCode.Core\AyCode.Core.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,67 @@
|
|||
using System.Runtime.CompilerServices;
|
||||
using AyCode.Core.Enums;
|
||||
using AyCode.Core.Loggers;
|
||||
|
||||
namespace AyCode.Core.Server.Loggers
|
||||
{
|
||||
public sealed class AcGlobalLoggerBase : AcLoggerBase
|
||||
{ }
|
||||
|
||||
public sealed class GlobalLogger //: IAcLogWriterBase
|
||||
{
|
||||
private readonly AcGlobalLoggerBase _logger = new();
|
||||
private static readonly GlobalLogger Instance = new();
|
||||
|
||||
public static LogLevel LogLevel => Instance._logger.LogLevel;
|
||||
public static AppType AppType => Instance._logger.AppType;
|
||||
|
||||
private const string DefaultCategoryName = "GLOBAL_LOGGER";
|
||||
|
||||
static GlobalLogger()
|
||||
{ }
|
||||
|
||||
private GlobalLogger()
|
||||
{ }
|
||||
|
||||
|
||||
public static List<IAcLogWriterBase> GetWriters => Instance._logger.GetWriters;
|
||||
public static TLogWriter Writer<TLogWriter>() where TLogWriter : IAcLogWriterBase => Instance._logger.Writer<TLogWriter>();
|
||||
|
||||
|
||||
public static void Detail(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
|
||||
=> Instance._logger.Detail(text, categoryName ?? DefaultCategoryName, memberName);
|
||||
|
||||
//public static void Detail<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class
|
||||
// => Detail(text, typeof(TCallerClassType).Name, memberName);
|
||||
|
||||
public static void Debug(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
|
||||
=> Instance._logger.Debug(text, categoryName ?? DefaultCategoryName, memberName);
|
||||
|
||||
//public static void Debug<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class
|
||||
// => Debug(text, typeof(TCallerClassType).Name, memberName);
|
||||
|
||||
public static void Info(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
|
||||
=> Instance._logger.Info(text, categoryName ?? DefaultCategoryName, memberName);
|
||||
|
||||
//public static void Info<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class
|
||||
// => Info(text, typeof(TCallerClassType).Name, memberName);
|
||||
|
||||
public static void Warning(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
|
||||
=> Instance._logger.Warning(text, categoryName ?? DefaultCategoryName, memberName);
|
||||
|
||||
//public static void Warning<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class
|
||||
// => Warning(text, typeof(TCallerClassType).Name, memberName);
|
||||
|
||||
public static void Suggest(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
|
||||
=> Instance._logger.Suggest(text, categoryName ?? DefaultCategoryName, memberName);
|
||||
|
||||
//public static void Suggest<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class
|
||||
// => Suggest(text, typeof(TCallerClassType).Name, memberName);
|
||||
|
||||
//public static void Error<TCallerClassType>(string? text, Exception? ex = null, [CallerMemberName] string? memberName = null) where TCallerClassType : class
|
||||
// => Error(text, ex, typeof(TCallerClassType).Name, memberName);
|
||||
|
||||
public static void Error(string? text, Exception? ex = null, string? categoryName = null, [CallerMemberName] string? memberName = null)
|
||||
=> Instance._logger.Error(text, ex, categoryName ?? DefaultCategoryName, memberName);
|
||||
}
|
||||
}
|
||||
|
|
@ -79,10 +79,10 @@ namespace AyCode.Core.Consts
|
|||
public static string[] AvailableDomainSuffixes = new string[] { "3d", "anata", "app", "art", "club", "game", "blog", "shop", "biz", "chat", "conf", "city", "com", "net", "cool", "dance", "date", "fun", "design", "digital", "estate", "metaverse", "mv", "events", "fans", "fashion", "makeup", "fin", "fm", "sport", "gallery", "io", "info", "job", "mev", "land", "world", "life", "live", "lol", "love", "market", "media", "museum", "news", "ngo", "ninja", "kiwi", "one", "org", "party", "pink", "press", "slide", "property", "pub", "race", "sale", "school", "science", "social", "study", "style", "support", "tattoo", "team", "tech", "theatre", "town", "trade", "travel", "tv", "university", "education", "video", "vip", "vision", "wiki", "work", "xxx", "yeti", "ac", "ad", "ae", "af", "ag", "ai", "al", "am", "ao", "aq", "ar", "as", "at", "au", "aw", "ax", "az", "ba", "bb", "bd", "be", "bf", "bg", "bh", "bi", "bj", "bm", "bn", "bo", "bq", "br", "bs", "bt", "bw", "by", "bz", "ca", "cc", "cd", "cf", "cg", "ch", "ci", "ck", "cl", "cm", "cn", "co", "cr", "cu", "cv", "cw", "cx", "cy", "cz", "de", "dj", "dk", "dm", "do", "dz", "ec", "ee", "eg", "eh", "er", "es", "et", "eu", "fi", "fj", "fk", "fm", "fo", "fr", "ga", "gd", "ge", "gf", "gg", "gh", "gi", "gl", "gm", "gn", "gp", "gq", "gr", "gs", "gt", "gu", "gw", "gy", "hk", "hm", "hn", "hr", "ht", "hu", "id", "ie", "il", "im", "in", "io", "iq", "ir", "is", "it", "je", "jm", "jo", "jp", "ke", "kg", "kh", "ki", "km", "kn", "kp", "kr", "kw", "ky", "kz", "la", "lb", "lc", "li", "lk", "lr", "ls", "lt", "lu", "lv", "ly", "ma", "mc", "md", "me", "mg", "mh", "mk", "ml", "mm", "mn", "mo", "mp", "mq", "mr", "ms", "mt", "mu", "mv", "mw", "mx", "my", "mz", "na", "nc", "ne", "nf", "ng", "ni", "nl", "no", "np", "nr", "nu", "nz", "om", "pa", "pe", "pf", "pg", "ph", "pk", "pl", "pm", "pn", "pr", "ps", "pt", "pw", "py", "qa", "re", "ro", "rs", "ru", "rw", "sa", "sb", "sc", "sd", "se", "sg", "sh", "si", "sk", "sl", "sm", "sn", "so", "sr", "ss", "st", "su", "sv", "sx", "sy", "sz", "tc", "td", "tf", "tg", "th", "tj", "tk", "tl", "tm", "tn", "to", "tr", "tt", "tv", "tw", "tz", "ua", "ug", "uk", "us", "uy", "uz", "va", "vc", "ve", "vg", "vi", "vn", "vu", "wf", "ws", "ye", "yt", "za", "zm", "zw" };
|
||||
|
||||
//TODO: kitörölni és DB-ből kiszedni! - J.
|
||||
private static string _tiamProjectIdString = "684f34d1-163a-4077-918f-a9d9df5ce789";
|
||||
//private static string _tiamProjectIdString = "684f34d1-163a-4077-918f-a9d9df5ce789";
|
||||
static AcConst()
|
||||
{
|
||||
ProjectId = Guid.Parse(_tiamProjectIdString.ToLower());
|
||||
ProjectId = Guid.Parse(AcEnv.AppConfiguration["AyCode:ProjectId"].ToLower());
|
||||
ProjectSalt = GenerateProjectSalt(ProjectId.ToString("N").ToLower());
|
||||
|
||||
//var anataFolder = AcDomain.IsProductVersion ? "Anata" : "AnataDev";
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
//using Anata.Logger;
|
||||
|
||||
using AyCode.Core.Enums;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
|
||||
namespace AyCode.Core.Consts
|
||||
|
|
@ -24,7 +25,13 @@ namespace AyCode.Core.Consts
|
|||
private static IConfiguration? _appConfiguration = null;
|
||||
public static IConfiguration AppConfiguration => _appConfiguration ??= GetAppSettingsConfiguration();
|
||||
|
||||
public static IConfiguration GetAppSettingsConfiguration(string appSettingsFileName = "appsettings.json")
|
||||
public static TEnum GetEnum<TEnum>(this IConfiguration configuration, string configPath) where TEnum : struct
|
||||
=> (TEnum)Enum.Parse(typeof(TEnum), configuration[configPath]);
|
||||
|
||||
public static TEnum GetEnum<TEnum>(this IConfigurationSection section, string configPath) where TEnum : struct
|
||||
=> (TEnum)Enum.Parse(typeof(TEnum), section[configPath]);
|
||||
|
||||
private static IConfiguration GetAppSettingsConfiguration(string appSettingsFileName = "appsettings.json")
|
||||
{
|
||||
var config = new ConfigurationBuilder()
|
||||
.AddJsonFile(appSettingsFileName)
|
||||
|
|
|
|||
|
|
@ -1,85 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using AyCode.Core.Consts;
|
||||
using AyCode.Core.Enums;
|
||||
|
||||
namespace AyCode.Core.Logger
|
||||
{
|
||||
public static class Logger
|
||||
{
|
||||
public static LogLevel LogLevel { get; set; } = LogLevel.Detail;
|
||||
public static AppType AppType { get; set; } = AppType.Server;
|
||||
|
||||
public static void Detail(string text, [CallerMemberName] string? memberName = null)
|
||||
=> WriteToConsole(LogLevel.Detail, GetDiagnosticText(LogLevel.Detail, text, memberName, null));
|
||||
|
||||
public static void Debug(string text, [CallerMemberName] string? memberName = null)
|
||||
=> WriteToConsole(LogLevel.Debug, GetDiagnosticText(LogLevel.Debug, text, memberName, null));
|
||||
|
||||
public static void Info(string text, [CallerMemberName] string? memberName = null)
|
||||
=> WriteToConsole(LogLevel.Info, GetDiagnosticText(LogLevel.Info, text, memberName, null));
|
||||
|
||||
public static void Warning(string text, [CallerMemberName] string? memberName = null)
|
||||
=> WriteToConsole(LogLevel.Warning, GetDiagnosticText(LogLevel.Warning, text, memberName, null));
|
||||
|
||||
public static void Suggest(string text, [CallerMemberName] string? memberName = null)
|
||||
=> WriteToConsole(LogLevel.Suggest, GetDiagnosticText(LogLevel.Suggest, text, memberName, null));
|
||||
|
||||
public static void Error(string text, [CallerMemberName] string? memberName = null)
|
||||
=> WriteToConsole(LogLevel.Error, GetDiagnosticText(LogLevel.Error, text, memberName, null));
|
||||
|
||||
public static void Error(string text, Exception ex, [CallerMemberName] string? memberName = null)
|
||||
=> WriteToConsole(LogLevel.Error, GetDiagnosticText(LogLevel.Error, text, memberName, ex));
|
||||
|
||||
private static void WriteToConsole(LogLevel logLevel, string text)
|
||||
{
|
||||
if (logLevel < LogLevel) return;
|
||||
|
||||
//lock (ForWriterLock)
|
||||
{
|
||||
//if (logLevel > LogLevel.Trace && logLevel < LogLevel.Suggest)
|
||||
{
|
||||
Console.WriteLine(text);
|
||||
return;
|
||||
}
|
||||
|
||||
if (logLevel <= LogLevel.Trace)
|
||||
{
|
||||
Console.ForegroundColor = ConsoleColor.Gray;
|
||||
Console.WriteLine(text);
|
||||
}
|
||||
else if (logLevel == LogLevel.Suggest)
|
||||
{
|
||||
Console.ForegroundColor = ConsoleColor.Cyan;
|
||||
Console.WriteLine(text);
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.ForegroundColor = logLevel == LogLevel.Warning ? ConsoleColor.Yellow : ConsoleColor.Red;
|
||||
Console.WriteLine($"{AcEnv.NL}{text}{AcEnv.NL}");
|
||||
}
|
||||
|
||||
Console.ForegroundColor = ConsoleColor.White;
|
||||
}
|
||||
}
|
||||
|
||||
private static string GetDiagnosticText(LogLevel logLevel, string logText, string? callerName, Exception? ex)
|
||||
{
|
||||
var threadId = Environment.CurrentManagedThreadId;
|
||||
|
||||
return $"[{DateTime.Now:HH:mm:ss.fff}] [{AppType.ToString()[0]}] {"[" + logLevel + "]",-9} {"[...->" + callerName + "]",-54} {"[" + threadId + "]",5} {logText}{ErrorText(ex)}";
|
||||
}
|
||||
|
||||
private static string ErrorText(Exception? ex)
|
||||
{
|
||||
if (ex == null) return string.Empty;
|
||||
|
||||
var errorType = ex.GetType().Name;
|
||||
return string.IsNullOrWhiteSpace(errorType) ? string.Empty : $"{Environment.NewLine}[{errorType.ToUpper()}]: {ex}";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
using AyCode.Core.Consts;
|
||||
using AyCode.Core.Enums;
|
||||
using AyCode.Utils.Extensions;
|
||||
|
||||
namespace AyCode.Core.Loggers;
|
||||
|
||||
public class AcConsoleLogWriter : AcTextLogWriterBase
|
||||
{
|
||||
protected AcConsoleLogWriter() : this(null)
|
||||
{ }
|
||||
|
||||
protected AcConsoleLogWriter(string? categoryName = null) : base(categoryName)
|
||||
{ }
|
||||
|
||||
public AcConsoleLogWriter(AppType appType, LogLevel logLevel, string? categoryName = null) : base(appType, logLevel, categoryName)
|
||||
{ }
|
||||
|
||||
protected override void WriteText(string? logText)
|
||||
{
|
||||
if (logText.IsNullOrWhiteSpace()) return;
|
||||
|
||||
//lock (ForWriterLock)
|
||||
{
|
||||
//if (logLevel > LogLevel.Trace && logLevel < LogLevel.Suggest)
|
||||
{
|
||||
Console.WriteLine(logText);
|
||||
return;
|
||||
}
|
||||
|
||||
if (LogLevel <= LogLevel.Trace)
|
||||
{
|
||||
Console.ForegroundColor = ConsoleColor.Gray;
|
||||
Console.WriteLine(logText);
|
||||
}
|
||||
else if (LogLevel == LogLevel.Suggest)
|
||||
{
|
||||
Console.ForegroundColor = ConsoleColor.Cyan;
|
||||
Console.WriteLine(logText);
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.ForegroundColor = LogLevel == LogLevel.Warning ? ConsoleColor.Yellow : ConsoleColor.Red;
|
||||
Console.WriteLine($"{AcEnv.NL}{logText}{AcEnv.NL}");
|
||||
}
|
||||
|
||||
Console.ForegroundColor = ConsoleColor.White;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
using System.Runtime.CompilerServices;
|
||||
using AyCode.Core.Consts;
|
||||
using AyCode.Core.Enums;
|
||||
|
||||
namespace AyCode.Core.Loggers;
|
||||
|
||||
public abstract class AcLogWriterBase : IAcLogWriterBase
|
||||
{
|
||||
public string? CategoryName { get; }
|
||||
|
||||
protected AppType AppType { get; set; } = AppType.Server;
|
||||
protected LogLevel LogLevel { get; set; } = LogLevel.Error;
|
||||
|
||||
protected AcLogWriterBase() : this(null)
|
||||
{}
|
||||
|
||||
protected AcLogWriterBase(string? categoryName = null)
|
||||
{
|
||||
CategoryName = categoryName;
|
||||
|
||||
AppType = AcEnv.AppConfiguration.GetEnum<AppType>("AyCode:Logger:AppType");
|
||||
|
||||
//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));
|
||||
|
||||
LogLevel = writerSettings.GetEnum<LogLevel>("LogLevel");
|
||||
}
|
||||
|
||||
protected AcLogWriterBase(AppType appType, LogLevel logLevel, string? categoryName = null)
|
||||
{
|
||||
AppType = appType;
|
||||
LogLevel = logLevel;
|
||||
|
||||
CategoryName = categoryName;
|
||||
}
|
||||
|
||||
public void Detail(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
|
||||
=> PrepareToWrite(LogLevel.Detail, text, memberName, categoryName ?? CategoryName);
|
||||
|
||||
//public void Detail<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class
|
||||
// => Detail(text, typeof(TCallerClassType).Name, memberName);
|
||||
|
||||
public void Debug(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
|
||||
=> PrepareToWrite(LogLevel.Debug, text, memberName, categoryName ?? CategoryName);
|
||||
|
||||
//public void Debug<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class
|
||||
// => Debug(text, typeof(TCallerClassType).Name, memberName);
|
||||
|
||||
public void Info(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
|
||||
=> PrepareToWrite(LogLevel.Info, text, memberName, categoryName ?? CategoryName);
|
||||
|
||||
//public void Info<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class
|
||||
// => Info(text, typeof(TCallerClassType).Name, memberName);
|
||||
|
||||
public void Warning(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
|
||||
=> PrepareToWrite(LogLevel.Warning, text, memberName, categoryName ?? CategoryName);
|
||||
|
||||
//public void Warning<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class
|
||||
// => Warning(text, typeof(TCallerClassType).Name, memberName);
|
||||
|
||||
public void Suggest(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
|
||||
=> PrepareToWrite(LogLevel.Suggest, text, memberName, categoryName ?? CategoryName);
|
||||
|
||||
//public void Suggest<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class
|
||||
// => Suggest(text, typeof(TCallerClassType).Name, memberName);
|
||||
|
||||
//public void Error<TCallerClassType>(string? text, Exception? ex = null, [CallerMemberName] string? memberName = null) where TCallerClassType : class
|
||||
// => Error(text, ex, typeof(TCallerClassType).Name, memberName);
|
||||
|
||||
public void Error(string? text, Exception? ex = null, string? categoryName = null, [CallerMemberName] string? memberName = null)
|
||||
=> PrepareToWrite(LogLevel.Error, text, memberName, categoryName ?? CategoryName, ex);
|
||||
|
||||
|
||||
protected virtual void PrepareToWrite(LogLevel logLevel, string? logText, string? callerMemberName, string? categoryName = null, Exception? ex = null)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
using System.Runtime.CompilerServices;
|
||||
using AyCode.Core.Consts;
|
||||
using AyCode.Core.Enums;
|
||||
|
||||
namespace AyCode.Core.Loggers;
|
||||
|
||||
public abstract class AcLoggerBase : IAcLoggerBase
|
||||
{
|
||||
protected readonly List<IAcLogWriterBase> LogWriters = [];
|
||||
|
||||
public LogLevel LogLevel { get; set; } = LogLevel.Error;
|
||||
public AppType AppType { get; set; } = AppType.Server;
|
||||
|
||||
public string? CategoryName { get; set; }
|
||||
|
||||
protected AcLoggerBase() : this(null)
|
||||
{ }
|
||||
|
||||
protected AcLoggerBase(string? categoryName)
|
||||
{
|
||||
CategoryName = categoryName;
|
||||
|
||||
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())
|
||||
{
|
||||
var logWriterType = Type.GetType(logWriter["LogWriterType"]);
|
||||
var logWriterLogLevel = logWriter.GetEnum<LogLevel>("LogLevel");
|
||||
|
||||
LogWriters.Add(Activator.CreateInstance(logWriterType, AppType, logWriterLogLevel, CategoryName) as IAcLogWriterBase);
|
||||
}
|
||||
}
|
||||
|
||||
protected AcLoggerBase(string? categoryName, params IAcLogWriterBase[] logWriters) :
|
||||
this(AcEnv.AppConfiguration.GetEnum<AppType>("AyCode:Logger:AppType"), AcEnv.AppConfiguration.GetEnum<LogLevel>("AyCode:Logger:LogLevel"), categoryName, logWriters)
|
||||
{ }
|
||||
|
||||
protected AcLoggerBase(AppType appType, LogLevel logLevel, string? categoryName, params IAcLogWriterBase[] logWriters)
|
||||
{
|
||||
AppType = appType;
|
||||
LogLevel = logLevel;
|
||||
|
||||
CategoryName = categoryName;
|
||||
|
||||
foreach (var acLogWriterBase in logWriters)
|
||||
LogWriters.Add(acLogWriterBase);
|
||||
}
|
||||
|
||||
public List<IAcLogWriterBase> GetWriters => [.. LogWriters];
|
||||
public TLogWriter Writer<TLogWriter>() where TLogWriter : IAcLogWriterBase => LogWriters.OfType<TLogWriter>().First();
|
||||
|
||||
public virtual void Detail(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
|
||||
{
|
||||
if (LogLevel <= LogLevel.Detail) LogWriters.ForEach(x => x.Detail(text, categoryName ?? CategoryName, memberName));
|
||||
}
|
||||
|
||||
//public virtual void Detail<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class
|
||||
// => Detail(text, typeof(TCallerClassType).Name, memberName);
|
||||
|
||||
public virtual void Debug(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
|
||||
{
|
||||
if (LogLevel <= LogLevel.Debug) LogWriters.ForEach(x => x.Debug(text, categoryName ?? CategoryName, memberName));
|
||||
}
|
||||
|
||||
//public virtual void Debug<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class
|
||||
// => Debug(text, typeof(TCallerClassType).Name, memberName);
|
||||
|
||||
public virtual void Info(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
|
||||
{
|
||||
if (LogLevel <= LogLevel.Info) LogWriters.ForEach(x => x.Info(text, categoryName ?? CategoryName, memberName));
|
||||
}
|
||||
|
||||
//public virtual void Info<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class
|
||||
// => Info(text, typeof(TCallerClassType).Name, memberName);
|
||||
|
||||
public virtual void Warning(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
|
||||
{
|
||||
if (LogLevel <= LogLevel.Warning) LogWriters.ForEach(x => x.Warning(text, categoryName ?? CategoryName, memberName));
|
||||
}
|
||||
|
||||
//public virtual void Warning<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class
|
||||
// => Warning(text, typeof(TCallerClassType).Name, memberName);
|
||||
|
||||
public virtual void Suggest(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
|
||||
{
|
||||
if (LogLevel <= LogLevel.Suggest) LogWriters.ForEach(x => x.Suggest(text, categoryName ?? CategoryName, memberName));
|
||||
}
|
||||
|
||||
//public virtual void Suggest<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class
|
||||
// => Suggest(text, typeof(TCallerClassType).Name, memberName);
|
||||
|
||||
|
||||
public virtual void Error(string? text, Exception? ex = null, string? categoryName = null, [CallerMemberName] string? memberName = null)
|
||||
{
|
||||
if (LogLevel <= LogLevel.Error) LogWriters.ForEach(x => x.Error(text, ex, categoryName ?? CategoryName, memberName));
|
||||
}
|
||||
|
||||
//public virtual void Error<TCallerClassType>(string? text, Exception? ex = null, [CallerMemberName] string? memberName = null) where TCallerClassType : class
|
||||
// => Error(text, ex, typeof(TCallerClassType).Name, memberName);
|
||||
}
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
using AyCode.Core.Enums;
|
||||
using AyCode.Utils.Extensions;
|
||||
|
||||
namespace AyCode.Core.Loggers;
|
||||
|
||||
public abstract class AcTextLogWriterBase : AcLogWriterBase
|
||||
{
|
||||
protected AcTextLogWriterBase() : this(null)
|
||||
{ }
|
||||
|
||||
protected AcTextLogWriterBase(string? categoryName = null) : base(categoryName)
|
||||
{ }
|
||||
|
||||
protected AcTextLogWriterBase(AppType appType, LogLevel logLevel, string? categoryName = null) : base(appType, logLevel, categoryName)
|
||||
{ }
|
||||
|
||||
protected override void PrepareToWrite(LogLevel logLevel, string? logText, string? callerMemberName, string? categoryName = null, Exception? ex = null)
|
||||
{
|
||||
if (logLevel < LogLevel) return;
|
||||
|
||||
WriteText(GetDiagnosticText(logLevel, logText, callerMemberName, categoryName));
|
||||
|
||||
}
|
||||
|
||||
protected virtual void WriteText(string? logText)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
|
||||
protected virtual string GetDiagnosticText(LogLevel logLevel, string? logText, string? callerMemberName, string? categoryName = null, Exception? ex = null)
|
||||
{
|
||||
if (LogLevel > logLevel) return string.Empty;
|
||||
|
||||
var threadId = Environment.CurrentManagedThreadId;
|
||||
|
||||
if(categoryName.IsNullOrWhiteSpace()) categoryName = "...";
|
||||
|
||||
return $"[{DateTime.Now:HH:mm:ss.fff}] [{AppType.ToString()[0]}] {"[" + logLevel + "]",-9} {"[" + categoryName + "->" + callerMemberName + "]",-54} {"[" + threadId + "]",5} {logText}{ErrorText(ex)}";
|
||||
}
|
||||
|
||||
protected virtual string ErrorText(Exception? ex)
|
||||
{
|
||||
if (ex == null) return string.Empty;
|
||||
|
||||
var errorType = ex.GetType().Name;
|
||||
return string.IsNullOrWhiteSpace(errorType) ? string.Empty : $"{Environment.NewLine}[{errorType.ToUpper()}]: {ex}";
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace AyCode.Core.Loggers;
|
||||
|
||||
public interface IAcLogWriterBase
|
||||
{
|
||||
public string? CategoryName { get; }
|
||||
|
||||
public void Detail(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null);
|
||||
//public void Detail<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class;
|
||||
|
||||
public void Debug(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null);
|
||||
//public void Debug<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class;
|
||||
|
||||
public void Info(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null);
|
||||
//public void Info<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class;
|
||||
|
||||
public void Warning(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null);
|
||||
//public void Warning<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class;
|
||||
|
||||
public void Suggest(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null);
|
||||
//public void Suggest<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class;
|
||||
|
||||
public void Error(string? text, Exception? ex = null, string? categoryName = null, [CallerMemberName] string? memberName = null);
|
||||
//public void Error<TCallerClassType>(string? text, Exception? ex = null, [CallerMemberName] string? memberName = null) where TCallerClassType : class;
|
||||
}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
namespace AyCode.Core.Loggers;
|
||||
|
||||
public interface IAcLoggerBase : IAcLogWriterBase
|
||||
{
|
||||
public List<IAcLogWriterBase> GetWriters { get; }
|
||||
public TLogWriter Writer<TLogWriter>() where TLogWriter : IAcLogWriterBase;
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
namespace AyCode.Core.Logger
|
||||
namespace AyCode.Core.Loggers
|
||||
{
|
||||
/// <summary>
|
||||
/// Az adatbásisban van egy LogLevel tábla, ha változtatunk az enum-ok értékén, akkor ott is igazítsuk hozzá!
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
using AyCode.Core.Consts;
|
||||
using AyCode.Core.Enums;
|
||||
using AyCode.Core.Helpers;
|
||||
using AyCode.Core.Loggers;
|
||||
using AyCode.Database.DbContexts.Loggers;
|
||||
using AyCode.Entities;
|
||||
using AyCode.Entities.LogItems;
|
||||
using AyCode.Interfaces.Entities;
|
||||
|
||||
namespace AyCode.Database;
|
||||
|
||||
public class AcDbLogItemWriter<TLoggerDbContext, TLogItem> : AcLogItemWriterBase<TLogItem> where TLoggerDbContext : AcLoggerDbContextBase<TLogItem>
|
||||
where TLogItem : class, IAcLogItem
|
||||
{
|
||||
private TLoggerDbContext _ctx = Activator.CreateInstance<TLoggerDbContext>();
|
||||
|
||||
protected AcDbLogItemWriter() : this(null)
|
||||
{ }
|
||||
|
||||
protected AcDbLogItemWriter(string? categoryName = null) : base(categoryName)
|
||||
{ }
|
||||
|
||||
public AcDbLogItemWriter(AppType appType, LogLevel logLevel, string? categoryName = null) : base(appType, logLevel, categoryName)
|
||||
{ }
|
||||
|
||||
protected override void WriteLogItem(TLogItem logItem, Action? callback = null)
|
||||
{
|
||||
try
|
||||
{
|
||||
base.WriteLogItem(logItem, () =>
|
||||
{
|
||||
_ctx.LogItems.Add(logItem);
|
||||
_ctx.SaveChanges();
|
||||
});
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine("ERRORORROROR! " + AcEnv.NL + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
//protected override void WriteLogItem(TLogItem logItem, Action<IEnumerable<TLogItem>>? callback = null)
|
||||
//{
|
||||
// try
|
||||
// {
|
||||
// base.WriteLogItem(logItem, logItems =>
|
||||
// {
|
||||
// _ctx.LogItems.AddRange(logItems);
|
||||
// _ctx.SaveChanges();
|
||||
// });
|
||||
// }
|
||||
// catch (Exception ex)
|
||||
// {
|
||||
// Console.WriteLine("ERRORORRORO");
|
||||
// }
|
||||
//}
|
||||
}
|
||||
|
|
@ -26,6 +26,7 @@
|
|||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="DbSets\Loggers\" />
|
||||
<Folder Include="SqlScripts\" />
|
||||
</ItemGroup>
|
||||
|
||||
|
|
|
|||
|
|
@ -11,6 +11,8 @@ using Microsoft.EntityFrameworkCore;
|
|||
using AyCode.Database.Extensions;
|
||||
using AyCode.Core.Consts;
|
||||
using AyCode.Core.Helpers;
|
||||
using AyCode.Core.Loggers;
|
||||
using AyCode.Core.Server.Loggers;
|
||||
using AyCode.Database.DbSets.Users;
|
||||
using AyCode.Interfaces.Addresses;
|
||||
using AyCode.Interfaces.Messages;
|
||||
|
|
@ -141,6 +143,7 @@ namespace AyCode.Database.DataLayers.Users
|
|||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
GlobalLogger.Error(ex.Message, ex);
|
||||
errorCodeInner = AcErrorCode.UnknownError;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,11 @@
|
|||
using AyCode.Database.DbSets.Loggers;
|
||||
using AyCode.Entities.LogItems;
|
||||
using AyCode.Interfaces.Entities;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace AyCode.Database.DbContexts.Loggers;
|
||||
|
||||
public class AcLoggerDbContextBase<TLogItem> : AcDbContextBase, IAcLoggerDbContextBase<TLogItem> where TLogItem : class, IAcLogItem
|
||||
{
|
||||
public DbSet<TLogItem> LogItems { get; set; }
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
using AyCode.Database.DbSets.Loggers;
|
||||
using AyCode.Entities.LogItems;
|
||||
using AyCode.Interfaces.Entities;
|
||||
|
||||
namespace AyCode.Database.DbContexts.Loggers;
|
||||
|
||||
public interface IAcLoggerDbContextBase<TLogItem> : IAcLogItemDbSetBase<TLogItem> where TLogItem : class, IAcLogItem
|
||||
{
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
using AyCode.Entities.LogItems;
|
||||
using AyCode.Interfaces.Entities;
|
||||
using AyCode.Interfaces.Users;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace AyCode.Database.DbSets.Loggers;
|
||||
|
||||
public interface IAcLogItemDbSetBase<TLogItem> where TLogItem : class, IAcLogItem
|
||||
{
|
||||
DbSet<TLogItem> LogItems { get; set; }
|
||||
}
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
using AyCode.Core.Extensions;
|
||||
using AyCode.Core.Logger;
|
||||
using AyCode.Core.Loggers;
|
||||
using AyCode.Core.Server.Loggers;
|
||||
using AyCode.Database.Extensions;
|
||||
using AyCode.Entities;
|
||||
using AyCode.Entities.Users;
|
||||
|
|
@ -45,7 +46,7 @@ public static class AcUserDbSetExtensions
|
|||
|
||||
public static IQueryable<TUser>? GetQueryableUserByEmail<TUser>(this IAcUserDbSetBase<TUser> ctx, string? email, bool onlyConfirmed) where TUser : class, IAcUserBase
|
||||
{
|
||||
Logger.Info($"GetUserByEmail: {email}");
|
||||
GlobalLogger.Info($"GetUserByEmail: {email}");
|
||||
|
||||
if (string.IsNullOrWhiteSpace(email)) return null;
|
||||
|
||||
|
|
@ -57,7 +58,7 @@ public static class AcUserDbSetExtensions
|
|||
{
|
||||
var emailLower = user.EmailAddress.ToLower();
|
||||
|
||||
Logger.Info($"GetUserByEmail: {emailLower}");
|
||||
GlobalLogger.Info($"GetUserByEmail: {emailLower}");
|
||||
|
||||
return ctx.Users.Add(user).State == Microsoft.EntityFrameworkCore.EntityState.Added;
|
||||
}
|
||||
|
|
@ -86,7 +87,7 @@ public static class AcUserDbSetExtensions
|
|||
|
||||
public static TUser? UpdateJwtRefreshToken<TUser>(this IAcUserDbSetBase<TUser> ctx, string email, string refreshToken) where TUser : class, IAcUserBase
|
||||
{
|
||||
Console.WriteLine(@"UserDal Update refresh token");
|
||||
GlobalLogger.Info(@"UserDal Update refresh token");
|
||||
|
||||
if (string.IsNullOrWhiteSpace(refreshToken)) return null;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
using AyCode.Core.Consts;
|
||||
using AyCode.Core.Helpers;
|
||||
using AyCode.Core.Logger;
|
||||
using AyCode.Core.Loggers;
|
||||
using AyCode.Core.Server.Loggers;
|
||||
using AyCode.Database.DbContexts;
|
||||
using AyCode.Interfaces.Entities;
|
||||
|
||||
|
|
@ -22,7 +23,7 @@ public static class AcDbSessionExtension
|
|||
catch (Exception ex)
|
||||
{
|
||||
var errorText = $"Session({ctx}) callback error...{AcEnv.NL}";
|
||||
Logger.Error($"{errorText}", ex);
|
||||
GlobalLogger.Error($"{errorText}", ex);
|
||||
|
||||
throw new Exception($"{errorText}{ex}");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,8 +2,9 @@
|
|||
using Microsoft.EntityFrameworkCore.Storage;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using AyCode.Database.DbContexts;
|
||||
using AyCode.Core.Logger;
|
||||
using AyCode.Core.Consts;
|
||||
using AyCode.Core.Loggers;
|
||||
using AyCode.Core.Server.Loggers;
|
||||
|
||||
namespace AyCode.Database.Extensions;
|
||||
|
||||
|
|
@ -45,7 +46,7 @@ public static class AcDbTransactionExtension
|
|||
transaction.Rollback();
|
||||
|
||||
if (throwException) throw new Exception(errorText, ex);
|
||||
Logger.Error($"{errorText}", ex);
|
||||
GlobalLogger.Error($"{errorText}", ex);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
|
@ -65,7 +66,7 @@ public static class AcDbTransactionExtension
|
|||
else
|
||||
{
|
||||
transaction.Rollback();
|
||||
Logger.Warning($"Transaction({ctx}) transaction ROLLBACK!");
|
||||
GlobalLogger.Warning($"Transaction({ctx}) transaction ROLLBACK!");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
|
@ -73,7 +74,7 @@ public static class AcDbTransactionExtension
|
|||
if (throwException) throw;
|
||||
|
||||
result = false;
|
||||
Logger.Error($"Transaction({ctx}) transaction error...{AcEnv.NL}", ex);
|
||||
GlobalLogger.Error($"Transaction({ctx}) transaction error...{AcEnv.NL}", ex);
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
|
|
|||
|
|
@ -0,0 +1,89 @@
|
|||
using AyCode.Core.Enums;
|
||||
using AyCode.Core.Helpers;
|
||||
using AyCode.Core.Loggers;
|
||||
using AyCode.Entities.LogItems;
|
||||
using AyCode.Interfaces.Entities;
|
||||
using AyCode.Utils.Extensions;
|
||||
using System.Collections.Concurrent;
|
||||
|
||||
namespace AyCode.Entities;
|
||||
|
||||
public abstract class AcLogItemWriterBase<TLogItem> : AcLogWriterBase where TLogItem : class, IAcLogItem
|
||||
{
|
||||
protected readonly Mutex MutexLock = new();//new(false, "GLOBAL");
|
||||
|
||||
protected AcLogItemWriterBase() : this(null)
|
||||
{ }
|
||||
|
||||
protected AcLogItemWriterBase(string? categoryName = null) : base(categoryName)
|
||||
{ }
|
||||
|
||||
protected AcLogItemWriterBase(AppType appType, LogLevel logLevel, string? categoryName = null) : base(appType, logLevel, categoryName)
|
||||
{
|
||||
}
|
||||
|
||||
protected TLogItem CreateLogItem(int threadId, DateTime utcNow, LogLevel logLevel, string? logText, string? callerMemberName, string? categoryName = null, Exception? ex = null)
|
||||
{
|
||||
var logItem = Activator.CreateInstance<TLogItem>();
|
||||
|
||||
logItem.TimeStampUtc = utcNow;
|
||||
logItem.AppType = AppType;
|
||||
logItem.LogLevel = logLevel;
|
||||
logItem.CategoryName = categoryName;
|
||||
logItem.CallerName = callerMemberName;
|
||||
logItem.Text = logText;
|
||||
logItem.Exception = ex?.Message;
|
||||
logItem.ThreadId = threadId;
|
||||
|
||||
return logItem;
|
||||
}
|
||||
|
||||
protected override void PrepareToWrite(LogLevel logLevel, string? logText, string? callerMemberName, string? categoryName = null, Exception? ex = null)
|
||||
{
|
||||
if (logLevel < LogLevel) return;
|
||||
|
||||
var utcNow = DateTime.UtcNow;
|
||||
var threadId = Environment.CurrentManagedThreadId;
|
||||
|
||||
TaskHelper.RunOnThreadPool(() => WriteLogItem(CreateLogItem(threadId, utcNow, logLevel, logText, callerMemberName, categoryName)));
|
||||
}
|
||||
|
||||
protected virtual void WriteLogItem(TLogItem logItem, Action? callback = null)
|
||||
{
|
||||
using (MutexLock.UseWaitOne())
|
||||
{
|
||||
callback?.Invoke();
|
||||
}
|
||||
}
|
||||
|
||||
//private volatile bool _isLocked = false;
|
||||
//private readonly object _forLock = new();
|
||||
//private readonly List<TLogItem> _logItemsCahce = new();
|
||||
//private readonly List<TLogItem> _logItemsCahce2 = new();
|
||||
|
||||
//protected virtual void WriteLogItem(TLogItem logItem, Action<IEnumerable<TLogItem>>? callback = null)
|
||||
//{
|
||||
// lock (_forLock) _logItemsCahce.Add(logItem);
|
||||
|
||||
// if (_isLocked) return;
|
||||
|
||||
|
||||
// using (MutexLock.UseWaitOne())
|
||||
// {
|
||||
// _isLocked = true;
|
||||
|
||||
// _logItemsCahce2.Clear();
|
||||
|
||||
// lock (_forLock)
|
||||
// {
|
||||
// _logItemsCahce2.AddRange(_logItemsCahce);
|
||||
|
||||
// _logItemsCahce.Clear();
|
||||
// }
|
||||
|
||||
// callback?.Invoke(_logItemsCahce2);
|
||||
// }
|
||||
|
||||
// _isLocked = false;
|
||||
//}
|
||||
}
|
||||
|
|
@ -12,6 +12,7 @@
|
|||
|
||||
<ItemGroup>
|
||||
<Folder Include="Messages\" />
|
||||
<Folder Include="LogItems\" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,24 @@
|
|||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using AyCode.Core.Enums;
|
||||
using AyCode.Core.Interfaces;
|
||||
using AyCode.Core.Loggers;
|
||||
|
||||
namespace AyCode.Entities.LogItems;
|
||||
|
||||
[Table("LogItem")]
|
||||
public class AcLogItem : IAcLogItem
|
||||
{
|
||||
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
public int Id { get; set; }
|
||||
|
||||
public int LogHeaderId { get; set; }
|
||||
public DateTime TimeStampUtc { get; set; }
|
||||
public AppType AppType { get; set; }
|
||||
public LogLevel LogLevel { get; set; }
|
||||
public int ThreadId { get; set; }
|
||||
public string? CategoryName { get; set; }
|
||||
public string? CallerName { get; set; }
|
||||
public string? Text { get; set; }
|
||||
public string? Exception { get; set; }
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
using AyCode.Core.Enums;
|
||||
using AyCode.Core.Loggers;
|
||||
using AyCode.Interfaces.Entities;
|
||||
|
||||
namespace AyCode.Entities.LogItems;
|
||||
|
||||
public interface IAcLogItem : IEntityInt
|
||||
{
|
||||
public int LogHeaderId { get; set; }
|
||||
public DateTime TimeStampUtc { get; set; }
|
||||
public AppType AppType { get; set; }
|
||||
public LogLevel LogLevel { get; set; }
|
||||
public int ThreadId { get; set; }
|
||||
public string? CategoryName { get; set; }
|
||||
public string? CallerName { get; set; }
|
||||
public string? Text { get; set; }
|
||||
public string? Exception { get; set; }
|
||||
}
|
||||
|
|
@ -19,7 +19,7 @@ public class AcEmailServiceServer() : IAcEmailServiceServer
|
|||
_sendGridClient = new SendGridClient(configuration["SendGrid:Key"]);
|
||||
_fromEmailAddress = new EmailAddress(configuration["SendGrid:FromEmail"], configuration["SendGrid:FromName"]);
|
||||
|
||||
//Console.WriteLine($"{config.ServerUserName}; {config.FromEmail}; {config.FromName}");
|
||||
//Logger.Info($"{config.ServerUserName}; {config.FromEmail}; {config.FromName}");
|
||||
}
|
||||
|
||||
public async Task<Response> SendLostPasswordEmailAsync(string addressEmail, string verificationToken)
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@ using Microsoft.EntityFrameworkCore;
|
|||
using AyCode.Database.DbContexts;
|
||||
using AyCode.Core.Consts;
|
||||
using AyCode.Core.Extensions;
|
||||
using AyCode.Core.Loggers;
|
||||
using AyCode.Core.Server.Loggers;
|
||||
using AyCode.Database.DataLayers.Users;
|
||||
using AyCode.Database.DbContexts.Users;
|
||||
using AyCode.Interfaces.Messages;
|
||||
|
|
@ -124,13 +126,13 @@ public class AcLoginServiceServer<TResultLoggedInModel, TDal, TDbContext, TUser,
|
|||
public string GenerateAccessToken(TUser user)
|
||||
{
|
||||
var tokenHandler = new JwtSecurityTokenHandler();
|
||||
Console.WriteLine("----------------------------------------------------------");
|
||||
GlobalLogger.Info("----------------------------------------------------------");
|
||||
|
||||
if (configuration["JWT:Key"] == null)
|
||||
throw new SecurityTokenException("Token is null");
|
||||
|
||||
var keyDetail = Encoding.UTF8.GetBytes(configuration["JWT:Key"] ?? string.Empty);
|
||||
Console.WriteLine(configuration["JWT:Key"]);
|
||||
GlobalLogger.Info(configuration["JWT:Key"]);
|
||||
|
||||
var claims = new List<Claim>
|
||||
{
|
||||
|
|
@ -149,7 +151,7 @@ public class AcLoginServiceServer<TResultLoggedInModel, TDal, TDbContext, TUser,
|
|||
|
||||
var token = tokenHandler.CreateToken(tokenDescriptor) as JwtSecurityToken;
|
||||
var writtenToken = tokenHandler.WriteToken(token);
|
||||
Console.WriteLine(writtenToken);
|
||||
GlobalLogger.Info(writtenToken);
|
||||
|
||||
return writtenToken;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,54 @@
|
|||
using AyCode.Core.Enums;
|
||||
using AyCode.Core.Loggers;
|
||||
using AyCode.Entities;
|
||||
using AyCode.Entities.LogItems;
|
||||
using AyCode.Interfaces.Entities;
|
||||
using static System.Net.WebRequestMethods;
|
||||
using System;
|
||||
|
||||
namespace AyCode.Services.Loggers;
|
||||
|
||||
public abstract class AcHttpClientLogItemWriter<TLogItem> : AcLogItemWriterBase<TLogItem> where TLogItem : class, IAcLogItem
|
||||
{
|
||||
protected HttpClient _httpClient;
|
||||
protected readonly HttpClientHandler _httpClientHandler;
|
||||
|
||||
protected AcHttpClientLogItemWriter(HttpClient httpClient) : base(AppType.Web, LogLevel.Detail)
|
||||
{
|
||||
_httpClient = httpClient;
|
||||
}
|
||||
|
||||
protected AcHttpClientLogItemWriter(string? categoryName = null) : base(categoryName)
|
||||
{
|
||||
_httpClientHandler = new HttpClientHandler();
|
||||
_httpClient = new HttpClient(_httpClientHandler, false);
|
||||
}
|
||||
|
||||
protected AcHttpClientLogItemWriter(AppType appType, LogLevel logLevel, string? categoryName = null) : base(appType, logLevel, categoryName)
|
||||
{
|
||||
_httpClientHandler = new HttpClientHandler();
|
||||
_httpClient = new HttpClient(_httpClientHandler, false);
|
||||
}
|
||||
|
||||
|
||||
//protected override void WriteLogItem(TLogItem logItem, Action? callback = null)
|
||||
//{
|
||||
// //throw new NotImplementedException();
|
||||
|
||||
// base.WriteLogItem(logItem, () =>
|
||||
// {
|
||||
// //http.PostAsJson(url, Param);
|
||||
// //_httpClient.Send()
|
||||
// });
|
||||
//}
|
||||
|
||||
//protected override void WriteLogItem(TLogItem logItem, Action<IEnumerable<TLogItem>>? callback = null)
|
||||
//{
|
||||
// throw new NotImplementedException();
|
||||
|
||||
// base.WriteLogItem(logItem, logItems =>
|
||||
// {
|
||||
// //_httpClient.Send()
|
||||
// });
|
||||
//}
|
||||
}
|
||||
Loading…
Reference in New Issue