Logging in Net-The Modern Way

介绍

文章都是来自于外国大佬的文章,我这边进行一个翻译,并加上一些自己的理解和解释。

源作者链接:https://medium.com/@uleluisrael/logging-in-net-the-modern-way-87c1b2f13ea5

正文

仍在记录到 .txt 文件?2022年?来吧!

不要笑,您登录到数据库并在每次需要检查日志时打开它。

如果您可以登录到数据库并在网页上查看日志会怎样?
好吧,你可以!😁

Checkout WatchDog是一个开源、轻量级、易于使用和高度可定制的 .NET 包,用于实时 HTTP 请求、响应和异常记录器和查看器以及代码内消息和日志事件。

具有搜索、过滤、分页、自动清除日志、记录到外部数据库(MSSQL、MySQL 和 Postgres)或轻量级数据库(LiteDB)、日志访问身份验证等功能。WatchDog 无疑是最好的日志记录工具之一.NET 开发人员。

其中一些功能包括:

  • 1.实时 HTTP 请求、响应和异常记录
  • 2.搜索和过滤
  • 3.身份验证/访问控制
  • 4.自动清除日志
  • 5.内部或外部数据库
  • 6.实时代码内消息和事件记录
  • 7.端点黑名单

使用

以下是它的工作原理,只需 2 个简单的步骤

步骤1

通过在包管理器 GUI 中搜索“ WatchDog.NET ”或在 CLI 上运行以下命令,从 nuget 商店安装 WatchDog.NET

dotnet add package WatchDog.NET --version 1.2.1

步骤2

如果您正在运行 .NET 5.0 或更早的项目

添加using WatchDog;到 using 语句块中startup.cs
在类的ConfigureServices()方法中添加以下代码行startup.cs

services.AddWatchDogServices();

[可选]在你的类的方法
开头添加以下代码行来记录异常Configure()startup.cs

app.UseWatchDogExceptionLogger();

Configure()最后,在类的方法中添加以下代码块startup.cs。查看日志时将使用用户名和密码进行身份验证。

app.UseWatchDog(opt => 
{ 
 opt.WatchPageUsername = "YOUR PREFERRED USERNAME"; 
 opt.WatchPagePassword = "YOUR PREFERRED  PASSWORD"; 
});

否则,如果您正在运行 .NET 6 或更新的项目

添加using WatchDog;到 using 语句块中program.cs
var app = builder.Build();在语句之前添加以下代码行

builder.Services.AddWatchDogServices();

[可选]在语句
之后添加以下代码行以记录异常var app = builder.Build();

app.UseWatchDogExceptionLogger();

var app = builder.Build();最后,在语句之后添加以下代码块。查看日志时将使用用户名和密码进行身份验证。

app.UseWatchDog(opt => 
{ 
 opt.WatchPageUsername = "YOUR PREFERRED USERNAME"; 
 opt.WatchPagePassword = "YOUR PREFERRED  PASSWORD"; 
});

PS:如果您的项目启动或程序类包含 app.UseMvc() 或 app.UseRouting() 那么 app.UseWatchDog() 应该紧随其后。如果您的项目启动或程序类包含 app.UseEndpoints() 那么 app.UseWatchDog() 应该在之前

瞧,您已经在项目中设置了日志记录💪🏾
您现在可以使用记录消息或事件

WatchLogger.Log("...WatchDog is awesome...");

要查看项目中发生的日志、请求、响应和异常,请运行您的应用程序并导航到[YOUR BASE URL]/watchdog. 例如localhost:7270/watchdog

插入时尚的标题

我确实提到了 WatchDog 包含了一些很棒的功能,让我们看看如何使用它们。

1. 黑名单

这免除了特定端点上的请求和响应日志记录。出于安全原因并防止任何用户登录数据的踪迹,应在登录/登录端点上使用此功能。要使用,请将用逗号分隔的单词或路由列表传递给blacklist参数,如下所示

app.UseWatchDog(opt => 
{ 
   opt.WatchPageUsername = "YOUR PREFERRED USERNAME"; 
   opt.WatchPagePassword = "YOUR PREFERRED  PASSWORD"; 
   opt.Blacklist = "Test/testPost, weatherforecast";
});

2.自动清除日志Default = true, Frequency = Weekly

通过将此值设置为 true,将在默认频率设置为每周后清除日志,也可以将其调整为每天、每周、每月或每季度清除。要防止日志自动清除,请设置isAutoClear = false.

请参阅下面的实现

3. 登录到外部数据库Default = LiteDB

通过传递连接字符串并选择驱动程序选项,您可以登录到您选择的本地或远程数据库。目前支持的数据库包括 MySQL、MSSQL 和 Postgres。

请参阅下面的实现

services.AddWatchDogServices(opt =>
{
    opt.ClearTimeSchedule = WatchDogAutoClearScheduleEnum.Monthly;
    opt.IsAutoClear = true;
    opt.SqlDriverOption = WatchDogSqlDriverEnum.MSSQL;
    opt.SetExternalDbConnString = "YOUR CONNECTION STRING";
});

对于 .NET 6 及更高版本,services将替换为builder.Services

查看官方文档:https://github.com/IzyPro/WatchDog

posted @ 2022-08-01 10:36  初久的私房菜  阅读(219)  评论(0编辑  收藏  举报
作者:初久的私房菜
好好学习,天天向上
返回顶部小火箭
好友榜:
如果愿意,把你的博客地址放这里
张弛:https://blog.zhangchi.fun/