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

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

  • 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. 孙鑫MFC学习笔记6:菜单编程

    1.对菜单响应的顺序: 视类,文档类,框架类,应用程序类 2.消息的分类 3.CWnd继承自CCmdTarget类, 所以从CWnd派生出的类也可以接收WM_COMMAND消息 4.命令的消息路由 5 ...

  2. [转]以Facebook为案例剖析科技公司应有的工具文化

    原文:http://36kr.com/p/146507.html 这是一篇几年前的文章,但对于没有涉及到工具文化这个概念的人来说,还是很新的. 前言 前段时间和大众点评的 CEO 张涛聊天的时候碰到内 ...

  3. Gitblit中采用Ticket模式进行协作开发

    Git目前的代码分支管理模型中,比较主要的有Git-Flow.Github Pull Request.大家日常或多或少都在用着. 在不想安装Gitlab这种重量级的环境的情况下,如果是利用git一步步 ...

  4. EventBus简单的实现

    EventBus是最近项目用到的,也只是会些简单的功能,不过感觉功能蛮强大的.代码链接:http://download.csdn.net/detail/qq_29774291/9629346 Even ...

  5. 将AJAX返回值纵向排序赋值给Table标签

    /*下面是所有拼接这个表的代码*/ 1 function HandelAjaxReturnDataForContentTable(data) { var shareHtml = "" ...

  6. inflate的基本用法,类似于findviewbyId

    Inflate()作用就是将xml定义的一个布局找出来,但仅仅是找出来而且隐藏的,没有找到的同时并显示功能.最近做的一个项目就是这一点让我迷茫了好几天. android上还有一个与Inflate()类 ...

  7. Fiddler (五) Mac下使用Fiddler

      Fiddler是用C#开发的.  所以Fiddler不能在Mac系统中运行.  没办法直接用Fiddler来截获MAC系统中的HTTP/HTTPS,    Mac 用户怎么办呢? Fiddler可 ...

  8. LBS数据分析:使用地图展示统计数据——麻点图与麻数图

    作为一个LBS的APP,都获得了用户经纬度,也都使用了友盟统计.google ana等等统计分析系统,不过没有地图展示功能,不能进行直观的展示. 友盟统计.google ana等系统是总体数据统计,无 ...

  9. Winjs – 微软开源技术发布的 JavaScript 组件集

    Winjs 是由微软开源技术的开发者推出的一组 JavaScript 组件,包括 ListView.ListView.Tooltip.DatePicker.Ratings 等等,帮助 Web 开发人员 ...

  10. URL(统一资源定位符)结构和注意事项

    URL的常见结构: http://localhost/项目名称/文件1/文件2... 注意事项: 当我们在项目中在书写URL的时候,一般会出现两种情况: 第一种:在路径前面加上/,表示直接连在loca ...