@@ -65,32 +65,45 @@ public static LoggerConfiguration CreateLoggerConfiguration()
6565 const string FileOutputTemplate = "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}][{TagName}]{Message:lj}{NewLine}{Exception}" ;
6666
6767 /// <summary>
68- /// 启动并配置日志系统
68+ /// 启动并配置日志系统。
6969 /// </summary>
70- /// <param name="logOptions">日志配置选项,包含日志级别、存储路径等配置信息</param>
71- /// <param name="isDefault">是否设置为默认配置</param>
72- /// <param name="configurationAction">自定义日志配置回调</param>
73- /// <exception cref="ArgumentNullException">当logOptions参数为null时抛出</exception>
74- /// <exception cref="Exception">初始化日志系统过程中发生的其他异常</exception>
70+ /// <param name="logOptions">日志配置选项,包含日志级别、存储路径等配置信息。</param>
71+ /// <param name="isDefault">是否设置为默认配置。</param>
72+ /// <param name="configurationAction">自定义日志配置回调。</param>
73+ /// <exception cref="ArgumentNullException">当 <paramref name="logOptions"/> 参数为 null 时抛出。</exception>
74+ /// <exception cref="ArgumentException">当 <paramref name="logOptions.LogTagName"/> 为空或仅包含空白字符时抛出。</exception>
75+ /// <exception cref="DirectoryNotFoundException">日志文件目录不存在且无法创建时抛出。</exception>
76+ /// <exception cref="UnauthorizedAccessException">没有权限创建日志目录或写入日志文件时抛出。</exception>
77+ /// <exception cref="Exception">初始化日志系统过程中发生的其他异常。</exception>
78+ /// <remarks>
79+ /// <para>该方法会根据传入的 <paramref name="logOptions"/> 配置初始化日志系统,支持文件、控制台、MongoDB 及 Grafana Loki 等多种输出方式。</para>
80+ /// <para>异常类型涵盖参数校验、目录创建、权限不足及日志系统初始化过程中的所有可能异常。</para>
81+ /// </remarks>
82+ /// <example>
83+ /// <code>
84+ /// var options = new LogOptions { LogTagName = "App", LogSavePath = "./logs/", IsConsole = true };
85+ /// ILogger logger = LogHandler.Create(options);
86+ /// </code>
87+ /// </example>
88+ /// <seealso cref="LogOptions"/>
89+ /// <seealso cref="ILogger"/>
7590 public static ILogger Create ( LogOptions logOptions , bool isDefault = true , Action < LoggerConfiguration > configurationAction = null )
7691 {
7792 ArgumentNullException . ThrowIfNull ( logOptions ) ;
93+ ArgumentException . ThrowIfNullOrWhiteSpace ( logOptions . LogTagName , nameof ( logOptions . LogTagName ) ) ;
7894 SerilogDiagnosis ( ) ;
7995 try
8096 {
8197 // 文件名
82- var logFileName = $ "{ ( logOptions . LogType ?? AppDomain . CurrentDomain . FriendlyName ) . ToLower ( ) } _.log";
98+ var logFileName = $ "{ logOptions . LogTagName } _.log";
8399 // 日志文件存储的路径
84100 var logSavePath = logOptions . LogSavePath ?? "./logs/" ;
85- if ( ! logSavePath . EndsWithFast ( "/" ) )
101+ if ( ! logSavePath . EndsWith ( Path . DirectorySeparatorChar ) )
86102 {
87- logSavePath += "/" ;
103+ logSavePath += Path . DirectorySeparatorChar ;
88104 }
89105
90- if ( ! string . IsNullOrEmpty ( logOptions . LogTagName ) )
91- {
92- logSavePath += logOptions . LogTagName + "/" ;
93- }
106+ logSavePath += logOptions . LogTagName + Path . DirectorySeparatorChar ;
94107
95108 // 计算最终日志文件路径
96109 var logPath = Path . Combine ( logSavePath , logFileName ) ;
0 commit comments