refactor: Refactor lyrics download logic and abstract a new logger.

This commit is contained in:
real-zony
2022-10-23 13:38:51 +08:00
parent 3e27e18098
commit 7d17fc0b97
18 changed files with 245 additions and 163 deletions

View File

@@ -2,6 +2,7 @@ using System.Text;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using ZonyLrcTools.Common.Infrastructure.Exceptions;
using ZonyLrcTools.Common.Infrastructure.Logging;
namespace ZonyLrcTools.Common.Infrastructure.Extensions
{
@@ -16,9 +17,9 @@ namespace ZonyLrcTools.Common.Infrastructure.Extensions
/// <param name="logger">日志记录器实例。</param>
/// <param name="errorCode">错误码,具体请参考 <see cref="ErrorCodes"/> 类的定义。</param>
/// <param name="e">异常实例,可为空。</param>
public static void LogWarningWithErrorCode(this ILogger logger, int errorCode, Exception e = null)
public static void LogWarningWithErrorCode(this IWarpLogger logger, int errorCode, Exception e = null)
{
logger.LogWarning($"错误代码: {errorCode}\n堆栈异常: {e?.StackTrace}");
logger.WarnAsync($"错误代码: {errorCode}\n堆栈异常: {e?.StackTrace}").GetAwaiter().GetResult();
}
/// <summary>
@@ -26,7 +27,7 @@ namespace ZonyLrcTools.Common.Infrastructure.Extensions
/// </summary>
/// <param name="logger">日志记录器的实例。</param>
/// <param name="exception">错误码异常实例。</param>
public static void LogWarningInfo(this ILogger logger, ErrorCodeException exception)
public static void LogWarningInfo(this IWarpLogger logger, ErrorCodeException exception)
{
if (exception.ErrorCode < 50000)
{
@@ -36,7 +37,7 @@ namespace ZonyLrcTools.Common.Infrastructure.Extensions
var sb = new StringBuilder();
sb.Append($"错误代码: {exception.ErrorCode},信息: {ErrorCodeHelper.GetMessage(exception.ErrorCode)}");
sb.Append($"\n附加信息:\n {JsonConvert.SerializeObject(exception.AttachObject)}");
logger.LogWarning(sb.ToString());
logger.WarnAsync(sb.ToString()).GetAwaiter().GetResult();
}
/// <summary>
@@ -44,9 +45,9 @@ namespace ZonyLrcTools.Common.Infrastructure.Extensions
/// </summary>
/// <param name="logger">日志记录器的实例。</param>
/// <param name="musicInfo">需要打印的歌曲信息。</param>
public static void LogSuccessful(this ILogger logger, MusicInfo musicInfo)
public static void LogSuccessful(this IWarpLogger logger, MusicInfo musicInfo)
{
logger.LogInformation($"歌曲名: {musicInfo.Name}, 艺术家: {musicInfo.Artist}, 下载成功.");
logger.InfoAsync($"歌曲名: {musicInfo.Name}, 艺术家: {musicInfo.Artist}, 下载成功.").GetAwaiter().GetResult();
}
}
}

View File

@@ -4,16 +4,17 @@ using Microsoft.Extensions.Logging.Abstractions;
using ZonyLrcTools.Common.Infrastructure.DependencyInject;
using ZonyLrcTools.Common.Infrastructure.Exceptions;
using ZonyLrcTools.Common.Infrastructure.Extensions;
using ZonyLrcTools.Common.Infrastructure.Logging;
namespace ZonyLrcTools.Common.Infrastructure.IO
{
public class FileScanner : IFileScanner, ITransientDependency
{
public ILogger<FileScanner> Logger { get; set; }
private readonly IWarpLogger _logger;
public FileScanner()
public FileScanner(IWarpLogger logger)
{
Logger = NullLogger<FileScanner>.Instance;
_logger = logger;
}
public Task<List<FileScannerResult>> ScanAsync(string path, IEnumerable<string> extensions)
@@ -58,7 +59,7 @@ namespace ZonyLrcTools.Common.Infrastructure.IO
}
catch (Exception e)
{
Logger.LogWarningWithErrorCode(ErrorCodes.ScanFileError, e);
_logger.LogWarningWithErrorCode(ErrorCodes.ScanFileError, e);
}
}
}

View File

@@ -0,0 +1,9 @@
namespace ZonyLrcTools.Common.Infrastructure.Logging;
public interface IWarpLogger
{
Task DebugAsync(string message, Exception? exception = null);
Task InfoAsync(string message, Exception? exception = null);
Task WarnAsync(string message, Exception? exception = null);
Task ErrorAsync(string message, Exception? exception = null);
}