Update
This commit is contained in:
19
ConsoleApp2/Services/Loggers/CacheTaskMonitorLogger.cs
Normal file
19
ConsoleApp2/Services/Loggers/CacheTaskMonitorLogger.cs
Normal file
@@ -0,0 +1,19 @@
|
||||
using ConsoleApp2.Cache;
|
||||
|
||||
namespace ConsoleApp2.Services.Loggers;
|
||||
|
||||
public class CacheTaskMonitorLogger : ITaskMonitorLogger
|
||||
{
|
||||
private readonly ICacher _cacher;
|
||||
|
||||
public CacheTaskMonitorLogger(ICacher cacher)
|
||||
{
|
||||
_cacher = cacher;
|
||||
}
|
||||
|
||||
public void LogStatus(string name, IReadOnlyDictionary<string, string> properties, ITaskMonitorLogger.LogLevel logLevel)
|
||||
{
|
||||
if(logLevel is ITaskMonitorLogger.LogLevel.Progress)
|
||||
_cacher.SetHashAsync(name, properties);
|
||||
}
|
||||
}
|
12
ConsoleApp2/Services/Loggers/ITaskMonitorLogger.cs
Normal file
12
ConsoleApp2/Services/Loggers/ITaskMonitorLogger.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
namespace ConsoleApp2.Services.Loggers;
|
||||
|
||||
public interface ITaskMonitorLogger
|
||||
{
|
||||
public enum LogLevel
|
||||
{
|
||||
Info,
|
||||
Debug,
|
||||
Progress,
|
||||
}
|
||||
void LogStatus(string name, IReadOnlyDictionary<string, string> properties, LogLevel logLevel = LogLevel.Info);
|
||||
}
|
41
ConsoleApp2/Services/Loggers/LoggerTaskMonitorLogger.cs
Normal file
41
ConsoleApp2/Services/Loggers/LoggerTaskMonitorLogger.cs
Normal file
@@ -0,0 +1,41 @@
|
||||
using System.Text;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace ConsoleApp2.Services.Loggers;
|
||||
|
||||
public class LoggerTaskMonitorLogger : ITaskMonitorLogger
|
||||
{
|
||||
private readonly ILogger _logger;
|
||||
|
||||
public LoggerTaskMonitorLogger(ILogger<LoggerTaskMonitorLogger> logger)
|
||||
{
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public void LogStatus(string name, IReadOnlyDictionary<string, string> properties, ITaskMonitorLogger.LogLevel logLevel)
|
||||
{
|
||||
var sb = new StringBuilder();
|
||||
sb.Append($"{name}: {{");
|
||||
sb.AppendJoin(',', properties.Select((pair, i) => $" {pair.Key}: {pair.Value}"));
|
||||
sb.Append('}');
|
||||
// var args = new List<string> { name };
|
||||
// properties.Aggregate(args, (args, pair) =>
|
||||
// {
|
||||
// args.Add(pair.Key);
|
||||
// args.Add(pair.Value);
|
||||
// return args;
|
||||
// });
|
||||
switch (logLevel)
|
||||
{
|
||||
case ITaskMonitorLogger.LogLevel.Info:
|
||||
_logger.LogInformation("{message}", sb.ToString());
|
||||
break;
|
||||
case ITaskMonitorLogger.LogLevel.Progress:
|
||||
case ITaskMonitorLogger.LogLevel.Debug:
|
||||
_logger.LogDebug("{message}", sb.ToString());
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException(nameof(logLevel), logLevel, null);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user