• 【愚公系列】2022年12月 .NET CORE工具案例-性能监控工具WatchDog的使用



    前言

    所谓日志(Log)是指系统所指定对象的某些操作和其操作结果按时间有序的集合。每个日志文件由日志记录组成,每条日志记录描述了一次单独的系统事件。通常情况下,系统日志是用户可以直接阅读的文本文件,其中包含了一个时间戳和一个信息或者子系统所特有的其他信息。

    日志文件为服务器、工作站、防火墙和应用软件等IT资源相关活动记录必要的、有价值的信息,这对系统监控、查询、报表和安全审计是十分重要的。日志文件中的记录可提供以下用途:监控系统资源;审计用户行为;对可疑行为进行告警;确定入侵行为的范围;为恢复系统提供帮助;生成调查报告;为打击计算机犯罪提供证据来源。

    WatchDog 是一个使用 C# 开发的开源的轻量监控工具,它可以记录和查看 ASP.NET Core Web 和 WebApi 的实时消息、事件、异常、 Http 请求响应等。

    WatchDog功能特性主要有:

    • 实时 HTTP 请求和响应记录
    • 实时异常记录
    • 代码内消息和事件记录
    • 用户友好的查询页面
    • 身份验证
    • 数据定期清除

    相关网址:https://github.com/IzyPro/WatchDog

    一、性能监控工具WatchDog的使用

    1.安装包

    通过 .NET CLI 安装 WatchDog.NET

    dotnet addpackage WatchDog.NET --version 1.3.2
    
    • 1

    或者使用包管理器安装

    Install-Package WatchDog.NET --version 1.3.2
    
    • 1

    在这里插入图片描述

    2.添加引用

    默认使用本地文件数据库

    builder.Services.AddWatchDogServices();
    
    • 1

    也可以选择外部的 MSSQL, MySQL & PostgreSQL 数据库

    services.AddWatchDogServices(opt =>
    {
    	opt.SetExternalDbConnString = "DbConnString";
    	opt.SqlDriverOption = WatchDogSqlDriverEnum.PostgreSql;
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    3.配置 WatchDog 中间件

    //配置中间件
    app.UseWatchDog(opt =>
    {
        opt.WatchPageUsername = "admin";
        opt.WatchPagePassword = "123456";
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    4.运行程序

    4.1 登录页面

    访问 /watchdog 路径,账号密码就是中间件配置的
    在这里插入图片描述

    4.2 查看 Http 请求和响应

    访问https://localhost:7018/WeatherForecast/

    在这里插入图片描述
    在这里插入图片描述

    4.3 查看异常信息

    在这里插入图片描述

    4.4 记录日志信息

    using Microsoft.AspNetCore.Mvc;
    using WatchDog;
    
    namespace WebApiTest.Controllers
    {
        [ApiController]
        [Route("[controller]")]
        public class WeatherForecastController : ControllerBase
        {
            private static readonly string[] Summaries = new[]
            {
            "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
        };
    
            private readonly ILogger<WeatherForecastController> _logger;
    
            public WeatherForecastController(ILogger<WeatherForecastController> logger)
            {
                _logger = logger;
            }
    
            [HttpGet(Name = "GetWeatherForecast")]
            public IEnumerable<WeatherForecast> Get()
            {
                try
                {
                    throw new Exception("User is already registered!");
                }
                catch (Exception e)
                {
                    WatchLogger.Log(@$"我是看门狗日志:{e.Message}-{e.Data}");
                }
                
                return Enumerable.Range(1, 5).Select(index => new WeatherForecast
                {
                    Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
                    TemperatureC = Random.Shared.Next(-20, 55),
                    Summary = Summaries[Random.Shared.Next(Summaries.Length)]
                })
                .ToArray();
            }
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    在这里插入图片描述

  • 相关阅读:
    Android 运营商与APN配置简介
    森林防火系统集成解决方案
    【Seata】分布式事务框架原理解析
    Namomo Summer Camp 23 Day 1
    分布式存储分层:构建高效可靠的数据存储体系
    设计模式简介之几大原则
    分类预测 | Matlab实现QPSO-SVM、PSO-SVM、SVM多特征分类预测对比
    尚硅谷axios笔记——入门学习
    RHCSA --- Linux存储管理
    交通目标检测-行人车辆检测流量计数 - 计算机竞赛
  • 原文地址:https://blog.csdn.net/aa2528877987/article/details/128199648