namespace Dpz.Core.Public.ViewModel;
/// <summary>
/// 访问日志统计信息
/// </summary>
public class AccessLogStatistics
{
/// <summary>
/// 慢请求排行
/// </summary>
public List<SlowRequestSummary> SlowRequests { get; set; } = [];
/// <summary>
/// 热门页面排行
/// </summary>
public List<RequestPathSummary> PopularPages { get; set; } = [];
/// <summary>
/// 每小时流量统计
/// </summary>
public List<HourlyTrafficSummary> HourlyTraffic { get; set; } = [];
/// <summary>
/// 浏览器占比
/// </summary>
public List<BrowserUsageSummary> BrowserUsage { get; set; } = [];
/// <summary>
/// 来源排行
/// </summary>
public List<RefererSummary> Referers { get; set; } = [];
}
/// <summary>
/// 慢请求统计项
/// </summary>
public class SlowRequestSummary
{
/// <summary>
/// 请求发生时间
/// </summary>
public required string Time { get; set; }
/// <summary>
/// 请求方法
/// </summary>
public string? RequestMethod { get; set; }
/// <summary>
/// 请求路径
/// </summary>
public string? RequestPath { get; set; }
/// <summary>
/// HTTP 状态码
/// </summary>
public int StatusCode { get; set; }
/// <summary>
/// 请求耗时,单位毫秒
/// </summary>
public double Elapsed { get; set; }
/// <summary>
/// IP 地址
/// </summary>
public string? IpAddress { get; set; }
/// <summary>
/// 浏览器
/// </summary>
public string? Browser { get; set; }
/// <summary>
/// 设备类型
/// </summary>
public string? Device { get; set; }
/// <summary>
/// 来源
/// </summary>
public string? Referer { get; set; }
/// <summary>
/// User-Agent
/// </summary>
public string? UserAgent { get; set; }
}
/// <summary>
/// 请求路径访问统计项
/// </summary>
public class RequestPathSummary
{
/// <summary>
/// 请求路径
/// </summary>
public required string RequestPath { get; set; }
/// <summary>
/// 请求次数
/// </summary>
public int Count { get; set; }
}
/// <summary>
/// 每小时流量统计项
/// </summary>
public class HourlyTrafficSummary
{
/// <summary>
/// 日期
/// </summary>
public required string Date { get; set; }
/// <summary>
/// 小时
/// </summary>
public int Hour { get; set; }
/// <summary>
/// 请求次数
/// </summary>
public int Count { get; set; }
}
/// <summary>
/// 浏览器访问统计项
/// </summary>
public class BrowserUsageSummary
{
/// <summary>
/// 浏览器名称
/// </summary>
public required string Browser { get; set; }
/// <summary>
/// 请求次数
/// </summary>
public int Count { get; set; }
/// <summary>
/// 请求占比
/// </summary>
public decimal Percentage { get; set; }
}
/// <summary>
/// 来源访问统计项
/// </summary>
public class RefererSummary
{
/// <summary>
/// 来源
/// </summary>
public required string Referer { get; set; }
/// <summary>
/// 请求次数
/// </summary>
public int Count { get; set; }
}
⚠⚠ 以下内容为AI分析的结果,请根据实际情况进行判断。
代码说明文档
概述
这是一个用于访问日志统计的视图模型(ViewModel)代码文件,定义了一组用于展示 Web 应用访问统计数据的数据传输对象(DTO)。
命名空间
namespace Dpz.Core.Public.ViewModel;
属于 Dpz.Core.Public.ViewModel 命名空间,通常用于公共视图模型层。
类结构说明
1. AccessLogStatistics (主统计类)
这是核心的统计汇总类,包含了访问日志的各个维度的统计信息。
属性列表:
| 属性名 | 类型 | 说明 |
|---|---|---|
SlowRequests | List<SlowRequestSummary> | 慢请求排行榜 |
PopularPages | List<RequestPathSummary> | 热门页面访问排行 |
HourlyTraffic | List<HourlyTrafficSummary> | 按小时统计的流量数据 |
BrowserUsage | List<BrowserUsageSummary> | 浏览器使用占比统计 |
Referers | List<RefererSummary> | 来源网站排行 |
所有集合属性都使用了 C# 11 的集合表达式语法 = [] 进行初始化。
2. SlowRequestSummary (慢请求详情)
记录耗时较长的请求详细信息,用于性能分析。
关键字段:
Time(required): 请求发生时间Elapsed: 请求耗时(毫秒)- 核心指标RequestMethod: HTTP 方法(GET/POST等)RequestPath: 请求的 URL 路径StatusCode: HTTP 响应状态码IpAddress: 客户端 IPBrowser: 浏览器类型Device: 设备类型(PC/Mobile等)Referer: 来源页面UserAgent: 完整的 User-Agent 字符串
3. RequestPathSummary (页面访问统计)
统计各个页面路径的访问次数。
字段:
RequestPath(required): 请求路径Count: 访问次数
用途: 用于生成"热门页面排行榜"
4. HourlyTrafficSummary (时段流量统计)
按日期和小时维度统计流量分布。
字段:
Date(required): 日期(字符串格式)Hour: 小时(0-23)Count: 该时段的请求次数
用途: 可用于绘制流量趋势图、识别访问高峰期
5. BrowserUsageSummary (浏览器占比)
统计不同浏览器的使用情况及占比。
字段:
Browser(required): 浏览器名称(如 Chrome、Firefox)Count: 使用该浏览器的请求次数Percentage: 使用占比(百分比,decimal 类型保证精度)
用途: 用于兼容性分析和用户画像
6. RefererSummary (来源统计)
统计访问来源(引荐页面)的分布。
字段:
Referer(required): 来源 URLCount: 从该来源访问的次数
用途: 分析流量来源、外链效果等
技术特点
- 使用
required修饰符:确保关键字段在对象初始化时必须赋值(C# 11 特性) - 可空引用类型:大量使用
string?表示可为空的字符串 - 集合初始化:使用
= []简洁语法初始化空集合 - 清晰的 XML 注释:每个类和属性都有详细的中文说明
应用场景
这套模型适用于:
- 网站访问统计仪表板
- 性能监控系统
- 用户行为分析
- SEO 效果追踪
- 系统健康监控
AI 正在分析代码…
评论加载中...