Конфигурация Serilog на основе кода в Умбрако - PullRequest
1 голос
/ 03 мая 2019

Я следую рекомендациям для настройки Serilog через C # вместо файла конфигурации.Это для приложения Umbraco 8 .

В рекомендациях указано, что мне нужно наследовать от UmbracoApplication, а затем переопределить метод GetLogger ():

public class FineTuneLogging : UmbracoApplication
{
    protected override ILogger GetLogger()
    {
        var loggerConfig = new LoggerConfiguration();
        loggerConfig
            .Enrich.WithProperty("MyProperty", "whatIWant")
            .MinimalConfiguration()
            .OutputDefaultTextFile(LogEventLevel.Error)
            .OutputDefaultJsonFile(LogEventLevel.Information)
            .ReadFromConfigFile()
            .ReadFromUserConfigFile();

        return new SerilogLogger(loggerConfig);
    }
}

Однако,GetLogger () не найден в дереве наследования.

Документы устарели или я что-то упустил?

1 Ответ

1 голос
/ 03 мая 2019

Вы должны переопределить GetRuntime

public class FineTuneLogging : UmbracoApplication
{
    protected override IRuntime GetRuntime()
    {
        return new FineTuneLoggingRuntime(this);
    }
}

public class FineTuneLoggingRuntime : WebRuntime
{
    public FineTuneLoggingRuntime(UmbracoApplicationBase umbracoApplication) : base(umbracoApplication) { }

    protected override ILogger GetLogger()
    {
        var loggerConfig = new LoggerConfiguration();
        loggerConfig
            .Enrich.WithProperty("MyProperty", "whatIWant")
            .MinimalConfiguration()
            .OutputDefaultTextFile(LogEventLevel.Error)
            .OutputDefaultJsonFile(LogEventLevel.Information)
            .ReadFromConfigFile()
            .ReadFromUserConfigFile();

        return new SerilogLogger(loggerConfig);
    }
}
...