软件中总免不了要使用诸如 Log4net, Log4j, Tracer 等东东来写日志,不管用什么,这些东东大多是大同小异的,一般都提供了这样5个日志级别:
× Debug
× Info
× Warn
× Error
× Fatal
一个等级比一个高,但是在具体开发中,关于应该如何选择适应的等级,却没有找到好的文章进行说明。记录一下自己的一些看法,以便日后使用吧。
=== Debug ===
这个级别最低的东东,一般的来说,在系统实际运行过程中,一般都是不输出的。
因此这个级别的信息,可以随意的使用,任何觉得有利于在调试时更详细的了解系统运行状态的东东,比如变量的值等等,都输出来看看也无妨。
当然,在每一个 Debug 调用之前,一定要加上 If 判断。
=== Info ===
这个应该用来反馈系统的当前状态给最终用户的,所以,在这里输出的信息,应该对最终用户具有实际意义,也就是最终用户要能够看得明白是什么意思才行。
从某种角度上说,Info 输出的信息可以看作是软件产品的一部分(就像那些交互界面上的文字一样),所以需要谨慎对待,不可随便。
=== Warn、Error、Fatal ===
警告、错误、严重错误,这三者应该都在系统运行时检测到了一个不正常的状态,他们之间的区别,要区分还真不是那么简单的事情。我大致是这样区分的:
所谓警告,应该是这个时候进行一些修复性的工作,应该还可以把系统恢复到正常状态中来,系统应该可以继续运行下去。
所谓错误,就是说可以进行一些修复性的工作,但无法确定系统会正常的工作下去,系统在以后的某个阶段,很可能会因为当前的这个问题,导致一个无法修复的错误(例如宕机),但也可能一直工作到停止也不出现严重问题。
所谓Fatal,那就是相当严重的了,可以肯定这种错误已经无法修复,并且如果系统继续运行下去的话,可以肯定必然会越来越乱。这时候采取的最好的措施不是试图将系统状态恢复到正常,而是尽可能地保留系统有效数据并停止运行。
也就是说,选择 Warn、Error、Fatal 中的具体哪一个,是根据当前的这个问题对以后可能产生的影响而定的,如果对以后基本没什么影响,则警告之,如果肯定是以后要出严重问题的了,则Fatal之,拿不准会怎么样,则 Error 之。
=== 一些疑惑 ===
不过在实际使用中,基于上面的这种考虑,也还是有一些具体问题。最常见的就是要在最终产品中将输出日志打开到那种级别才算好呢?
例如在应用中有一个输出窗口,一些系统状态信息将被输出到这个输出窗口中。因为 Info 的级别是如此之低,所以为了让用户能够看到有效的输出信息,必须将日志级别开放到 Info 级别。但是 Warn 的级别比 Info 要高,所以用户不得不被迫看到一些 Warn 的信息。而我们其实已经假定,Warn 信息其实并不影响系统的正常运行,这一般只代表系统中存在一些还没有被发现或者修改的小 Bug。这些 Warn 信息会让最终用户困惑甚至恐慌,系统发出警告了,该怎么办?
个人观点,Info 的级别应该比 Warn 更高才对,Warn 信息和 Debug 一样,应该在产品测试和调试时使用,而 Info、Erro 以及 Fatal 则在产品发布后需要继续使用。
目前我所采用的解决方法是,对于 Warn、Error、Fatal 都添加一个相应的系统断言,这样,可以保证当发生这种问题时,在调试阶段,可以立即得到提示。在软件发布以后,这些信息也能被记录到日志文件中去。
log.Warn("message");
System.Diagnostics.Debug.Fail("警告", "message");
Debug.Fail 将导致编译为 Debug 输出时,会弹出一个消息警告窗口,这可保证在测试、调试阶段不漏过任何一个潜在的错误。而在发布时,Release 编译的输出不会包括 Debug 语句,这就不会打扰最终用户,而错误信息仍然能通过 log 记录到日志中。
分享到:
相关推荐
日志组件位于System.Database.dll中,项目引用命名空间(System.Logger)即可,日志组件提供五种级别的日志记录(DEBUG|INFO|WARN|ERROR|FATAL),最低DEBUG,最高FATAL,当配置的级别大于等于对应级别时,会自动记录...
日志组件位于System.Database.dll中,项目引用命名空间(System.Logger)即可,日志组件提供五种级别的日志记录(DEBUG|INFO|WARN|ERROR|FATAL),最低DEBUG,最高FATAL,当配置的级别大于等于对应级别时,会自动记录...
在 Log4j 中,日志记录器的级别(Level)可以分为七种:DEBUG、INFO、WARN、ERROR、FATAL、ALL 和 OFF。每种级别都有其特定的作用和应用场景。 DEBUG 级别 DEBUG 级别是 Log4j 中最低的日志级别,用于记录详细的...
日志级别通常包括TRACE、DEBUG、INFO、WARN、ERROR和FATAL,它们按严重程度递增排序。每个级别对应不同的信息,例如DEBUG用于调试,INFO用于一般信息,WARN表示可能出现的问题,ERROR和FATAL则代表严重的错误。 在...
2. **INFO(信息)**:INFO日志级别用于记录程序的常规运行信息,如服务启动、停止、用户操作等,这些信息对用户可见,有助于了解程序的状态。当设置为INFO级别时,将记录INFO及以上级别的日志,即INFO、WARN、ERROR...
Log4j提供了多个日志级别,从低到高依次为:DEBUG、INFO、WARN、ERROR和FATAL。不同的日志级别用于记录不同程度的信息,例如DEBUG用于调试,INFO用于常规信息,WARN用于警告,ERROR和FATAL则用于严重错误。动态设置...
这意味着您可以使用任何(或默认console ),但是我们严格支持以下日志级别: trace debug info warn error fatal (使用error ) 我们强烈建议您在记录(message, meta)时遵循此方法: const message = 'Hell
1. **日志级别**:Log4j支持多种日志级别,包括TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF。其中,DEBUG用于调试信息,INFO用于一般信息,WARN表示可能出现的问题,ERROR表示运行时错误,FATAL表示严重错误,而...
例如,当将日志级别设置为INFO时,只有INFO、WARN、ERROR、FATAL级别的日志会被记录;而DEBUG和TRACE级别的日志则会被忽略。 #### 日志配置实例 为了更好地理解日志级别的配置,下面是一个简单的Log4j配置示例: ...
5. 日志级别:通常我们在产品环境中日志的级别都在 INFO 以上,所以我们必须保证在这样的情况下程序仍然能够输出足够我们作出判断的信息。 日志级别的分类: 1. FATAL 级别:用于记录致命错误,例如程序崩溃、数据...
在Log4j中,日志级别定义了输出日志的详细程度,常见的级别有OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE和ALL。这里的"DEBUG"和"INFO"是指两种日志级别: 1. **DEBUG**:这是最详细的日志级别,主要用于调试,会...
分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是 ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的...
通常,日志级别由高到低排列为OFF、FATAL、ERROR、WARN、INFO、DEBUG和ALL。建议只使用ERROR、WARN、INFO和DEBUG这四个级别,以保持日志的清晰性和管理效率。 在实际应用中,可以通过配置Log4j的配置文件(如log4j....
Log4j提供了多个预定义的日志级别,按照严重性从低到高排序,包括TRACE、DEBUG、INFO、WARN、ERROR和FATAL。不同的级别对应着不同严重程度的信息,例如,DEBUG用于调试,INFO用于常规信息,WARN用于警告,ERROR和...
日志系统通常包括级别控制(如DEBUG、INFO、WARN、ERROR等)、时间戳、文件名和行号等功能,以便在大量输出中定位关键信息。本篇文章将详细介绍如何在C++中实现一个基础的日志工具类。 首先,我们需要定义日志级别...
Log4j支持以下级别,按严重性递增排序:DEBUG、INFO、WARN、ERROR、FATAL和OFF。默认情况下,只有INFO及以上的级别会被记录。 2. **配置文件** 在Log4j中,日志级别的设置通常在配置文件(如`log4j.properties`或`...
3、日志级别管理:定义了多个日志级别,包括Trace、Debug、Info、Warn、Error和Fatal,使得开发者可以根据情况记录不同重要性的信息,并且可以设定记录的最低和最高级别。 4、性能优化:设计注重性能,确保在高负载...
在Java中,我们通常使用如`java.util.logging.Logger`或第三方库如Log4j,它们提供了多种级别(如DEBUG、INFO、WARN、ERROR等)来控制日志输出,并支持输出到不同的目的地,如控制台、文件、网络等。在C++中,我们也...
1.日志级别:log4j-core.jar支持多种日志级别,包括TRACE、DEBUG、INFO、WARN、ERROR和FATAL。开发人员可以根据需要选择适当的日志级别,以记录不同类型的日志信息。 2.日志输出:log4j-core.jar支持多种日志输出...
Log4j 中的日志等级从低到高依次为:DEBUG < INFO < WARN < ERROR < FATAL。每个级别都对应着不同的日志信息输出级别。 DEBUG 级别是最低的日志等级,用于输出调试信息。INFO 级别用于输出普通信息,WARN 级别用于...