Java中的日志处理
来源:互联网 发布:龙与地下城 知乎 编辑:程序博客网 时间:2024/05/18 03:54
Logger
Log的历史
先简单说说Log的发展史,Log中文翻译为日志,通常指我们程序中由程序编写者打印出的信息,目的主要有调试,信息记录,警告,错误通知。很久很久以前,Apache再次创建了一经典,log4j为Java程序员所广泛使用,随后Sun在JDK1.4也推出了Logging机制,但并未获得认可,Apache随后推出commons-logging,目的似乎是对Sun的反击,通过动态查找机制同时可支持log4j或jdk14的logging。commons-logging+log4j在其后的很长一段时间内成为了Java开发的经典组合,commons-logging也长时间不更新了,Apache的Developer们似乎是丧失了再开发他们的Logging Framework的兴趣。直到最近1年,本地Log领域(更复杂的Log分析领域另有优秀的产品)又有了新的变化,原Log4j的开发者另立门户,开发的新Logback和已被广泛使用的slf4j渐渐在取代commons-logging的地位。它们的优点就是克服了commons-logging的一些缺点,有兴趣的自己去找吧。我们准备使用的是slf4j,它仍然属于对于各种logging lib的一层封装,但使用起来更加方便,并且我们仍然可以用log4j的配置文件来配置它。
Log的规定
使用debug, info, warn, error四个级别,debug为打印调试信息,例如接口参数值,返回结果等,info用来打印有用的信息通知,warn用在发生了某些问题,但并无严重影响(例如影响业务逻辑的实现)的,error用于严重错误,业务逻辑执行失败。
提交的代码中必须使用log来代替System.out.print(ln)和e.printStackTrace()语句,这两种只能在进行出错时特殊化的临时打印。
当出现异常后,使用log打印时,必须使用logger.xxx("message", e)的形式输出。
在所有异常被捕获但没有被重新抛出的地方都必须写日志。
错误的代码段
- 没有捕获特定异常,Exception是不明确的异常;
- 既没有抛出异常,又没写注释;
- debug级别错误,(除非这个异常真的是你想让它出现的,这种情况极少);
- debug的参数是模糊不确切的ex.getMessage();
- 最后返回SUCCESS。
3行代码竟然可以说出5处不合理的地方,糟糕之极的代码!!!
API面对不可知调用者时(例如客户端或另一个小组编写的模块),建议使用日志输出接收的参数名和值。
Log使用实例
很简单,以下从slf4j的站点引用过来两个小例子,大家一看便知:
是否注意到了"{}"?并且不再需要写if (logger.isDebugenabled()),使用的是slf4j的
static final Logger logger = LoggerFactory.getLogger(XXX.class)
- Java中的日志处理
- java中的日志处理
- Java socket编程中的日志处理
- java日志的处理
- Logger java日志处理
- java日志处理
- Java 日志处理
- Ext文件系统中的日志处理
- Syslog4j中的日志格式处理
- Java 中的日志
- Java中的异常,日志
- java中的日志log
- java中的日志
- java日志log4j的处理
- Java的Log4j日志处理
- 使用Java 内置日志处理
- php中自定义日志处理类(类似于java中的log4j)
- PHP中的错误处理和日志函数
- 推荐三本通信仿真书
- linux tomcat启动与端口占用查看
- 【模版】并查集 及路径压缩
- HDU-#1286 找新朋友(欧拉函数+计数问题)
- cdecl、stdcall、fastcall函数调用约定区别
- Java中的日志处理
- POJ3077 Rounders
- cocos2dx 帧动画的两种创建方式
- acm steps1.2.8(Identity Card)
- poj 3274 Gold Balanced Lineup, 链地址hash
- POJ 2318 TOYS
- 如何用OpenCV训练自己的分类器
- android 动画切换效果
- UITableView and presentViewController takes 2 clicks to display