EgonsoftHU.Extensions.Logging.Serilog
2.0.0
Requires NuGet 4.7.0 or higher.
dotnet add package EgonsoftHU.Extensions.Logging.Serilog --version 2.0.0
NuGet\Install-Package EgonsoftHU.Extensions.Logging.Serilog -Version 2.0.0
<PackageReference Include="EgonsoftHU.Extensions.Logging.Serilog" Version="2.0.0" />
paket add EgonsoftHU.Extensions.Logging.Serilog --version 2.0.0
#r "nuget: EgonsoftHU.Extensions.Logging.Serilog, 2.0.0"
// Install EgonsoftHU.Extensions.Logging.Serilog as a Cake Addin #addin nuget:?package=EgonsoftHU.Extensions.Logging.Serilog&version=2.0.0 // Install EgonsoftHU.Extensions.Logging.Serilog as a Cake Tool #tool nuget:?package=EgonsoftHU.Extensions.Logging.Serilog&version=2.0.0
EgonsoftHU.Extensions.Logging.Serilog
Summary
- Enrich log events with multiple properties at once using
PropertyBagEnricher
. - Enrich log events with the name of the source member (method, property, etc.) in which the log event occurs.
ILogger.Here()
extension method.PropertyBagEnricher.CreateForSourceMember()
static factory method.PropertyBagEnricher.Here()
instance method.
- Populate
Exception.Data
dictionary with the log event properties.Exception.Populate(PropertyBagEnricher)
extension method.
Breaking change
The project namespace has changed to avoid namespace collision with Serilog
.
Please note: The package id will remain unchanged.
Version | Namespace |
---|---|
>= 1.0.0 && < 2.0.0 |
EgonsoftHU.Extensions.Logging.Serilog |
>= 2.0.0 |
EgonsoftHU.Extensions.Logging |
SourceMember property
When you create a logger by calling Log.Logger.ForContext<T>()
then the log events will contain a
SourceContext
property with the type name where the log event occurs.
This project helps you add a SourceMember
property with the member name of the type where the log event occurs.
The SourceMember
property name can be customized.
using EgonsoftHU.Extensions.Logging;
using Serilog;
namespace SomeCompany;
public class SomeService
{
// Calling ForContext<SomeService>() will add the log event property below:
// "SourceContext": "SomeCompany.SomeService"
private static readonly ILogger logger = Log.Logger.ForContext<SomeService>();
public void DoSomething()
{
logger
.Here() // Adds the log event property: "SourceMember": "DoSomething"
.Verbose("Something has been done.");
}
}
PropertyBagEnricher : Serilog.Core.ILogEventEnricher
Each time you add a log event property (e.g. logger.ForContext("SomeProperty", 42)
) a new logger instance will be created.
This enricher helps you reducing creating logger instances by adding multiple log event properties at once.
using EgonsoftHU.Extensions.Logging;
using Serilog;
IDictionary<string, object> additionalProperties = /* omitted for clarity */
var enricher =
PropertyBagEnricher
.CreateForSourceMember() // Equivalent to calling .Create().Here()
.Add("Property1", 1)
.Add("Property2", "2")
.AddRange(additionalProperties);
Log.Logger.ForContext(enricher).Verbose("Log message with properties.");
Exception.Data population
Exception.Data
dictionary can contain additional user-defined information about the exception.
The log event properties the enricher contains can be populated into the Exception.Data
dictionary using the Exception.Populate(PropertyBagEnricher)
extension method.
using EgonsoftHU.Extensions.Logging;
IDictionary<string, object> additionalProperties = /* omitted for clarity */
var enricher =
PropertyBagEnricher
.Create()
.Add("Property1", 1)
.Add("Property2", "2")
.AddRange(additionalProperties);
// Exception.Data dictionary will contain all the properties above.
// The extension method returns the exception itself,
// hence you can use it directly in a `throw` statement or expression.
throw new InvalidOperationException("Invalid operation.").Populate(enricher);
More information
Learn more at https://github.com/gcsizmadia/EgonsoftHU.Extensions.Logging.Serilog
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 is compatible. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
.NET Framework | net461 is compatible. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETCoreApp 3.1
- EgonsoftHU.Extensions.Bcl (>= 2.0.0)
- Serilog (>= 2.12.0)
-
.NETFramework 4.6.1
- EgonsoftHU.Extensions.Bcl (>= 2.0.0)
- Serilog (>= 2.12.0)
-
.NETStandard 2.0
- EgonsoftHU.Extensions.Bcl (>= 2.0.0)
- Serilog (>= 2.12.0)
-
.NETStandard 2.1
- EgonsoftHU.Extensions.Bcl (>= 2.0.0)
- Serilog (>= 2.12.0)
-
net6.0
- EgonsoftHU.Extensions.Bcl (>= 2.0.0)
- Serilog (>= 2.12.0)
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
2.0.0 | 2 | 11/5/2022 |
2.0.0-prerelease-2 | 2 | 11/1/2022 |
2.0.0-prerelease-1 | 1 | 11/1/2022 |
Please visit https://github.com/gcsizmadia/EgonsoftHU.Extensions.Logging.Serilog/releases to view the release notes.