serilog-contrib / Serilog.Enrichers.Sensitive

A Serilog LogEvent enricher that masks sensitive data
MIT License
111 stars 23 forks source link

[Feature Request] Allow to specify MaskValue per every Masking Operator, instead of "global" MaskValue #26

Closed sunnamed434 closed 1 year ago

sunnamed434 commented 1 year ago

Default configuration

{
    "Serilog": {
        "Using": [
            "Serilog.Enrichers.Sensitive"
        ],
        "Enrich": [
            {
                "Name": "WithSensitiveDataMasking",
                "Args": {
                    "options": {
                        "MaskValue": "***\\",
                        "MaskProperties": [ "file" ],
                        "MaskingOperators": [ "BitMono.Host.Extensions.FileMaskingOperator, BitMono.Host" ]
                    }
                },
            "FromLogContext"
        ],
        "MinimumLevel": "Debug"
    }
}

Add another Sensitive Data Operator

{
    "Serilog": {
        "Using": [
            "Serilog.Enrichers.Sensitive"
        ],
        "Enrich": [
            {
                "Name": "WithSensitiveDataMasking",
                "Args": {
                    "options": {
                        "MaskValue": "***\\",
                        "MaskProperties": [ "file" ],
                        "MaskingOperators": [ "BitMono.Host.Extensions.FileMaskingOperator, BitMono.Host" ]
                    }
                },
                "Name": "WithSensitiveDataMasking",
                "Args": {
                    "options": {
                        "MaskValue": "???\\",
                        "MaskProperties": [ "directory" ],
                        "MaskingOperators": [ "BitMono.Host.Extensions.DirectoryMaskingOperator, BitMono.Host" ]
                    }
                }
            },
            "FromLogContext"
        ],
        "MinimumLevel": "Debug"
    }
}

as a result: System.FormatException: A duplicate key 'Serilog:Enrich:0:Name' was found.

sunnamed434 commented 1 year ago

Ah, sorry, the feature was implemented automatically :D

{
    "Name": "WithSensitiveDataMasking",
    "Args": {
        "options": {
            "MaskValue": "***\\",
            "MaskProperties": [ "file" ],
            "MaskingOperators": [ "BitMono.Host.Extensions.FileMaskingOperator, BitMono.Host" ]
        }
    },
},
{
    "Name": "WithSensitiveDataMasking",
    "Args": {
        "options": {
            "MaskValue": "***\\",
            "MaskProperties": [ "directory" ],
            "MaskingOperators": [ "BitMono.Host.Extensions.DirectoryMaskingOperator, BitMono.Host" ]
        }
    }
},

Closing it