【发布时间】:2008-10-02 16:45:24
【问题描述】:
您对 log4j 或类似库中的日志类别使用什么约定? 通常您将类名视为类别,但您是否使用过其他系统?
日志级别呢?您使用什么级别以及在哪种情况下使用?
更新:正如你们中的一些人回答的那样,没有“正确”的答案。我只是在寻找人们使用哪些不同的惯例作为可能的灵感来源。
【问题讨论】:
您对 log4j 或类似库中的日志类别使用什么约定? 通常您将类名视为类别,但您是否使用过其他系统?
日志级别呢?您使用什么级别以及在哪种情况下使用?
更新:正如你们中的一些人回答的那样,没有“正确”的答案。我只是在寻找人们使用哪些不同的惯例作为可能的灵感来源。
【问题讨论】:
我有 3 个级别:错误、警告和详细日志,说明程序一次在做什么。
我使用类+函数作为上下文。
【讨论】:
我同意Vaibhav's answer:你必须知道你为什么要记录。
因此,仅对于内部日志记录,我们遵循非常标准的方法:
粒度(对于经典内部日志记录)是主要类,负责流程的主要步骤。
【讨论】:
多年来,我们对此进行了广泛的辩论,我们唯一一致同意的是,没有完美的答案!
我们决定使用顶级类别名称来区分广泛的类别:例如“操作”与用户可能关心的任何事情有关,“内部”与只有开发人员关心的事情有关,“审计”用于跟踪有趣的事件。
除此之外,我们还尝试限制类别的数量,因为我们发现没有人在更详细的级别上打开/关闭它们。因此,我们尝试将它们分组到功能区域中,而不是类名,例如。查询、更新等
【讨论】:
日志记录取决于您的要求。如果您制作的日志只是简单地关注是否存在任何问题(例如日志记录异常),那么您可能只需要类和函数名称。
但是,如果您有创建和审核各种跟踪的功能需求,那么日志记录必须采用完全不同的详细程度。
【讨论】:
我们有类+方法的调试日志。
对于某些操作,我们也有特定的日志,例如,在套接字上接收到的连接。这些就是我所说的“事实日志”或“审计跟踪日志”,它们记录单一类型的事情。当然,最近我只是将这些数据保存到数据库中,因为您正在捕获的事实可能比一串文本复杂得多,它们可以包括特定时间的状态。即,您为所需的每个审计滚动自己的审计跟踪记录机制。
在调试时,我们将在 log4j 中将我们正在调试的包/类设置为 DEBUG,同时将 rootlogger 保留为 ERROR,并且我们将有一个调试日志文件,希望能够排除来自其他区域的所有 gumpf 日志记录应用。
但实际上并没有“正确的方法”来做这些事情。多种机制的组合看起来不错,但这取决于您要记录的内容。
【讨论】: