AyCode.Core/AyCode.Services/Loggers/AcHttpClientLogItemWriter.cs

63 lines
2.4 KiB
C#

using AyCode.Core.Enums;
using AyCode.Core.Loggers;
using AyCode.Entities;
using System.Net;
namespace AyCode.Services.Loggers;
public abstract class AcHttpClientLogItemWriter<TLogItem> : AcLogItemWriterBase<TLogItem>, 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<IEnumerable<TLogItem>>? callback = null)
//{
// throw new NotImplementedException();
// base.WriteLogItem(logItem, logItems =>
// {
// //_httpClient.Send()
// });
//}
}