Destructurama.Attributed 项目教程

Destructurama.Attributed 项目教程

attributed Use attributes to control how complex types are logged to Serilog. 项目地址: https://gitcode.com/gh_mirrors/att/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 是其中之一,专注于通过属性来控制日志记录行为。

通过结合使用这些项目,开发者可以更灵活地定制日志记录,满足不同场景下的需求。

attributed Use attributes to control how complex types are logged to Serilog. 项目地址: https://gitcode.com/gh_mirrors/att/attributed

io.netty.util.AttributeKey是Netty网络编程框架中的一个类,用于在Channel的属性(Attribute)中存储和获取特定的键值对信息。通过 AttributeKey,我们可以给Channel动态地添加属性,并在需要的时候获取这些属性的值。 在Netty中,每个Channel都有一个对应的AttributeMap,它是一个存储属性的容器。我们可以通过AttributeKey来定义属性的键,然后将键值对存储在AttributeMap中。这样,在整个Channel的生命周期内,我们都可以通过AttributeKey来获取和修改这些属性的值。 AttributeKey的定义是通过泛型实现的,例如: ```java public class AttributeKey<T> extends UniqueName {} ``` 其中,T代表属性值的类型。我们可以使用AttributeKey.valueOf(String name)方法来创建一个AttributeKey对象,例如: ```java AttributeKey<Integer> ageKey = AttributeKey.valueOf("age"); ``` 然后,我们可以通过Channel的attr(AttributeKey<T> key)方法来访问和操作Channel的属性,例如: ```java channel.attr(ageKey).set(25); int age = channel.attr(ageKey).get(); ``` 通过上述代码,我们给Channel添加了一个名为"age"的属性,并将其值设置为25。然后,我们又通过AttributeKey对象获取了该属性的值,并赋给了age变量。 总结来说,io.netty.util.AttributeKey是Netty中用于定义和访问Channel属性的类,它为我们提供了一种便捷的方式来存储和获取与Channel相关的自定义信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马冶娆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值