【问题标题】:Logging conventions [closed]日志记录约定[关闭]
【发布时间】:2008-10-02 16:45:24
【问题描述】:

您对 log4j 或类似库中的日志类别使用什么约定? 通常您将类名视为类别,但您是否使用过其他系统?

日志级别呢?您使用什么级别以及在哪种情况下使用?

更新:正如你们中的一些人回答的那样,没有“正确”的答案。我只是在寻找人们使用哪些不同的惯例作为可能的灵感来源。

【问题讨论】:

    标签: java logging log4j


    【解决方案1】:

    我有 3 个级别:错误、警告和详细日志,说明程序一次在做什么。

    我使用类+函数作为上下文。

    【讨论】:

      【解决方案2】:

      我同意Vaibhav's answer:你必须知道你为什么要记录。

      • 对于调试内部技术调试信息,log4j 或任何其他库都可以(只要它们的使用不会人为地增加函数的 cyclomatic complexity
      • 对于横向准时日志记录(跨整个代码),一些Aspect-Oriented approach 更适合
      • 对于监控,您进入了另一个完整的日志记录级别,即KPI,需要通过发布总线(例如 TIBCO)将这些信息记录到某种数据库。

      因此,仅对于内部日志记录,我们遵循非常标准的方法:

      • 严重影响程序的任何错误
      • 跟踪内部进程的信息
      • 一些子步骤的细节很好

      粒度(对于经典内部日志记录)是主要类,负责流程的主要步骤。

      【讨论】:

        【解决方案3】:

        多年来,我们对此进行了广泛的辩论,我们唯一一致同意的是,没有完美的答案!

        我们决定使用顶级类别名称来区分广泛的类别:例如“操作”与用户可能关心的任何事情有关,“内部”与只有开发人员关心的事情有关,“审计”用于跟踪有趣的事件。

        除此之外,我们还尝试限制类别的数量,因为我们发现没有人在更详细的级别上打开/关闭它们。因此,我们尝试将它们分组到功能区域中,而不是类名,例如。查询、更新等

        【讨论】:

          【解决方案4】:

          日志记录取决于您的要求。如果您制作的日志只是简单地关注是否存在任何问题(例如日志记录异常),那么您可能只需要类和函数名称。

          但是,如果您有创建和审核各种跟踪的功能需求,那么日志记录必须采用完全不同的详细程度。

          【讨论】:

            【解决方案5】:

            我们有类+方法的调试日志。

            对于某些操作,我们也有特定的日志,例如,在套接字上接收到的连接。这些就是我所说的“事实日志”或“审计跟踪日志”,它们记录单一类型的事情。当然,最近我只是将这些数据保存到数据库中,因为您正在捕获的事实可能比一串文本复杂得多,它们可以包括特定时间的状态。即,您为所需的每个审计滚动自己的审计跟踪记录机制。

            在调试时,我们将在 log4j 中将我们正在调试的包/类设置为 DEBUG,同时将 rootlogger 保留为 ERROR,并且我们将有一个调试日志文件,希望能够排除来自其他区域的所有 gumpf 日志记录应用。

            但实际上并没有“正确的方法”来做这些事情。多种机制的组合看起来不错,但这取决于您要记录的内容。

            【讨论】:

              猜你喜欢
              • 2012-10-23
              • 1970-01-01
              • 2014-02-26
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-01-17
              • 2012-03-02
              • 2017-03-21
              相关资源
              最近更新 更多