开发一个应用,日志的重要性不言而喻。然而有时会发现日志中会出现大量的垃圾日志。所谓垃圾日志,就是不需要知道的日志,或者这些日志对于应用查看、跟踪没有什么作用。也正是(但不仅仅是)出于这些问题的考量,常用的日志框架都设置了日志级别。但是在写程序时,这些日志级别该选择哪一种呢,这点并没有一个统一的标准,也没有人教你怎么做。下面就来说说我在开发中是怎么使用这些日志级别的。

一般来说,日志级别有以下几个:

  • FATAL(CRITICAL)
  • ERROR
  • WARN
  • INFO
  • DEBUG

它们的权重从大到小。当我们设置好log级别后,比它权重低的其他log都会被忽略。

不同的语言,不同的库有不同的log实现,使用方法也比较简单。但运用好log的关键不在库本身,而是在恰当的地方使用合适的log级别。

在不同的场景下,应该选择相应的log级别。

FATAL(CRITICAL)

代表发生了最严重的错误,会导致整个服务停止(或者需要整个服务停止)。简单地说就是服务死掉了。

ERROR

代表发生了必须马上处理的错误。此类错误出现以后可以允许程序继续运行,但必须马上修正,如果不修正,就会导致不能完成相应的业务。

WARN

代表存在潜在的错误,或者触发了容易引起错误的操作。程序可以继续运行,但必须多加注意。

INFO

此输出级别常用语业务事件信息。例如某项业务处理完毕,或者业务处理过程中的一些信息。

此输出级别也常用于输出一些对系统有比较大的影响的需要被看到的message,例如数据库更新,系统发送了额外的请求等。

DEBUG (或者TRACE、FINE)

此输出级别用于开发阶段的调试,可以是某几个逻辑关键点的变量值的输出,或者是函数返回值的验证等等。

另外,如果是你写的一些util工具类,在需要加日志的情况下,也可以使用debug。

如果你写的是Helper(业务的辅助类),这应该算是业务处理相关的,所以应该用info。

正确的选择log级别的更多相关文章

  1. 如何正确使用日志Log

    title: 如何正确使用日志Log date: 2015-01-08 12:54:46 categories: [Python] tags: [Python,log] --- 文章首发地址:http ...

  2. Hadoop2动态调整Log级别-以datanode的heartbeat log为例

    在Hadoop中,有些log信息在正常情况下是不打印出来的.比如datanode发送heartbeat的日志. 代码位于BPServiceActor#sendHeartBeat方法中,如下图: 由于默 ...

  3. Ubuntu 设置 log 级别

    Linux环境下使用rsyslog管理日志 rsyslog linux运维 linux 22.7k 次阅读  ·  读完需要 22 分钟     在 Linux 系统中,日志文件记录了系统中包括内核. ...

  4. shell脚本选择LOG里面特定的行,生成新文件并rsync上传

    rsync.sh #!/bin/bash tool_path=$(cd `dirname $`; pwd) eval `cat ${tool_path}/conf.properties` rsync_ ...

  5. log级别

    trace<debug<info<warn<error<fatal trace: 是追踪,就是程序推进以下,你就可以写个trace输出,所以trace应该会特别多,不过没 ...

  6. EasyUI datagrid.getSelections 没有返回正确的选择行数

    Actually i solved the problem. It was because the idField of the table i was using was incorrect. it ...

  7. Linux中对启动过程中选择启动级别那个界面设置密码

    生成md5形式的密码: a.执行  grub-md5-crypt  命令 b.在接下来的交互界面中输入自己的密码 c.生成加密后的密码修改配置文件: a.vi /boot/grub/grub.conf ...

  8. k3 cloud套打模板中出现单元格数据为空的情况,及无法正确的选择数据源

    解决办法: 找到右边的导航树,点击数据表格选中,然后到左边点击右键,绑定数据

  9. Locust no-web 模式与参数详解

    读前参考:<性能测试工具Locust > 熟悉 Apache ab 工具的同学都知道,它是没有界面的,通过命令行执行. Locust 同样也提供的命令行运行,好处就是更节省客户端资源. 命 ...

随机推荐

  1. android listview 异步加载图片并防止错位

    网上找了一张图, listview 异步加载图片之所以错位的根本原因是重用了 convertView 且有异步操作. 如果不重用 convertView 不会出现错位现象, 重用 convertVie ...

  2. soap缓存问题

    问题描述: ws提供方在原有基础上增加了一个方法,通过php的soap扩展硬是获取不到该方法,提示,该方法不存在. 问题跟节: soap缓存问题,导致无法获取最新的ws文件信息 解决办法: 1.直接在 ...

  3. Win10环境下安装theano并配置GPU详细教程

    一.软件和环境 (1)安装日期2016/12/23: (2)原材料VS2013,cuda-8.0(最好下载cuda7.5,目前theano-0.8.2对cuda-8支持不是很好),Anaconda3- ...

  4. Java--Spring AOP 源码散点记录(最后整理成一篇博客)

    Spring AOP 源码记录: 1.AOP 入口ProxyFactoryBean.getObject()方法: 2.AOP实现: (1)实现InvocationHandler接口 (2)通过java ...

  5. Python Sqlite3以字典形式返回查询结果

    sqlite3本身并没有像pymysql一样原生提供字典形式的游标. cursor = conn.cursor(pymysql.cursors.DictCursor) 但官方文档里已经有预留了相应的实 ...

  6. Alfresco 4 项目介绍

    body{ font: 16px/1.5em 微软雅黑,arial,verdana,helvetica,sans-serif; }       Alfresco 是一个开源的企业内容管理系统(ECM) ...

  7. Java Session超时设置

    1.jsp页面直接设置                                                                        ); 2.web.xml设置,覆盖 ...

  8. 使用Apache的Base64类实现Base64加解密

    包名称:org.apache.commons.codec.binary 类名称:org.apache.commons.codec.binary.Base64 1.Base64加密 public sta ...

  9. Java资源大全

    古董级工具 这些工具伴随着Java一起出现,在各自辉煌之后还在一直使用. Apache Ant:基于XML的构建管理工具. cglib:字节码生成库. GlassFish:应用服务器,由Oracle赞 ...

  10. Servlet过滤器Filter用法

    1 Servlet 过滤器方法 过滤器是一个实现了 javax.servlet.Filter 接口的 Java 类.javax.servlet.Filter 接口定义了三个方法:public void ...