【问题标题】:How to change the log level in semantic logging at run time?如何在运行时更改语义日志中的日志级别?
【发布时间】:2015-02-20 20:32:13
【问题描述】:

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

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

【问题讨论】:

    标签: c# semantic-logging


    【解决方案1】:

    首先,我强烈建议将out-of-process host 用于生产。造成这种情况的原因主要是performance related

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

    这是example configuration

    【讨论】:

      【解决方案2】:

      第一步是不要将所有代码都放在 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

      【讨论】:

        猜你喜欢
        • 2019-01-11
        • 2011-09-10
        • 2015-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-15
        相关资源
        最近更新 更多