【问题标题】:Can IsLoggingEnabled() change at runtime?IsLoggingEnabled() 可以在运行时更改吗?
【发布时间】:2011-02-09 11:49:43
【问题描述】:

我正在封装 EntLib 5 日志记录应用程序块。我在文档中看到,每次要记录时,都应该查看“IsLoggingEnabled()”。它是一种方法而不是属性的事实,告诉我这是一个需要一些时间才能完成的操作,但是......我可以将该值缓存在局部变量中并检查是否可以基于它进行记录?

干杯。

【问题讨论】:

    标签: windows logging enterprise-library enterprise-library-5


    【解决方案1】:

    您不能通过代码更改日志记录设置,如Enterprise Library Document 所述。但是您也可以在此处阅读:

    注意:
    Logging 配置的运行时更改 应用程序块是自动 在短时间内检测到,并且 日志堆栈已更新但是,你 无法在运行时修改日志堆栈 通过代码时间。有关详细信息 使用配置机制 您可以在运行时更新,请参阅 在运行时更新配置设置 时间。

    也就是说,虽然您不能以编程方式启用/禁用日志记录,但如果手动编辑配置,它可以在运行时更改。

    所以,这就是为什么您每次都需要访问 IsLoggingEnabled() 操作,并且缓存它的值不是一个好主意。

    【讨论】:

    • 我明白了。因此,在 Web 环境中不是问题,因为每次更改 web.config 时,iis 都会重置应用程序。但是在 Windows 应用程序或服务中,您可以更改这些值,然后就会出现问题。我说的对吗?
    • 好吧,看起来:msdn.microsoft.com/en-us/library/ff664640%28v=PandP.50%29.aspx "在 Windows 窗体应用程序中,您可以重新启动应用程序以使其读取所有新的配置信息。Web 窗体 (ASP.NET) 应用程序将检测并重新加载配置信息,但 ASP.NET 的标准行为会导致应用程序在您编辑配置文件时重新启动,从而导致应用程序的所有状态丢失。"
    • 您不能在运行时通过代码修改日志堆栈,但您可以在运行时通过代码修改配置,这会导致在运行时修改日志堆栈。 :)
    猜你喜欢
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 2012-12-07
    • 2011-01-25
    • 1970-01-01
    相关资源
    最近更新 更多