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