正确的选择log级别
开发一个应用,日志的重要性不言而喻。然而有时会发现日志中会出现大量的垃圾日志。所谓垃圾日志,就是不需要知道的日志,或者这些日志对于应用查看、跟踪没有什么作用。也正是(但不仅仅是)出于这些问题的考量,常用的日志框架都设置了日志级别。但是在写程序时,这些日志级别该选择哪一种呢,这点并没有一个统一的标准,也没有人教你怎么做。下面就来说说我在开发中是怎么使用这些日志级别的。
一般来说,日志级别有以下几个:
- 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级别的更多相关文章
- 如何正确使用日志Log
title: 如何正确使用日志Log date: 2015-01-08 12:54:46 categories: [Python] tags: [Python,log] --- 文章首发地址:http ...
- Hadoop2动态调整Log级别-以datanode的heartbeat log为例
在Hadoop中,有些log信息在正常情况下是不打印出来的.比如datanode发送heartbeat的日志. 代码位于BPServiceActor#sendHeartBeat方法中,如下图: 由于默 ...
- Ubuntu 设置 log 级别
Linux环境下使用rsyslog管理日志 rsyslog linux运维 linux 22.7k 次阅读 · 读完需要 22 分钟 在 Linux 系统中,日志文件记录了系统中包括内核. ...
- shell脚本选择LOG里面特定的行,生成新文件并rsync上传
rsync.sh #!/bin/bash tool_path=$(cd `dirname $`; pwd) eval `cat ${tool_path}/conf.properties` rsync_ ...
- log级别
trace<debug<info<warn<error<fatal trace: 是追踪,就是程序推进以下,你就可以写个trace输出,所以trace应该会特别多,不过没 ...
- EasyUI datagrid.getSelections 没有返回正确的选择行数
Actually i solved the problem. It was because the idField of the table i was using was incorrect. it ...
- Linux中对启动过程中选择启动级别那个界面设置密码
生成md5形式的密码: a.执行 grub-md5-crypt 命令 b.在接下来的交互界面中输入自己的密码 c.生成加密后的密码修改配置文件: a.vi /boot/grub/grub.conf ...
- k3 cloud套打模板中出现单元格数据为空的情况,及无法正确的选择数据源
解决办法: 找到右边的导航树,点击数据表格选中,然后到左边点击右键,绑定数据
- Locust no-web 模式与参数详解
读前参考:<性能测试工具Locust > 熟悉 Apache ab 工具的同学都知道,它是没有界面的,通过命令行执行. Locust 同样也提供的命令行运行,好处就是更节省客户端资源. 命 ...
随机推荐
- MyEclipse10启动Tomcat8出错
问题一: java.lang.UnsupportedClassVersionError: org/apache/catalina/startup/Bootstrap : (Unsupported ma ...
- AspectJ对AOP的实现
一:你应该明白的知识 1.对于AOP这种编程思想,很多框架都进行了实现.Spring就是其中之一,可以完成面向切面编程.然而,AspectJ也实现了AOP的功能,且实现方式更为简捷,使用更加方便,而且 ...
- php学习5-时间和日期
如果时间时区不对,使用时间是要先设定时区,使用date_default_timezone_set() 设置新时区 date_default_timezone_set('Asia/Shanghai'); ...
- C#读取Excel文件:通过OleDb连接,把excel文件作为数据源来读取
转载于:http://developer.51cto.com/art/200908/142392.htm C#读取Excel文件可以通过直接读取和OleDb连接,把excel文件作为数据源来读取: ...
- ActiveMQ 简介与安装
一. 概述与介绍 ActiveMQ 是Apache出品,最流行的.功能强大的即时通讯和集成模式的开源服务器.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provide ...
- Weex 环境搭建(win7)
安装 Node.js node.js需要4.0+ 百度云下载地址http://pan.baidu.com/s/1o84g6c6 官网下载地址https://nodejs.org/en/ 安装教程请看这 ...
- MySQL支持的数据类型
1.整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节 范围(-128~127) smallint(m) 2个字节 范围(-32768~32767) mediumint(m) 3 ...
- javascript中的arguments对象
在js中一切都是对象,连函数也是对象,函数名其实是引用函数定义对象的变量. 1.什么是arguments? 这个函数体内的arguments非常特殊,实际上是所在函数的一个内置类数组对象,可以用数组的 ...
- Git是个好工具
Git是分布式版本控制系统,我们常用的版本控制工具还有SVN.这里就得区分下什么是分布式版本控制系统,什么是集中化的版本控制系统. 集中化的版本控制系统 集中化的版本控制系统( Centralized ...
- 对比MS Test与NUnit Test框架
前言: 项目中进行Unit Test时,肯定会用到框架,因为这样能够更快捷.方便的进行测试. .Net环境下的测试框架非常多,在这里只是对MS Test和NUnit Test进行一下比较, 因为这两个 ...