【问题标题】:Should only error messages be logged?是否应该只记录错误消息?
【发布时间】:2023-03-19 01:14:01
【问题描述】:

我刚开始使用 NLog 和一般的日志记录,但我发现自己可能滥用它。我正在记录每一行代码,其中大部分是 Info 消息,但是在我的 try catch 场景中,或者如果某些内容为空,我将记录一个错误。最好记录什么?

我将它用于具有 2 个项目(1 个是 UI,另一个是类库)的 WPF 解决方案

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <!-- make sure to set 'Copy To Output Directory' option for this file -->
  <!-- go to http://nlog-project.org/wiki/Configuration_file for more information -->

  <targets>
        <target name="errorLog" xsi:type="File" fileName="${basedir}/error.txt" />
      <target name="infoLog" xsi:type="File" fileName="${basedir}/info.txt" />
    </targets>

    <rules>
        <logger name="*" level="Error" writeTo="errorLog" />
      <logger name="*" level="Info" writeTo="infoLog" />
    </rules>
</nlog>

【问题讨论】:

    标签: c# logging nlog


    【解决方案1】:

    NLog 支持日志级别的概念。

    最好使用低于错误的级别记录任何可能有助于追踪程序为何执行此操作的内容。部署应用程序时,在 NLog.config 中将所需的日志记录级别设置为错误。

    http://nlog-project.org/wiki/Log_Levels

    如果用户遇到意外问题,您可以将日志记录级别更改为例如信息并获取有关正在发生的事情的更多信息。

    话虽如此,每一行代码几乎肯定是矫枉过正。如果你走极端,你的代码就会被日志记录弄得乱七八糟。

    专注于应用程序中可能出现问题的地方。

    我个人的偏好是:

    • 使用 Trace 级别指示代码流向(进入方法、退出方法)
    • 使用信息级别指示关键计算的进度/步骤
    • 使用错误级别来指示应用程序可以从中恢复的意外情况
    • 使用致命级别表示发生了非常糟糕的事情并且应用程序即将关闭。

    【讨论】:

    • 非常感谢您的建议。我认为你也使用 NLog :)。
    • 您是否将日志文件分开?我的意思是类似于 info.log 或 error.log,然后根据错误类型写入 info 或错误?
    • 我将所有内容都写入一个日志文件(这样事件的顺序就很明显了),并将 ERROR 和 FATAL 写入一个单独的日志文件(这样我的监控软件可以更轻松地扫描文件并跟踪问题)。我还为 FATAL 错误设置了一个电子邮件日志目标,以便我立即收到一封电子邮件。
    • 啊,好的,我明白了。所以你基本上有 3 个日志,一个包含所有内容,一个用于错误和致命(或者你是否将错误和致命结合在一起)到一个日志中。我喜欢你知道顺序的想法。
    • 我个人结合了错误和致命错误。如果你有很多,还有其他问题:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-09
    • 2017-08-31
    • 2012-02-11
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多