using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SmartScanner.OperateLog { public static class OperateLogService { private static readonly string logDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Logs"); private static readonly string logFileName = $"OperationLog_{DateTime.Now:yyyyMMdd}.txt"; static OperateLogService() { // 确保日志目录存在 if (!Directory.Exists(logDirectory)) { Directory.CreateDirectory(logDirectory); } } public static void LogOperation(string operationType, string operationDetails, string targetDevice = null) { if (UserManager.CurrentUser == null) return; try { var logEntry = $"{DateTime.Now:yyyy-MM-dd HH:mm:ss} | " + $"操作人员: {UserManager.CurrentUser.Username} | " + $"操作类型: {operationType} | " + $"目标设备: {targetDevice ?? "N/A"} | " + $"操作详情: {operationDetails}"; var logPath = Path.Combine(logDirectory, logFileName); File.AppendAllText(logPath, logEntry + Environment.NewLine); } catch (Exception ex) { // 简单处理日志写入错误 Console.WriteLine($"日志记录失败: {ex.Message}"); } } public static string[] GetRecentLogs(int days = 7) { try { var logFiles = Directory.GetFiles(logDirectory, "OperationLog_*.txt") .OrderByDescending(f => f) .Take(days) .ToList(); var allLogs = new List(); foreach (var file in logFiles) { allLogs.AddRange(File.ReadAllLines(file)); } return allLogs.ToArray(); } catch { return new string[0]; } } } }