| | |
| | | { |
| | | try |
| | | { |
| | | // 进入写锁 |
| | | LogWriteLock.EnterWriteLock(); |
| | | |
| | | |
| | | // 如果文件夹不存在,则创建文件夹 |
| | | if (!Directory.Exists(folderPath)) |
| | | { |
| | | Directory.CreateDirectory(folderPath); |
| | | } |
| | | // 获取日志文件路径 |
| | | string logFilePath = Path.Combine(folderPath, GetLastAccessFileName(fileName)); |
| | | // 获取当前时间 |
| | | DateTime now = DateTime.Now; |
| | | // 构造日志内容 |
| | | string logContent = $"【{now}】{Environment.NewLine}{log}"; |
| | | |
| | | // 将日志内容追加到日志文件中 |
| | | File.AppendAllText(logFilePath, logContent); |
| | | } |
| | | catch { } |
| | | finally |
| | | { |
| | | // 退出写锁 |
| | | LogWriteLock.ExitWriteLock(); |
| | | } |
| | | } |
| | |
| | | static string ext = ".log"; |
| | | private static string GetLogFilePath(string folderPath, string fileName) |
| | | { |
| | | // 获取指定文件夹下的所有文件 |
| | | var allFiles = new DirectoryInfo(folderPath); |
| | | // 获取符合条件的文件,按文件名降序排列 |
| | | var selectFiles = allFiles.GetFiles().Where(fi => fi.Name.ToLower().Contains(fileName.ToLower()) && fi.Extension.ToLower() == ext.ToLower() && fi.Length < size).OrderByDescending(d => d.Name).ToList(); |
| | | |
| | | if (selectFiles.Count > 0) |
| | | FileInfo? file = selectFiles.FirstOrDefault(); |
| | | // 如果有符合条件的文件,返回第一个文件的完整路径 |
| | | if (file != null) |
| | | { |
| | | return selectFiles.FirstOrDefault().FullName; |
| | | return file.FullName; |
| | | } |
| | | |
| | | // 如果没有符合条件的文件,返回一个新的文件路径,文件名为原文件名加上当前时间 |
| | | return Path.Combine(folderPath, $@"{fileName}_{DateTime.Now.ToString("HH-mm-ss")}.log"); |
| | | } |
| | | |