【问题标题】:Enable/Disable Enterprise Library logging on production在生产中启用/禁用企业库日志记录
【发布时间】:2011-07-01 22:50:57
【问题描述】:

在我的生产中,我不希望日志条目的严重性为 Verbose(或 Debug)。我只需要信息、错误等。启用和禁用日志记录(调试条目)的正确方法是什么?

我做了一些研究,一种可能性是使用自定义过滤器类来启用和禁用所有严重程度为“详细”的日志。但是在生产环境中部署应用程序时,启用和禁用的正确方法是什么?

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-2 logging enterprise-library


    【解决方案1】:

    您不必使用自定义过滤器。假设您定义了一个类别,那么您只需设置要记录的Severity or SourceLevel。听起来您想将 SourceLevel 设置为 Information,“允许通过关键、错误、警告和信息事件”。

    在配置中,这看起来像:

    <categorySources>
        <add switchValue="Information" name="General">
            <listeners>
                <add name="Formatted EventLog TraceListener" />
            </listeners>
        </add>
    </categorySources>
    

    就最佳实践而言,没有一种正确的方法。通常,您可能会启用记录所需的尽可能少的信息以正确支持应用程序。这取决于您在应用程序中放置的日志记录类型。对于大多数应用程序,这可能是InformationWarning。但是,其他因素可能会影响这一点,包括当前的应用程序稳定性、操作要求等。

    【讨论】:

    • 可能的过滤细节在thejoyofcode.com/…中有很好的描述
    • @MichaelFreidgeim,我喜欢这个图表——很容易看到流程。
    • 请注意,'categorySources' 中的 'add' 元素中的 'name' 属性并不是要保存要添加的 categorySource 的名称,而是要保存的类别的名称事件条目来自。即“General”是上例中的类别名称,而不是 categorySource 的名称。
    【解决方案2】:

    您可以在配置文件中设置日志记录级别,这样,如果您在生产中出于任何原因需要它,您可以随时打开它。

    【讨论】:

    • 这绝对不是唯一的方法。但这很常见。采用自动化方式应用每个环境的配置更改是最佳实践。手动更改配置值不会,但是根据环境更改 web.config 中的值的想法是一个完全有效的解决方案。
    • 您能解释一下应用配置更改的自动化方式吗?我正在寻找的是一种为已部署的应用程序启用和禁用“调试”日志记录的方法。当出现问题时,添加一个新补丁,我们需要保持 DEBUG 开启几个小时。
    【解决方案3】:

    您可以在 web.config.release 和 web.config.debug 文件中设置不同的级别。你可以阅读更多here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-27
      • 1970-01-01
      相关资源
      最近更新 更多