An XML config reader for Serilog.
XML based configuration can be more suitable for some projects, because:
- xml transformations can be used
- out of the box support in MS Deploy and Octopus Deploy
- configuration consistency in leagacy (not .NET Core) projects
The package needs to be installed from NuGet:
Install-Package Serilog.Settings.Xml
To read configuration from xml configuration file use the ReadFrom.Xml(filePath)
extension method on your LoggerConfiguration
:
Log.Logger = new LoggerConfiguration()
.ReadFrom.Xml("serilog.config")
... // Other configuration here
.CreateLogger()
You can mix and match XML and code-based configuration, but each sink must be configured either using XML or in code - sinks added in code can't be modified via config file.
<?xml version="1.0" encoding="utf-8" ?>
<serilog>
<using>
<add name="Serilog.Enrichers.Thread" />
<add name="Serilog.Enrichers.Process" />
<add name="Serilog.Enrichers.Environment" />
<add name="Serilog.Sinks.File" />
</using>
<enrich>
<enricher name="FromLogContext" />
<enricher name="WithMachineName" />
<enricher name="WithThreadId" />
<enricher name="WithProcessId" />
<enricher name="WithEnvironmentUserName" />
</enrich>
<properties>
<property name="Application" value="Sample" />
<property name="Path" value="%PATH%" />
</properties>
<minimumLevel default="Information">
<override name="Microsoft" level="Warning" />
<override name="Microsoft.AspNetCore.Mvc" level="Error" />
</minimumLevel>
<writeTo>
<sink name="File">
<arg name="path" value="%TEMP%/Logs/serilog-configuration-sample.txt" />
</sink>
</writeTo>
</serilog>