7

I have the following appsettings.json configuration:

{
    "Serilog": {
        "Using": [],
        "MinimumLevel": {
            "Default": "Information",
            "Override": {
                "Microsoft": "Warning",
                "System": "Warning"
            }
        },
        "Enrich": [ "FromLogContext", "WithMachineName" ],
        "WriteTo": [
            {
                "Name": "File",
                "Args": {
                    "path": "C:\\Logs\\log.json",
                    "formatter": "Serilog.Formatting.Elasticsearch.ElasticsearchJsonFormatter, Serilog.Formatting.Elasticsearch"
                }
            }
        ]
    }
}

What I am trying to configure in the above appsettings.json file would be represented in C# as something like this:

Log.Logger = new LoggerConfiguration()
    .ReadFrom.Configuration(configuration)
    .WriteTo.File(new ElasticsearchJsonFormatter(inlineFields:true, renderMessageTemplate: false), @"C:\logs\log.json")
    .CreateLogger();

I need to set "inlineFields" equal to true and "renderMessageTemplate" equal to false as overrides in my appsettings.json file on the ElasticsearchJsonFormatter instance. Is there a way to do that in the appsettings.json file so that I can keep my configuration out of C#?

Nkosi
  • 235,767
  • 35
  • 427
  • 472
Rob Packwood
  • 3,698
  • 4
  • 32
  • 48

2 Answers2

4

I asked this question on GitHub: https://github.com/serilog/serilog-sinks-file/issues/138

No way :(

xneg
  • 1,204
  • 15
  • 24
2

They added this feature in Serilog.Settings.Configuration -v 3.3.0-dev-00291.

Serilog__WriteTo__Console__Name=Console
Serilog__WriteTo__Console__Args__formatter__type="Serilog.Templates.ExpressionTemplate, Serilog.Expressions"
Serilog__WriteTo__Console__Args__formatter__template="[{@t:HH:mm:ss} {@l:u3} {Coalesce(SourceContext, '<none>')}] {@m}\n{@x}"
[22:38:40 INF My.Foo.FooClient] HELLO WORLD

links

leftiness
  • 123
  • 7