Destructurama.Attributed 项目教程
1. 项目介绍
Destructurama.Attributed 是一个开源项目,旨在通过使用属性(attributes)来控制复杂类型在 Serilog 日志中的记录方式。该项目允许开发者通过在类或属性上应用特定的属性,来定制日志记录的行为,例如更改属性名称、忽略特定属性、或对属性值进行掩码处理。
2. 项目快速启动
安装
首先,通过 NuGet 安装 Destructurama.Attributed
包:
Install-Package Destructurama.Attributed
配置
在 Serilog 的日志配置中启用属性控制:
using Destructurama;
using Serilog;
var log = new LoggerConfiguration()
.Destructure.UsingAttributes()
.CreateLogger();
使用示例
更改属性名称
通过 LogWithName
属性更改日志中属性的名称:
public class PersonalData
{
[LogWithName("FullName")]
public string Name { get; set; }
}
忽略属性
通过 NotLogged
属性忽略日志中的特定属性:
public class LoginCommand
{
public string Username { get; set; }
[NotLogged]
public string Password { get; set; }
}
3. 应用案例和最佳实践
案例1:敏感信息掩码
在日志中记录用户登录信息时,通常需要对密码等敏感信息进行掩码处理。使用 LogMasked
属性可以轻松实现这一点:
public class LoginCommand
{
public string Username { get; set; }
[LogMasked]
public string Password { get; set; }
}
案例2:忽略默认值
在某些情况下,可能希望忽略具有默认值的属性。使用 NotLoggedIfDefault
属性可以实现这一需求:
public class LoginCommand
{
public string Username { get; set; }
[NotLoggedIfDefault]
public string Password { get; set; }
[NotLoggedIfDefault]
public DateTime TimeStamp { get; set; }
}
4. 典型生态项目
Serilog
Destructurama.Attributed
是 Serilog 生态系统的一部分,Serilog 是一个流行的 .NET 日志库,提供了灵活且强大的日志记录功能。
Destructurama
Destructurama
是一个系列项目,旨在扩展 Serilog 的功能,使其能够更好地处理复杂类型的日志记录。Destructurama.Attributed
是其中之一,专注于通过属性来控制日志记录行为。
通过结合使用这些项目,开发者可以更灵活地定制日志记录,满足不同场景下的需求。