`

日志级别

 
阅读更多
软件中总免不了要使用诸如 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 都添加一个相应的系统断言,这样,可以保证当发生这种问题时,在调试阶段,可以立即得到提示。在软件发布以后,这些信息也能被记录到日志文件中去。
分享到:
评论

相关推荐

    动态设置log4j的日志级别

    这个页面可能包含一个表单让用户选择新的日志级别,然后通过Servlet或JSP内置对象(如`request.getParameter()`)获取用户的输入,再调用Log4j的API来更新日志级别。 总结来说,动态设置Log4j的日志级别是提高应用...

    log4j的日志级别的调整

    本篇我们将深入探讨如何调整log4j的日志级别,以便更好地管理和控制应用程序的日志输出。 首先,我们要理解日志级别在log4j中的含义。Log4j提供了多个预定义的日志级别,按照严重性从低到高排序,包括TRACE、DEBUG...

    logback日志级别动态切换的终极方案(Java ASM使用).doc

    【logback日志级别动态切换】是Java应用中常见的需求,尤其在大型分布式系统中,为了应对不同的运行环境和性能优化,需要灵活调整日志输出级别。本文将介绍一种使用Java ASM库实现的终极解决方案。 首先,理解...

    log4j2配置多个日志级别

    log4j2配置多个日志级别,拿到即可用, 。

    slf4j实现热加载日志级别

    一个简单的例子slf4j实现热加载日志级别

    log4j日志级别详细介绍

    ### Log4j日志级别详细介绍 #### Log4j概述 Log4j是Apache基金会下的一个开源项目,它是一个基于Java的日志组件,在众多Java日志框架中占据着重要的位置。Log4j因其丰富的特性和易用性而在企业级应用开发中被广泛...

    Log4j日志级别

    Log4j 日志级别详解 Log4j 是 Java 中一种流行的日志记录工具,用于记录应用程序的运行过程和错误信息。Log4j 的核心组件是日志记录器(Logger),它可以根据不同的级别记录日志信息。在 Log4j 中,日志记录器的...

    Printk日志级别

    `Printk`日志级别是一个关键特性,允许系统根据不同的严重程度和信息类型来过滤和记录消息,帮助开发者和系统管理员更好地理解和诊断问题。下面将详细介绍各个日志级别的含义和应用场景。 1. **KERN_EMERG (紧急...

    log4j-控制指定类,包的日志级别:log4j-demo.zip

    Log4j是Apache提供的一款广泛使用的日志框架,它提供了丰富的功能,包括控制日志级别、定制日志格式、支持多种输出方式等。本示例将详细介绍如何使用Log4j来控制指定类或包的日志级别。 首先,我们来理解日志级别的...

    01_日志级别1

    日志级别是管理日志信息的关键因素,它决定了哪些日志会被记录并显示出来。本文将深入探讨日志级别及其在不同场景下的应用。 日志级别通常分为五个主要级别,它们按照严重性程度从低到高依次为: 1. **DEBUG(调试...

    运行时改变log4j日志级别

    本文将详细讲解如何在运行时改变Log4j的日志级别,这对于调试和性能优化至关重要。我们将从以下几个方面进行探讨: 1. **日志级别介绍** 日志级别是Log4j中控制日志输出的关键,它定义了不同严重程度的消息应该被...

    C语言跨平台日志库实现

    2. **日志级别支持**:日志库通常提供多个级别的日志输出,如DEBUG、INFO、WARNING、ERROR和FATAL。这允许开发者根据需要控制日志的详细程度,例如,在生产环境中可能只需要ERROR和FATAL级别的日志,而在调试时则...

    Spring Boot Admin 动态修改日志级别的方法步骤

    本文将详细介绍如何利用Spring Boot Admin 来动态修改日志级别,以便在生产环境中更好地管理和调试应用。 首先,我们需要理解在生产环境中日志输出的常见困境。通常,日志级别分为多种,如DEBUG、INFO、WARN、ERROR...

    动态修改日志级别

    动态修改日志级别

    SparkStreaming流式日志过滤与分析

    ”日志级别、函数名、日志内容“ 三个字段,字段之间以空格拆分。请看数据源的文件。 (2)对读入都日志信息流进行指定筛选出日志级别为error或warn的,并输出到外部MySQL中。 需要用到的函数 (1)输入采用...

    SpringBoot实用小技巧之如何动态设置日志级别

    Spring Boot提供了方便的方式来管理日志级别,特别是在生产环境中,动态调整日志级别显得尤为重要,因为它可以避免重新部署应用程序就能查看更详细的日志信息。 在Spring Boot 1.5.1版本之后,通过`spring-boot-...

    动态配置Spring Boot日志级别的全步骤

    动态配置Spring Boot日志级别的全步骤 Spring Boot 提供了多种方式来配置日志级别,而动态配置日志级别是其中最常用的方式之一。在本文中,我们将介绍如何使用 Spring Boot 的 Actuator 模块来动态配置日志级别。 ...

    Logback动态修改日志级别的方法

    在这个例子中,`changeLogLevel` 方法接收一个日志级别参数,然后修改 "org.mybatis" 和 "org.springframework" 包的日志级别。这样,通过调用这个接口,你可以临时提高日志级别,获取更多调试信息。 **2. 修改 ...

    Node.js-console-log-level-最简单的记录器支持日志级别和自定义前缀

    `console.log()`是最基础的日志输出方法,但有时我们需要更精细的控制,比如设置不同的日志级别,添加自定义前缀等。`console-log-level`模块就是为了满足这些需求而设计的。 `console-log-level`是一个轻量级的库...

    log4j按功能保存日志

    - **Level**: 日志级别,包括DEBUG、INFO、WARN、ERROR、FATAL等,用于控制不同严重程度的信息。 2. **配置日志输出** - 在Log4j的配置文件(通常是`log4j.properties`或`log4j.xml`)中,你可以定义多个Appender...

Global site tag (gtag.js) - Google Analytics