Layout.WatchDog.NET 1.5.0-beta.5

This is a prerelease version of Layout.WatchDog.NET.
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package Layout.WatchDog.NET --version 1.5.0-beta.5
                    
NuGet\Install-Package Layout.WatchDog.NET -Version 1.5.0-beta.5
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Layout.WatchDog.NET" Version="1.5.0-beta.5" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Layout.WatchDog.NET" Version="1.5.0-beta.5" />
                    
Directory.Packages.props
<PackageReference Include="Layout.WatchDog.NET" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Layout.WatchDog.NET --version 1.5.0-beta.5
                    
#r "nuget: Layout.WatchDog.NET, 1.5.0-beta.5"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Layout.WatchDog.NET@1.5.0-beta.5
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Layout.WatchDog.NET&version=1.5.0-beta.5&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Layout.WatchDog.NET&version=1.5.0-beta.5&prerelease
                    
Install as a Cake Tool

WatchDog

WatchDog 版本 下载量 MIT 许可证

简介

WatchDog 是一个专为 ASP.NET Core Web 应用程序和 API 设计的实时消息、事件、HTTP(请求和响应)和异常记录器和查看器。它允许开发人员记录和查看消息、事件、对其 Web 应用程序的 HTTP 请求以及在运行时捕获的异常,全部实时显示。

WatchDog 利用 SignalR 实现实时通信,默认使用轻量级数据库 LiteDB(无需配置),同时支持扩展至外部数据库(MSSQL, MySQL, PostgreSQL, MongoDB, SQLite)。

本仓库以 Layout.WatchDog.NET 为包 ID 持续维护。上游 WatchDog.NET 的最新公开版本 1.4.12 存在已知依赖安全隐患,请勿继续使用。

主要功能

  • 实时 HTTP 监控:记录所有请求和响应的详细信息。
  • 异常捕获:自动捕获并记录应用程序运行时的异常。
  • 代码内日志:支持在业务代码中手动记录消息和事件。
  • 实时仪表盘:提供 Web 界面 (/watchdog) 查看日志,支持搜索和过滤。
  • 多种数据库支持:内置 LiteDB,支持一键切换至主流关系型数据库、MongoDB 与 SQLite。
  • 日志自动清理:支持配置定时自动清理旧日志。
  • AI 辅助分析(可选):装上附加包并在看板打开开关后,页面右下角出现悬浮助手,可直接用自然语言追问日志与异常;同一套数据也以 MCP 工具形式暴露给 Claude Desktop / Cursor 等外部客户端。核心包不引任何 AI 依赖,不装附加包时行为与之前完全一致。

截图预览

  • 登录页面

Login

  • 请求与响应查看器

请求和响应查看器

  • 异常日志示例

异常示例详情

安装

方式一:.NET CLI

安装 Layout.WatchDog.NET 核心包:

dotnet add package Layout.WatchDog.NET --version 1.5.0-beta.5

当前为预发布版,必须显式指定版本号(或加 --prerelease),否则默认只会装到稳定版。

如需使用外部数据库(MSSQL / MySQL / PostgreSQL / SQLite / MongoDB),额外安装对应的 Storage 扩展包:

# 例如使用 PostgreSQL
dotnet add package Layout.WatchDog.NET.Storages.PostgreSql --version 1.5.0-beta.5

可用 Storage 包:

驱动 包 ID
SQL Server Layout.WatchDog.NET.Storages.SqlServer
MySQL Layout.WatchDog.NET.Storages.MySql
PostgreSQL Layout.WatchDog.NET.Storages.PostgreSql
SQLite Layout.WatchDog.NET.Storages.Sqlite
MongoDB Layout.WatchDog.NET.Storages.MongoDb

默认 LiteDB 后端内置于核心包,无需额外安装。

如需 AI 能力,再按需安装两个可选包:

dotnet add package Layout.WatchDog.NET.Mcp   --version 1.5.0-beta.5   # 5 个只读日志查询工具(MCP)
dotnet add package Layout.WatchDog.NET.Agent --version 1.5.0-beta.5   # 巡检报告 + 看板内对话

方式二:NuGet 包管理器

Install-Package Layout.WatchDog.NET --version 1.5.0-beta.5
# 如需外部数据库,例如 PostgreSQL:
Install-Package Layout.WatchDog.NET.Storages.PostgreSql --version 1.5.0-beta.5

快速开始

1. 注册服务

在 Program.cs 中注册 WatchDog 服务。

using WatchDog;

// 在 Program.cs 中 (适用于 .NET 6+)
builder.Services.AddWatchDog(wd => wd
    .WithAuth("admin", "Qwerty@123"));

2. 配置中间件

在 HTTP 请求管道中启用 WatchDog 中间件。建议在 UseRouting, UseAuthentication, UseAuthorization 之后添加。

var app = builder.Build();

