如何在 运行 时间更改语义日志记录中的日志级别?

How to change the log level in semantic logging at run time?

如何使用语义日志记录在 运行 时间更改日志级别?

在我的 Global.asax Application_Startup 中,我有以下代码:

        var listener = new ObservableEventListener();
        listener.EnableEvents((EventSource) MyCustomEventSource.Log, EventLevel.Informational, Keywords.All);
        listener.LogToRollingFlatFile(@"logs\events.json", 5000, "MM-dd-yyyy",
            RollFileExistsBehavior.Increment,
            RollInterval.Week,
            new JsonEventTextFormatter(), 4);

我的进程启动后如何更改日志级别。我的支持团队可能希望在故障排除会话期间将日志记录打开为 Verbose,然后在发现问题后将其关闭。他们希望在不停止或重新启动流程的情况下执行此操作。

第一步是不要将所有代码都放在 Application_Startup 中,因为它只在启动应用程序时运行。 8)

第二步是取出硬编码的 'EventLevel.Informational',并使用从配置文件读入的 属性。

第三步是在该配置文件上注册一个监视,以便在更新文件时调用您的代码,并且您可以修改日志记录级别。

稍后有机会我会添加代码,但这些步骤应该能让您有所了解。沿着这些线的东西...... Watching log4net log file with FileSystemWatcher

MSDN:https://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher(v=vs.110).aspx

首先,我强烈推荐使用out-of-process host for production. The reasons for this are primarily performance related

Dynamic configuration是进程外服务的一个特性。您需要做的就是修改相应 <eventSource /> 上的 level 属性,更改应该会自动生效。

这是一个 example configuration