using System; using System.Text; using Microsoft.Extensions.Logging; using Newtonsoft.Json; using ZonyLrcTools.Cli.Infrastructure.Exceptions; namespace ZonyLrcTools.Cli.Infrastructure.Extensions { /// /// 日志记录相关的扩展方法。 /// public static class LoggerExtensions { /// /// 使用 级别打印错误日志,并记录异常堆栈。 /// /// 日志记录器实例。 /// 错误码,具体请参考 类的定义。 /// 异常实例,可为空。 public static void LogWarningWithErrorCode(this ILogger logger, int errorCode, Exception e = null) { logger.LogWarning($"错误代码: {errorCode}\n堆栈异常: {e?.StackTrace}"); } /// /// 使用 级别打印错误日志,并记录异常堆栈。 /// /// 日志记录器的实例。 /// 错误码异常实例。 public static void LogWarningInfo(this ILogger logger, ErrorCodeException exception) { if (exception.ErrorCode < 50000) { throw exception; } var sb = new StringBuilder(); sb.Append($"错误代码: {exception.ErrorCode},信息: {ErrorCodeHelper.GetMessage(exception.ErrorCode)}"); sb.Append($"\n附加信息:\n {JsonConvert.SerializeObject(exception.AttachObject)}"); logger.LogWarning(sb.ToString()); } /// /// 使用 级别打印歌曲下载成功信息。 /// /// 日志记录器的实例。 /// 需要打印的歌曲信息。 public static void LogSuccessful(this ILogger logger, MusicInfo musicInfo) { logger.LogInformation($"歌曲名: {musicInfo.Name}, 艺术家: {musicInfo.Artist}, 下载成功."); } } }