Есть также интересная запись в блоге от Эндрю Лока: Behind [LogProperties] и новый генератор источников журналирования телеметрии
Он отлично работает для классов (и записей без свойств, как в сообщении блога), и данные не отображаются в журналах:
Код: Выделить всё
public class DummyClass()
{
[MyTaxonomyClassifications.PrivateInformation]
public string Name { get; private set; } = "confidential";
public int Age { get; private set; } = 42;
}
Код: Выделить всё
public record DummyRecord()
{
// cannot compile LogExtension.LogPrivateDummyRecord. error:
// Partial method 'LogExtension.LogPrivateDummyRecord(ILogger, DummyRecord)' must have an implementation part because it has accessibility modifiers.
[MyTaxonomyClassifications.PrivateInformation]
public string Name { get; private set; } = "confidential";
public int Age { get; private set; } = 42;
}
Код: Выделить всё
public record DummyRecord()
{
[field: MyTaxonomyClassifications.PrivateInformation]
public string Name { get; private set; } = "confidential";
public int Age { get; private set; } = 42;
}
Код: Выделить всё
public static partial class LogExtension
{
[LoggerMessage(0, LogLevel.Warning, "DummyClass: {Data}")]
public static partial void LogPrivateDummyClass(
this ILogger logger,
[LogProperties]
DummyClass Data);
[LoggerMessage(0, LogLevel.Warning, "DummyRecord: {Data}")]
public static partial void LogPrivateDummyRecord(
this ILogger logger,
[LogProperties]
DummyRecord Data);
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... d-property
Мобильная версия