I am running a .NET Core 3.1 application in a docker container. The application uses Serilog and I set up the logging like this:
var loggerConfig = new LoggerConfiguration()
.MinimumLevel.Information()
.MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
.MinimumLevel.Override("System", LogEventLevel.Error)
.Enrich.WithThreadId()
.Enrich.WithThreadName()
.Enrich.WithNewRelicLogsInContext()
.WriteTo.Console(new NewRelicFormatter());
Log.Logger = loggerConfig.CreateLogger();
The logs show up in the container logs like this:
{"log":"{\"timestamp\":1588153750962,\"log.level\":\"Information\",\"message.template\":\"Import finished; took 188 ms.\",\"message\":\"Import finished; took 188 ms.\",\"Message.Properties.ThreadId\":37,\"entity.name\":\"DataImporter\",\"entity.type\":\"SERVICE\",\"entity.guid\":\"MjQ5OTM5N3xBUE18QVBQTElDQVRJT058MzU3OTIwNDg\",\"hostname\":\"658d5e66a89d....\"}\n","stream":"stdout","time":"2020-04-29T09:49:10.96280617Z"}
{"log":"{\"timestamp\":1588153760772,\"log.level\":\"Information\",\"message.template\":\"Import started...\",\"message\":\"Import started...\",\"Message.Properties.ThreadId\":63,\"entity.name\":\"DataImporter\",\"entity.type\":\"SERVICE\",\"entity.guid\":\"MjQ5OTM5N3xBUE18QVBQTElDQVRJT058MzU3OTIwNDg\",\"hostname\":\"658d5e66a89d....\"}\n","stream":"stdout","time":"2020-04-29T09:49:20.773183208Z"}
{"log":"{\"timestamp\":1588153760947,\"log.level\":\"Information\",\"message.template\":\"Import finished; took 174 ms.\",\"message\":\"Import finished; took 174 ms.\",\"Message.Properties.ThreadId\":63,\"entity.name\":\"DataImporter\",\"entity.type\":\"SERVICE\",\"entity.guid\":\"MjQ5OTM5N3xBUE18QVBQTElDQVRJT058MzU3OTIwNDg\",\"hostname\":\"658d5e66a89d....\"}\n","stream":"stdout","time":"2020-04-29T09:49:20.948214369Z"}
And they are shipped through New Relic Infrastructure agent to NewRelic. I do see them like this:
But I cannot query them with
entity.guid:MjQ5OTM5N3xBUE18QVBQTElDQVRJT058MzU3OTIwNDg
only with “fulltext” search like
MjQ5OTM5N3xBUE18QVBQTElDQVRJT058MzU3OTIwNDg