using AyCode.Core.Enums; using AyCode.Core.Loggers; using AyCode.Entities; using System.Net; namespace AyCode.Services.Loggers; public abstract class AcHttpClientLogItemWriter : AcLogItemWriterBase, IAcLogWriterClientBase where TLogItem : class, IAcLogItemClient { protected HttpClient _httpClient; protected HttpClientHandler _httpClientHandler; protected AcHttpClientLogItemWriter(HttpClient httpClient) : base(AppType.Web, LogLevel.Detail) { //_httpClient = httpClient; Initialize(httpClient.BaseAddress, httpClient.DefaultRequestVersion, httpClient.DefaultVersionPolicy); } protected AcHttpClientLogItemWriter(string? categoryName = null) : base(categoryName) { Initialize(null, HttpVersion.Version20, HttpVersionPolicy.RequestVersionOrHigher); } protected AcHttpClientLogItemWriter(AppType appType, LogLevel logLevel, string? categoryName = null) : base(appType, logLevel, categoryName) { Initialize(null, HttpVersion.Version20, HttpVersionPolicy.RequestVersionOrHigher); } private void Initialize(Uri? baseAddress, Version defaultRequestVersion, HttpVersionPolicy defaultVersionPolicy) { _httpClientHandler = new HttpClientHandler(); _httpClient = new HttpClient(_httpClientHandler, false); _httpClient.BaseAddress = baseAddress; _httpClient.DefaultRequestVersion = defaultRequestVersion; _httpClient.DefaultVersionPolicy = defaultVersionPolicy; } public override void Write(AppType appType, LogLevel logLevel, string? logText, string? callerMemberName, string? categoryName, string? errorType, string? exMessage) => WriteLogItem(CreateLogItem(DateTime.UtcNow, appType, Environment.CurrentManagedThreadId, logLevel, logText, callerMemberName, categoryName, errorType, exMessage)); //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>? callback = null) //{ // throw new NotImplementedException(); // base.WriteLogItem(logItem, logItems => // { // //_httpClient.Send() // }); //} }