Skip to content

serilog/serilog-settings-appsettings

Repository files navigation

Serilog.Settings.AppSettings Build status NuGet Version Join the chat at https://gitter.im/serilog/serilog

An XML <appSettings> reader for Serilog.

Getting started

The <appSettings> support package needs to be installed from NuGet:

Install-Package Serilog.Settings.AppSettings

To read configuration from <appSettings> use the ReadFrom.AppSettings() extension method on your LoggerConfiguration:

Log.Logger = new LoggerConfiguration()
  .ReadFrom.AppSettings()
  ... // Other configuration here, then
  .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 app settings.

Configuration syntax

To configure the logger, an <appSettings> element should be included in the program's App.config or Web.config file.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="serilog:minimum-level" value="Verbose" />
    <!-- More settings here -->

Serilog settings are prefixed with serilog:.

Setting the minimum level

To set the logging level for the app use the serilog:minimum-level setting key.

    <add key="serilog:minimum-level" value="Verbose" />

Valid values are those defined in the LogEventLevel enumeration: Verbose, Debug, Information, Warning, Error, Fatal.

Adding a sink

Sinks are added with the serilog:write-to key. The setting name matches the configuration method name that you'd use in code, so the following are equivalent:

    .WriteTo.Console()

In XML:

    <add key="serilog:write-to:Console" />

NOTE: When using serilog:* keys need to be unique.

Sink assemblies must be specified using the serilog:using syntax. For example, to configure

<add key="serilog:using:Console" value="Serilog.Sinks.Console" />
<add key="serilog:write-to:Console"/>

If the sink accepts parameters, these are specified by appending the parameter name to the setting.

    .WriteTo.File(@"C:\Logs\myapp-{Date}.txt", retainedFileCountLimit: 10)

In XML:

    <add key="serilog:write-to:File.path" value="C:\Logs\myapp-{Date}.txt" />
    <add key="serilog:write-to:File.retainedFileCountLimit" value="10" />

Any environment variables specified in a setting value (e.g. %TEMP%) will be expanded appropriately when read.

Using sink extensions from additional assemblies

To use sinks and enrichers from additional assemblies, specify them with a serilog:using key.

For example, to use configuration from the Serilog.Sinks.EventLog assembly:

    <add key="serilog:using:EventLog" value="Serilog.Sinks.EventLog" />
    <add key="serilog:write-to:EventLog.source" value="Serilog Demo" />

Enriching with properties

To attach additional properties to log events, specify them with the serilog:enrich:with-property directive.

For example, to add the property Release with the value "1.2-develop" to all events: