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<string>();
|
foreach (var file in logFiles)
|
{
|
allLogs.AddRange(File.ReadAllLines(file));
|
}
|
|
return allLogs.ToArray();
|
}
|
catch
|
{
|
return new string[0];
|
}
|
}
|
}
|
}
|