在Log4J,Slf4J和Java中的其他几个日志记录框架中,您有两个“开发人员”级别用于记录日志:
- 调试
- 跟踪
我了解DEBUG的作用,因为解释很清楚:
调试级别指定细粒度的信息事件,这些事件对于调试应用程序最有用。
但是TRACE级别对其用例不是很明确:
与调试相比,TRACE级别指定的信息事件更详细
(来源:log4J JavaDoc)
这没有告诉我如何或何时使用TRACE。有趣的是,这不是syslog标准中定义的严重性级别。搜寻TRACE和DEBUG之间的区别似乎只是返回“使用DEBUG,哦,也有TRACE”。我找不到TRACE级别的特定用例。我能找到的最好的东西是这个古老的Wiki页面,讨论了该级别存在的优点。
作为一名建筑师,这在我脑海中引发了许多旗帜和问题。如果一个年轻的开发人员要求我将TRACE添加到我的体系结构中,我会用以下问题轰炸他:
- 应该使用TRACE而不是DEBUG记录的一些信息示例是什么?
- 通过记录该信息可以解决什么具体问题?
- 在这些示例中,已记录信息的属性有哪些可清楚地区分TRACE级别而不是DEBUG级别的记录?
- 为什么该信息必须通过日志基础结构?
- 将这些信息保留在日志日志中而不只是使用这些日志有什么好处
System.out.println
? - 为什么最好为此使用日志而不是调试器?
- 将这些信息保留在日志日志中而不只是使用这些日志有什么好处
- 在TRACE级别进行日志记录的典型示例是什么?
- 在示例中,通过以TRACE级别而不是DEBUG进行记录获得了哪些具体收益?
- 为什么这些收益很重要?
- 相反:通过将其记录在TRACE而不是DEBUG上可以避免什么问题?
- 我还能如何解决这些问题?为什么在TRACE级别上进行日志记录比其他解决方案更好?
- TRACE级别的日志语句是否应保留在生产代码中?为什么?
但是考虑到它存在于大多数主要框架中,我猜它对某些事情有用吗?那么... TRACE的用途是什么,它与DEBUG有何区别?