Layout.WatchDog.NET 1.5.0-beta.2 发布:.NET 实时应用监控再升级,新增资源监控看板与 SQLite 支持
一个专为
ASP.NET Core设计的轻量级、实时、可落地的应用日志和资源监控 "看门狗"
- NuGet :https://www.nuget.org/packages/Layout.WatchDog.NET/1.5.0-beta.2
- Gitee :https://gitee.com/dolayout/watch-dog
- 协议 :MIT
安装 nuget 包:
csharp
dotnet add package Layout.WatchDog.NET --version 1.5.0-beta.2
一、WatchDog 是什么?
WatchDog 是一个面向 ASP.NET Core Web 应用与 API 的实时消息、事件、HTTP 请求/响应与异常记录器、查看器。
它帮你解决这些痛点:
- 接口为什么 500?请求参数是什么?
- 异常发生在哪一行?上下文是什么?
- 生产环境不想接重型 APM,又想有实时日志台?
- 想看 CPU、内存、GC,但不想先搭 Prometheus + Grafana?
WatchDog 的理念 是:零配置能跑,生产可扩展,开发调试像看实时聊天记录。
核心能力:
- 实时 HTTP 请求 / 响应记录
- 运行时异常自动捕获
- 代码内业务日志(
WatchLogger/ILogger接口) - SignalR 实时推送
- 内置 Web 看板(
WatchDog.WatchPage) - 多数据库支持(关系型:
MS SQL Server / MySQL / PostgreSQL;NoSQL 文档型:MongoDB;嵌入式单文件数据库:LiteDB与Sqlite) - 新版本新增 :服务器资源监控 + 独立
WatchDog.Dashboard
二、1.5.0-beta.2 核心亮点
1. 新增独立 WatchDog.Dashboard 看板(Vue 3.5 + TanStack + Tailwind)
不再是"能看日志的页面",而是一个真正现代化的监控面板。
- Light 浅色主题

- Dark 深色主题

