Closed buehlerfa closed 1 year ago
Thank you for bringing this to my attention!
I created: https://github.com/elastic/ecs-dotnet/pull/295 which will treat Assembly.GetEntryAssembly();
as something that can return null (e.g in IIS it might do as well).
It also brings the default service discovery in line with what we do in https://github.com/elastic/apm-agent-dotnet
@Mpdreamz: Awesome! Any idea when we could expect a release with this change?
ECS integration/library project(s) (e.g. Elastic.CommonSchema.Serilog):Elastic.CommonSchema.Serilog,
ECS .NET assembly version (e.g. 1.4.2): 1.5.3
.NET framework / OS: netstandard2.0
Description of the problem, including expected versus actual behavior: I have a Powershell script that I attempt to run that creates an Ecs Text Formatted Log and either outputs that log to the console or to a file. I have found that this package works as expected when I am running in PowerShell 7, but it throws the following error when I attempt to run the same script in PowerShell 5.1.
System.NullReferenceException: Object reference not set to an instance of an object.
at Elastic.CommonSchema.EcsDocument.GetAssemblyVersion(Assembly assembly)
at Elastic.CommonSchema.EcsDocument.GetService()
at Elastic.CommonSchema.EcsDocument.CreateNewWithDefaults[TEcsDocument](Nullable1 timestamp, Exception exception, IEcsDocumentCreationOptions options)
at Elastic.CommonSchema.Serilog.LogEventConverter.ConvertToEcs[TEcsDocument](LogEvent logEvent, IEcsTextFormatterConfiguration1 configuration)
at Elastic.CommonSchema.Serilog.EcsTextFormatter1.Format(LogEvent logEvent, TextWriter output)
at Serilog.Sinks.SystemConsole.ConsoleSink.Emit(LogEvent logEvent)
Digging into the code, the issue originates with this call in the
EcsDocument.cs
->GetService()
method on the linevar entryAssembly = Assembly.GetEntryAssembly();
When calling
assembly.GetName();
on this Assembly object in theGetAssemblyVersion(Assembly assembly)
method, it throws a null exception.In PowerShell 7, if I output that value, it will read:
pwsh, Version=7.3.3.500
Any idea why theAssembly.GetEntryAssembly();
is not compatible with PowerShell 5.1?