xamarin 如何在Android上使用MvvmCross和Serilog在运行时更改记录器配置

dgenwo3n  于 2023-02-17  发布在  Android
关注(0)|答案(1)|浏览(100)

我使用Xamarin.Forms和MvvmCross配置了ILogger,如下所示:

public class Setup : MvxFormsAndroidSetup<App, UI.App>
{
    ...

    protected override ILoggerProvider CreateLogProvider()
    {
        return new SerilogLoggerProvider();
    }

    protected override ILoggerFactory CreateLogFactory()
    {
        Serilog.Log.Logger = new LoggerConfiguration()
            .MinimumLevel.Is(_logEventLevel)
            .CreateLogger();

        return new SerilogLoggerFactory();
    }
    ...

其中 _logEventLevel 有一个默认值,所有内容都按预期记录。在运行时,我更改了此值,并希望注册一个新的Logger。如何使用更新后的 _logEventLevel 注册一个新的 LoggerConfiguration
我尝试调用 MvxSetup.InitializeLoggingServices(),但它仍然无法记录更新的MinimumLevel。
你知道吗?

xe55xuns

xe55xuns1#

从评论中你说你想改变配置是因为你想在运行时改变日志级别,因此你不需要示例化一个新的配置,你可以使用LogginLevelSwitch来代替。
这看起来就像这样:

SeriLogLevelSwitch.MinimumLevel = LogEventLevel.Information;
Log.Logger = new LoggerConfiguration()
    .MinimumLevel.ControlledBy(SeriLogLevelSwitch)

然后,您可以将SeriLogLevelSwitch.MinimumLevel更改为其他值:

SeriLogLevelSwitch.MinimumLevel = LogEventLevel.Error;

相关问题