app.UseWatchDog();

异常日志中间件已由 UseWatchDog() 内部自动挂载,无需手动调用。

3. 查看日志

启动你的应用程序,访问 /watchdog 路径(例如:https://localhost:5000/watchdog),使用配置的用户名和密码登录即可查看实时日志。

记录日志

在代码的任何位置调用 WatchLogger:

using WatchDog;

// 记录普通信息
WatchLogger.Log("用户登录成功");

// 记录警告
WatchLogger.LogWarning("请求频率过高");

// 记录错误
WatchLogger.LogError("处理订单失败", eventId: "Order_001");

也可以把标准的 ILogger 日志汇总到 WatchDog:

// .NET 6+ 在 Program.cs 中配置
builder.Logging.AddWatchDogLogger();

更多文档

主题 文档
全部配置项(appsettings 绑定、Fluent Builder、看板、节点监控、AI 助手) 配置指南
数据库后端(连接串、表结构、分页与清表、压缩) 数据库后端接入指南
把日志能力暴露成 MCP 工具 MCP 接入指南
巡检报告与看板 AI 助手 Agent 接入指南
运行测试 test/README.md
各版本发布说明 Releases

项目结构

整体分三层:宿主进程内的请求管道与终结点、可按需替换的存储层、以及可选的 AI 扩展包。所有能力都在宿主进程内运行——没有独立服务,也没有第二个进程。

flowchart TB
    Browser["浏览器:独立看板 / 原内嵌页面"]
    ExtClient["Claude Desktop / Cursor"]
    Model["外部模型:OpenAI / Anthropic / Ollama"]

    subgraph Process["宿主进程 · WatchDog 全部在进程内"]
        Pipe["请求管道<br/>异常记录 → 路由 → 请求/响应记录 → 终结点"]
        subgraph Endpoints["终结点"]
            Legacy["/watchdog-legacy 原内嵌页面"]
            Dash["/watchdog 独立看板"]
            Api["/watchdog-api/v1/* JSON API"]
            Hub["/wtchdlogger SignalR"]
            Mcp["/watchdog-mcp MCP 工具"]
            Ai["/watchdog-ai/v1/* AI 助手"]
        end
        Services["核心服务<br/>WatchDogOptions / SkipRegistry / SessionAuth / LogIdGenerator"]
        Ana["IWatchDogAnalytics<br/>DefaultAnalytics:聚合、时间窗口、按 id 查单条"]
    end

    subgraph Store["存储层 · IWatchDogStorage(可替换)"]
        Lite["LiteDB(内置,零配置)"]
        Ext["SQLite / SQL Server / MySQL / PostgreSQL / MongoDB"]
    end

    Browser --> Dash
    Browser --> Api
    Browser --> Hub
    ExtClient --> Mcp
    Model --> Ai
    Ai --> Mcp
    Pipe --> Legacy
    Pipe --> Dash
    Pipe --> Api
    Pipe --> Hub
    Pipe --> Mcp
    Pipe --> Ai
    Api --> Ana
    Mcp --> Ana
    Ai --> Ana
    Pipe -- 写日志 --> Store
    Ana -- 读时间窗口 --> Store
    Services -. 配置 / 跳过前缀 / 会话校验 .-> Pipe

各模块说明:

  • src/WatchDog/:核心库源码(Layout.WatchDog.NET,内置 LiteDB 后端与看板嵌入资源宿主)。
    • Extensions/:AddWatchDog / UseWatchDog 入口与 Fluent Builder。
    • Validation/:启动期配置校验。
    • src/Controllers/:包含处理日志查看请求的控制器。
    • src/Storages/:默认 LiteDB 存储实现(IWatchDogStorage)。
    • src/Analytics/:可分析查询层(聚合、时间窗口、按 id 查单条)。
    • src/Helpers/:日志 ID 生成器、分页、节点指标采集等工具。
    • src/Hubs/:SignalR 集线器,用于实时推送日志。
    • src/Models/:数据模型定义与统一配置模型 WatchDogOptions。
    • src/Services/:后台自动清理服务等。
    • src/WatchPage/:内嵌前端页面(由 /WTCHDGstatics 提供)。
    • src/Dashboard/:Vue 看板构建产物(内嵌为资源)。
  • src/WatchDog.Storages.SqlServer/、.MySql/、.PostgreSql/、.Sqlite/、.MongoDb/:外部数据库 Storage 扩展包,各自只依赖一个驱动。
  • src/WatchDog.Mcp/:MCP Server 扩展包(Layout.WatchDog.NET.Mcp),同进程内嵌,暴露 5 个只读日志查询工具,不依赖任何模型。
  • src/WatchDog.Agent/:单 Agent 宿主扩展包(Layout.WatchDog.NET.Agent),把 MCP 端点包成可出报告的巡检 Agent,并给看板提供悬浮助手。
  • src/WatchDog.Dashboard/:独立看板前端源码(Vue 3 + Vite + Tailwind)。
  • samples/:API / MVC / MCP / Agent 示例宿主。
  • test/:单元测试工程(xunit.v3),运行方式见 test/README.md。

贡献

如果你发现了 Bug 或者希望增加新功能:

  1. Fork 本仓库。
  2. 创建你的特性分支 (git checkout -b feature/AmazingFeature)。
  3. 提交你的更改 (git commit -m 'Add some AmazingFeature')。
  4. 推送到分支 (git push origin feature/AmazingFeature)。
  5. 发起 Pull Request。

致谢


许可证:本项目采用 MIT 许可证。

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (8)

Showing the top 5 NuGet packages that depend on Layout.WatchDog.NET:

Package Downloads
Layout.WatchDog.NET.Storages.PostgreSql

WatchDog Storage extension for PostgreSQL. Register with UsePostgreSql(connectionString) inside AddWatchDog.

Layout.WatchDog.NET.Storages.MySql

WatchDog Storage extension for MySQL. Register with UseMySql(connectionString) inside AddWatchDog.

Layout.WatchDog.NET.Storages.Sqlite

WatchDog Storage extension for SQLite. Register with UseSqlite(connectionString) inside AddWatchDog.

Layout.WatchDog.NET.Storages.SqlServer

WatchDog Storage extension for Microsoft SQL Server. Register with UseSqlServer(connectionString) inside AddWatchDog.

Layout.WatchDog.NET.Storages.MongoDb

WatchDog Storage extension for MongoDB. Register with UseMongoDb(connectionString) inside AddWatchDog.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.5.0-beta.7 99 11/7/2026
1.5.0-beta.6 99 11/3/2026
1.5.0-beta.5 97 11/2/2026
1.5.0-beta.4 92 10/31/2026
1.5.0-beta.3 69 10/29/2026
1.5.0-beta.2 66 10/29/2026
1.5.0-beta.1 64 10/28/2026

1.5.0-beta.5 - 新增统一日志分析能力、MCP 扩展包,以及支持多供应商 / 多模型 / 历史归档的看板 AI 助手。
       核心包公共 API 无破坏性变更,现有项目升级只需改版本号。

       新增功能
       - 可分析查询层:IWatchDogAnalytics / DefaultAnalytics / LogQuery,服务端聚合健康摘要、时间趋势、最慢路径与 Top 异常;聚合算法只有一份,跨后端语义一致
       - 日志模型新增 DurationMs(毫秒耗时)与 TraceId(W3C 追踪号),请求与异常可按调用关联;4 个 SQL 后端首次启动自动补列,LiteDB 旧数据按 TimeSpent 回填
       - 新增包 Layout.WatchDog.NET.Mcp:5 个只读 MCP 工具,Streamable HTTP(Stateless),未配置任何模型也可用
       - 新增包 Layout.WatchDog.NET.Agent(仅 net10.0):巡检报告 + 看板悬浮助手,内置 OpenAI 兼容 / Anthropic / Ollama / Custom 四种供应商,同一供应商可并存多个模型
       - 看板新增 Features.Agent 开关与 capabilities.ai;AI 入口要求「开关打开」且「探测到 Agent 包」同时成立
       - 对话归档:正文落 md 文件、元信息进 WatchDog_ChatSession,支持列表分页、改名、单会话导出与多选打包
       - 新增 WithSkipPrefixes() / WatchDogOptions.ExtraSkipPrefixes;MCP 与 AI 端点自动登记为内部路径,不再写入日志表

       升级说明
       - 核心包 NuGet 依赖不变(仍是 LiteDB.Queryable + RecyclableMemoryStream),目标框架仍为 net8.0 / net10.0
       - 首次启动会创建 WatchDog_AiSettings / WatchDog_ChatSession 两张表并为日志表补列,建议升级前备份;旧日志的 DurationMs / TraceId 为空属预期
       - MCP 端点默认不带认证,定位是本机 / 内网诊断;对外暴露请在宿主侧追加授权中间件

       历史版本
       - 1.5.0-beta.4 - 配置模型统一为 Fluent Builder + 外部数据库驱动拆分为独立 Storage 包(破坏性升级)。
       - 1.5.0-beta.3 - 统一各数据库后端的日志 ID 策略为应用层雪花算法。
       - 1.5.0-beta.2 - 新增独立 Dashboard 看板(含服务器资源监控)与 SQLite 驱动支持。
       - 1.5.0-beta.1 - 包 ID 迁移为 Layout.WatchDog.NET,目标框架升级到 net8.0 / net10.0 双目标,并完成数据库层重构(分页下推、UTC 时间统一、雪花 ID)。

       更多版本说明与完整更新日志:https://gitee.com/dolayout/watch-dog/releases