diff --git a/DownKyi.Core/Logging/LogManager.cs b/DownKyi.Core/Logging/LogManager.cs index e8b9db9..d47c43d 100644 --- a/DownKyi.Core/Logging/LogManager.cs +++ b/DownKyi.Core/Logging/LogManager.cs @@ -1,5 +1,6 @@ using System.Collections.Concurrent; using System.Text.RegularExpressions; +using DownKyi.Core.Storage; using static System.DateTime; namespace DownKyi.Core.Logging; @@ -60,28 +61,10 @@ public class LogManager private static AutoResetEvent Pause => new AutoResetEvent(false); - private static string logDirectory; - /// - /// 日志存放目录,默认日志放在当前应用程序运行目录下的logs文件夹中 + /// 日志存放目录,windows默认日志放在当前应用程序运行目录下的Logs文件夹中,macOS、linux存放于applicationData目录下 /// - public static string LogDirectory - { - get => logDirectory ?? - (Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory).Any(s => s.Contains("Web.config")) - ? AppDomain.CurrentDomain.BaseDirectory + @"App_Data\Logs\" - : Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "logs")); - set - { - //自定义目录 - if (!Directory.Exists(value)) - { - Directory.CreateDirectory(value); - } - - logDirectory = value; - } - } + private static string LogDirectory => StorageManager.GetLogsDir(); /// /// 写入Info级别的日志 diff --git a/DownKyi.Core/Storage/Constant.cs b/DownKyi.Core/Storage/Constant.cs index 74a0b69..f2bfe3b 100644 --- a/DownKyi.Core/Storage/Constant.cs +++ b/DownKyi.Core/Storage/Constant.cs @@ -6,9 +6,30 @@ internal static class Constant { // 根目录 +#if NET8_0_OR_GREATER //兼容8.0中断性变更https://learn.microsoft.com/zh-cn/dotnet/core/compatibility/core-libraries/8.0/getfolderpath-unix private static string Root => OperatingSystem.IsWindows() ? AppDomain.CurrentDomain.BaseDirectory - : Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Downkyi"); + : Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "DownKyi"); +#else + private static string Root + { + get + { + if (OperatingSystem.IsWindows()) + { + return AppDomain.CurrentDomain.BaseDirectory; + } + + if (OperatingSystem.IsMacOS()) + { + return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Library", + "Application Support", "DownKyi"); + } + + return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "DownKyi"); + } + } +#endif // private static string Root { get; } = AppDomain.CurrentDomain.BaseDirectory; // Aria diff --git a/DownKyi.Core/Storage/StorageManager.cs b/DownKyi.Core/Storage/StorageManager.cs index 03b2ad3..3407ec9 100644 --- a/DownKyi.Core/Storage/StorageManager.cs +++ b/DownKyi.Core/Storage/StorageManager.cs @@ -3,7 +3,7 @@ public static class StorageManager { /// - /// 获取历史记录的文件路径 + /// 获取Aria的文件路径 /// /// public static string GetAriaDir() @@ -11,6 +11,16 @@ public static class StorageManager CreateDirectory(Constant.Aria); return Constant.Aria; } + + /// + /// 获取日志的文件路径 + /// + /// + public static string GetLogsDir() + { + CreateDirectory(Constant.Logs); + return Constant.Logs; + } /// /// 获取历史记录的文件路径