1

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

在我的 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,然后在发现问题后将其关闭。他们希望在不停止或重新启动流程的情况下执行此操作。

4

2 回答 2

3

首先,我强烈建议使用进程外主机进行生产。其原因主要与性能有关

动态配置是进程外服务的一个特性。您需要做的就是修改相应的level属性,<eventSource />并且应该自动拾取更改。

这是一个示例配置

于 2015-02-24T00:38:57.283 回答
1

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

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

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

以后有机会我会添加代码,但这些步骤应该会给你一个想法。这些方面的东西...... 使用 FileSystemWatcher 观看 log4net 日志文件

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

于 2015-02-20T22:05:36.400 回答