Logging Framework
Programmatic Configuration
// Example 1: Console target via built-in provider.
var consoleLogger = LoggerFactory.Create(lb =>
{
lb.ClearProviders();
lb.AddConsole();
lb.AddFilter("Demo", LogLevel.Debug);
lb.SetMinimumLevel(LogLevel.Information);
});
// Example 2: Pretty File target via Serilog (text template).
var filePrettyFactory = LoggerFactory.Create(lb =>
{
var serilogConfig = new LoggerConfiguration()
.MinimumLevel.Information()
.WriteTo.File("App_Data/logs/activity-pretty-.log",
rollingInterval: RollingInterval.Day,
outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj}{NewLine}{Exception}")
.CreateLogger();
lb.ClearProviders();
lb.AddFilter("Demo", LogLevel.Debug);
lb.AddSerilog(serilogConfig, dispose: true);
});
// Example 3. JSON File target via Serilog (compact JSON).
var fileJsonFactory = LoggerFactory.Create(lb =>
{
var serilogJson = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.File(new CompactJsonFormatter(), "App_Data/logs/activity-json-.log",
rollingInterval: RollingInterval.Day)
.CreateLogger();
lb.ClearProviders();
lb.AddSerilog(serilogJson, dispose: true);
});
// Enable the Logging Framework.
elsa.UseLoggingFramework(logging =>
{
// Add sinks manually using factories defined in the 3 examples above.
logging.AddLogSink(new LoggerSink("Console (via code)", consoleLogger));
logging.AddLogSink(new LoggerSink("File (pretty)", filePrettyFactory));
logging.AddLogSink(new LoggerSink("File (JSON)", fileJsonFactory));
// Alternative to defining sinks hardcoded as done above, we can get sinks from configuration.
logging.UseConsole(); // Installs the Console Log Sink Factory.
logging.UseSerilog(); // Installs the Serilog Log Sink Factory.
// Bind the "LoggingFramework:Defaults" section. Default sinks are used when the Log activity doesn't specify what sinks to write to.
logging.ConfigureDefaults(options => configuration.GetSection("LoggingFramework").Bind(options));
});Configuration via appsettings.json
Log Levels and Categories
Log Activity
Extending with Custom Sinks
References
Last updated