feat(logManagement): implement log management service

This commit is contained in:
shiyu
2025-06-06 11:39:39 +08:00
parent a73752bcc8
commit a95651b04a
34 changed files with 1644 additions and 108 deletions

49
Models/DataBase/Log.cs Normal file
View File

@@ -0,0 +1,49 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Foxel.Models.DataBase;
public class Log : BaseModel
{
[Required]
public LogLevel Level { get; set; }
[Required]
[StringLength(4000)]
public string Message { get; set; } = string.Empty;
[StringLength(255)]
public string? Category { get; set; }
public int? EventId { get; set; }
public DateTime Timestamp { get; set; } = DateTime.UtcNow;
[Column(TypeName = "text")]
public string? Exception { get; set; }
[StringLength(255)]
public string? RequestPath { get; set; }
[StringLength(50)]
public string? RequestMethod { get; set; }
public int? StatusCode { get; set; }
public int? UserId { get; set; }
[ForeignKey("UserId")]
public User? User { get; set; }
[StringLength(50)]
public string? IPAddress { get; set; }
[StringLength(255)]
public string? Application { get; set; } = "Foxel";
[StringLength(255)]
public string? MachineName { get; set; } = Environment.MachineName;
[Column(TypeName = "text")]
public string? Properties { get; set; } // JSON格式存储额外属性
}

View File

@@ -0,0 +1,7 @@
namespace Foxel.Models.Request.Log;
public class ClearLogsRequest
{
public DateTime? BeforeDate { get; set; }
public bool ClearAll { get; set; } = false;
}

View File

@@ -0,0 +1,18 @@
namespace Foxel.Models.Response.Log;
public class LogResponse
{
public int Id { get; set; }
public LogLevel Level { get; set; }
public string Message { get; set; } = string.Empty;
public string Category { get; set; } = string.Empty;
public int? EventId { get; set; }
public DateTime Timestamp { get; set; }
public string? Exception { get; set; }
public string? RequestPath { get; set; }
public string? RequestMethod { get; set; }
public int? StatusCode { get; set; }
public string? IPAddress { get; set; }
public int? UserId { get; set; }
public string? Properties { get; set; }
}

View File

@@ -0,0 +1,24 @@
namespace Foxel.Models.Response.Log;
public class LogStatistics
{
/// <summary>
/// 总日志数
/// </summary>
public int TotalCount { get; set; }
/// <summary>
/// 今日日志数
/// </summary>
public int TodayCount { get; set; }
/// <summary>
/// 错误日志数Error + Critical
/// </summary>
public int ErrorCount { get; set; }
/// <summary>
/// 警告日志数
/// </summary>
public int WarningCount { get; set; }
}