特性:
- Vue 3.5 实现,前端资源内嵌,无需单独部署
- 支持深色 / 浅色 / 跟随系统主题
- 支持中文 / English 切换
- Sparkline、RingGauge、StackedBar 等图表组件
- 看板与旧版页面共存,可平滑迁移
启用方式:
csharp
app.UseWatchDog(opt =>
{
// 此处演示默认账号和密码,生产使用请走配置密钥处理
opt.WatchPageUsername = "admin";
opt.WatchPagePassword = "Qwerty@123";
opt.Dashboard.Enabled = true;
opt.Dashboard.BasePath = "/watchdog";
opt.Dashboard.DefaultLocale = "zh-Hans";
opt.Dashboard.DefaultTheme = "dark";
});
入口地址:
- 新看板:
/watchdog - 旧内嵌页:
/watchdog-legacy
如果看板产物缺失,会自动降级到旧页面并输出
warning,不影响系统启动。
2. 新增服务器资源监控总览
这是 1.5.0-beta.2 最值得关注的能力之一。
监控指标:
| 分类 | 指标 |
|---|---|
| CPU | 使用率、核心数、负载趋势 |
| 内存 | 已用 / 可用 / 工作集 |
| 磁盘 | 分区使用率、读写趋势 |
| 网络 | 收发速率、流量堆叠 |
| 运行时 | 线程数、句柄数、线程池 |
| GC | 各代回收、内存分配 |
后端新增:
Helpers/Metrics节点指标采集- 按平台区分:
Windows / Linux / macOS / Portable - 进程级指标采集
- Dashboard API :
watchdog-api/v1/*
适合场景:
- 单节点服务自检
- 边缘节点 / 内网系统
- 不想接外部监控系统的轻量场景
- 开发环境"一眼看全貌"
3. 新增 SQLite 数据库驱动
在 LiteDB 基础上,新增第一种 "标准 SQL 单文件存储":
csharp
services.AddWatchDogServices(opt =>
{
opt.DbDriverOption = WatchDogDbDriverEnum.Sqlite;
opt.SetExternalDbConnString = "Data Source=watchdog.db";
});
SQLite 模式特性:
- 零独立服务,单文件存储
- 可用标准 SQL 工具直接查日志
- 自动开启 WAL、
busy_timeout=5000、synchronous=NORMAL - 相对路径自动归一到
AppContext.BaseDirectory - 支持
VACUUM回收空间
手动压缩端点:
GET /WTCHDwatchpage/Compact
适用于:
- 升级后治理膨胀库
- 磁盘空间告急
- 单机长期运行实例
4. 数据库支持总览
| 驱动 | 说明 | 适用场景 |
|---|---|---|
| LiteDB | 默认,零配置单文件 | 本地开发、小项目 |
| SQLite | 新增,标准 SQL 单文件 | 边缘部署、轻运维 |
| MSSQL | 外部关系型数据库 | 企业内网 |
| MySQL | 外部关系型数据库 | 常见业务系统 |
| PostgreSQL | 外部关系型数据库 | 云原生 / 微服务 |
| MongoDB | 文档数据库 | 高写入、弹性扩展 |
配置示例:
csharp
services.AddWatchDogServices(opt =>
{
opt.DbDriverOption = WatchDogDbDriverEnum.PostgreSql;
opt.SetExternalDbConnString ="Server=localhost;Database=WatchDogDb;User Id=postgres;Password=root;";
});
5. 目标 .NET 框架
1.5.0-beta.2 同时支持:
- .NET 8
- .NET 10
依赖按框架自动区分:
| 依赖 | net8.0 | net10.0 |
|---|---|---|
| Microsoft.Data.Sqlite | 8.0.33 | 10.0.14 |
| Npgsql | 8.0.9 | 10.0.3 |
| MySql.Data | 9.7.0 | 26.10.0 |
适合:
- 老项目
.NET 8平滑接入 - 新项目直接面向
.NET 10
三、快速接入:5 分钟跑起来
1. 安装
bash
dotnet add package Layout.WatchDog.NET --version 1.5.0-beta.2
或 PackageReference:
xml
<PackageReference Include="Layout.WatchDog.NET" Version="1.5.0-beta.2" />
2. 注册服务
csharp
builder.Services.AddWatchDogServices(opt =>
{
opt.DbDriverOption = WatchDogDbDriverEnum.Sqlite;
opt.SetExternalDbConnString = "Data Source=watchdog.db";
opt.IsAutoClear = true;
opt.ClearTimeSchedule = WatchDogAutoClearScheduleEnum.Weekly;
});
builder.Logging.AddWatchDogLogger();
3. 配置中间件
csharp
var app = builder.Build();
app.UseWatchDogExceptionLogger();
app.UseWatchDog(opt =>
{
opt.WatchPageUsername = "admin";
opt.WatchPagePassword = "Qwerty@123";
opt.Dashboard.Enabled = true;
// 不记录敏感接口
opt.Blacklist = "api/auth/login, health";
// 正则黑名单
opt.UseRegexForBlacklisting = true;
});
4. 业务代码打点
csharp
using WatchDog;
WatchLogger.Log("用户登录成功");
WatchLogger.LogWarning("请求频率过高");
WatchLogger.LogError("处理订单失败", eventId: "Order_001");
5. 打开看板
启动应用后访问:
https://localhost:5000/watchdog
登录后可以看到:
- HTTP 请求 / 响应
- 异常堆栈
- 业务日志
- 服务器资源总览
- 实时刷新
- 请求日志

- 异常日志

切换"深色"主题,点击行可查看日志详细信息:

- 代码内日志

- 查看旧版页面

旧版 WatchDog.WatchPage 和 新版 WatchDog.Dashboard 兼容并行,两个资源内嵌看板相互独立可切换查看。
四、生产友好能力
1. 多实例写入安全
日志 ID 使用雪花算法:
41 位时间 + 10 位 WorkerId + 12 位序列号
多实例写同一库时:
csharp
opt.WorkerId = 1; // 0-1023,每个实例不同
或通过环境变量:
bash
WATCHDOG_WORKER_ID=2 dotnet MyApp.dll
好处:
- 清空日志后 ID 不回退
- 多进程排序稳定
- LiteDB / MongoDB 下全局有序
2. 自动清理与压缩
- 支持按日 / 周 / 月自动清理
- LiteDB 清空后自动
Compact - SQLite 清空后自动
VACUUM - 手动触发:
/WTCHDwatchpage/Compact
3. 安全与隔离
- 看板自带账号密码
- 支持路径黑名单
- 支持正则过滤
- 支持 CORS 策略
- 支持输出缓存兼容
csharp
opt.CorsPolicy = "MyCorsPolicy";
opt.UseOutputCache = true;
五、和原 WatchDog.NET 的区别
| 维度 | 上游 WatchDog.NET | Layout.WatchDog.NET |
|---|---|---|
| 维护状态 | 1.4.12 存在依赖安全隐患 | 持续维护 |
| .NET 10 | 不完整 | 官方支持 |
| SQLite | 不支持 | 支持 |
| 独立看板 | 无/内置WatchPage(存在技术债) | Vue3 Dashboard/兼容WatchPage(技术栈升级补丁修复版) |
| 资源监控 | 弱 | CPU/内存/磁盘/网络/GC |
| ID 生成 | 自增 | 雪花 ID |
| 多实例 | 一般 | WorkerId 显式隔离 |
| 清理压缩 | LiteDB 不完整 | LiteDB + SQLite 自动压缩 |
六、适用场景
- ASP.NET Core API 调试
- 内部管理系统运维
- 微服务单节点观测
- 边缘设备 / 单机服务
- 不想接重型 APM 的小团队
- .NET 8 / .NET 10 项目可观测性补齐
七、版本说明
当前版本: Layout.WatchDog.NET 1.5.0-beta.2
状态:
- 预发布版本
- 适合试用、内部环境、非强依赖生产
- 建议生产使用前做一轮压测与权限审计
如果遇到问题:
- 欢迎提交
issue:https://gitee.com/dolayout/watch-dog/issues - 或者 fork 本仓库 ---> 创建你的特性分支 ---> 提交你的更改 ---> 推送到分支 ---> 发起
Pull Request
八、一句话总结
Layout.WatchDog.NET 1.5.0-beta.2 = 实时 HTTP 日志 + 异常追踪 + 业务埋点 + SQLite/多数据库 + 服务器资源监控 + 现代化 Dashboard,专为 .NET 8 / .NET 10 打造。
如果你正在找一个:
- 不重,轻量级,MIT 协议开源
- 不贵,支持商业和个人任意用途免费使用
- 不依赖外部服务
- 能直接嵌进 ASP.NET Core
- 开发看日志、运维看资源都够用
的监控组件,欢迎试试 Layout.WatchDog.NET。