2

次のクラスの場合、Credentials プロパティが Serilog によってログに記録されないようにするにはどうすればよいですか?

public class SmtpConfigInfo
{
    public string SmtpHostName { get; set; }

    public int Port { get; set; }

    [NotLogged]
    public System.Net.ICredentialsByHost Credentials { get; set; }
}

理想的には、資格情報の「パスワード」プロパティのみを抑制できるようにしたいと考えています。そうでない場合は、資格情報全体が今のところ抑制されていることを確認しても問題ありません。しかし、以下のようにSerilogでログインすると、

seriLogger.Error("{@ConfigInfo}", MySmtpConfigInfo)

[NotLogged] 属性は無視され、UserName と Password を含む Credentials のすべてのプロパティが平文で表示されます。Credentials プロパティが UserName プロパティと Password プロパティに分割されている場合、[NotLogged] を Password に適用すると機能する可能性があることを示すドキュメントを見ました。「Serilog.Extras.Attributed」を使用する唯一のオプションですか? どうもありがとう!

4

1 に答える 1

3

NotLogged追加する必要がある属性を有効にするには.Destructure.UsingAttributes()、これが欠落している場合、属性は無視されます。

例:

var log = new LoggerConfiguration()
    .Destructure.UsingAttributes()
    .CreateLogger();

または、長い形式のソリューションは次のようなものです。

var log = new LoggerConfiguration()
    .Destructure.ByTransforming<SmtpConfigInfo>(info => new {
        info.SmtpHostName,
        info.SmtpPort,
        Credentials = new { UserName = info.Credentials.UserName }
    })
    .CreateLogger();
于 2015-02-24T21:50:20.767 に答える