下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、日志记录与异常处理规范(2006-09-19 10:02:15转载 日志记录与异常处理规范 1 日志记录规范规范日志设计规范主要目的是节省工作量,帮助对问题进行诊断。最终,终端用户可以获得更好的应用程序,并能从技术支持团队获得迅速的响应。 1.1 日志API 在使用 Java 平台进行开发时,使用的日志 API:Log4j-1.2.8.jar 1.2 日志分类 l Security:记录外部对系统进行的各项操作 l Business:记录和跟踪业务逻辑执行过程 l Performance:记录和跟踪代码执行情况 1.3 日志级别日志级别有: l Debug: 包含了非常广泛的上下文信息,用于问
2、题诊断。 l Info: 用于在产品环境中(粒度较粗)帮助跟踪执行过程的上下文消息。 l Warning: 警告消息,说明系统中可能存在问题。例如,如果这个消息类别是有关安全性方面的。 l Error: 错误消息说明系统中出现了严重的问题。这种问题通常都是不可恢复的,需要人工进行干预。 表1 日志记录程序 public class Log4JTest / Logging 类由EMIP平台提供 Logging logging = Logging.getInstance("STDOUT" public void testLogging( /安全日志 (&
3、quot;安全类型INFO级日志记录" (Logging. SECURITY,"安全类型INFO级日志记录" (Logging. SECURITY,"安全类型INFO级日志记录",new RuntimeException(; logging.error("安全类型ERROR级日志记录" logging.error(Logging. SECURITY,"安全类型ERROR级日志记录" logging.error(Logging. SECURITY,"
4、安全类型ERROR级日志记录",new RuntimeException(; /业务日志 ("业务类型INFO级日志记录" (Logging. BUSINESS,"业务类型INFO级日志记录" (Logging. BUSINESS,"业务类型INFO级日志记录",new RuntimeException(; logging.error("业务类型ERROR级日志记录" logging.error(Logging. BUSINESS,&
5、quot;业务类型ERROR级日志记录" logging.error(Logging. BUSINESS,"业务类型ERROR级日志记录",new RuntimeException(; /系统日志 ("业务类型INFO级日志记录" (Logging. BUSINESS,"业务类型INFO级日志记录" (Logging. BUSINESS,"业务类型INFO级日志记录",new RuntimeException(; logging.er
6、ror("业务类型ERROR级日志记录" logging.error(Logging. BUSINESS,"业务类型ERROR级日志记录" logging.error(Logging. BUSINESS,"业务类型ERROR级日志记录",new RuntimeException(; ("系统类型INFO级日志记录" (Logging.PERFORMANCE,"系统类型INFO级日志记录" (Logging.PERFORMAN
7、CE,"系统类型INFO级日志记录",new RuntimeException(; logging.error("系统类型ERROR级日志记录" logging.error(Logging.PERFORMANCE,"系统类型ERROR级日志记录" logging.error(Logging.PERFORMANCE,"系统类型ERROR级日志记录",new RuntimeException(; public static void main(String args Log4JTe st log4JTest = new
8、 Log4JTest(; log4JTest.testLogging(; 输出结果(日志记录的头部分的组成结构是:时间戳日志级别日志类型日志内容) 2006-09-13 18:43:38 INFO安全类型INFO级日志记录 2006-09-13 18:43:38 INFO SECURITY安全类型INFO级日志记录 2006-09-13 18:43:38 INFO SECURITY安全类型INFO级日志记录 java.lang.RuntimeException at com.huawei.test.log4j.Log4JTest.testLogging(Log4JTest.java:11 at
9、 com.huawei.test.log4j.Log4JTest.main(Log4JTest.java:31 2006-09-13 18:43:38 ERROR 安全类型ERROR级日志记录 2006-09-13 18:43:38 ERROR SECURITY安全类型ERROR级日志记录 2006-09-13 18:43:38 ERROR SECURITY安全类型ERROR级日志记录 java.lang.RuntimeException at com.huawei.test.log4j.Log4JTest.testLogging(Log4JTest.java:13 at com.huawei
10、.test.log4j.Log4JTest.main(Log4JTest.java:31 2006-09-13 18:43:38 INFO 业务类型INFO级日志记录 2006-09-13 18:43:38 INFO BUSINESS业务类型INFO级日志记录 2006-09-13 18:43:38 INFO BUSINESS业务类型INFO级日志记录 java.lang.RuntimeException at com.huawei.test.log4j.Log4JTest.testLogging(Log4JTest.java:17 at com.huawei.test.log4j.Log4J
11、Test.main(Log4JTest.java:31 2006-09-13 18:43:38 ERROR 业务类型ERROR级日志记录 2006-09-13 18:43:38 ERROR BUSINESS业务类型ERROR级日志记录 2006-09-13 18:43:38 ERROR BUSINESS业务类型ERROR级日志记录 java.lang.RuntimeException at com.huawei.test.log4j.Log4JTest.testLogging(Log4JTest.java:19 at com.huawei.test.log4j.Log4JTest.main(L
12、og4JTest.java:31 2006-09-13 18:43:38 INFO 系统类型INFO级日志记录 2006-09-13 18:43:38 INFO PERFORMANCE系统类型INFO级日志记录 2006-09-13 18:43:38 INFO PERFORMANCE系统类型INFO级日志记录 java.lang.RuntimeException at com.huawei.test.log4j.Log4JTest.testLogging(Log4JTest.java:23 at com.huawei.test.log4j.Log4JTest.main(Log4JTest.ja
13、va:31 2006-09-13 18:43:38 ERROR 系统类型ERROR级日志记录 2006-09-13 18:43:38 ERROR PERFORMANCE系统类型ERROR级日志记录 2006-09-13 18:43:38 ERROR PERFORMANCE系统类型ERROR级日志记录 java.lang.RuntimeException at com.huawei.test.log4j.Log4JTest.testLogging(Log4JTest.java:25 at com.huawei.test.log4j.Log4JTest.main(Log4JTest.java:31
14、 1.4 日志消息的格式除了典型的应用程序状态信息之外,通过配置还应记录以下信息(配置方法参见配置模版): l 线程 ID l 调用程序的标识 l 时间戳 l 源代码信息 1.5 日志配置 1.5.1 日志配置模板日志模版部署在同一应用平台上的各个模块,使用同一个XML配置文件进行配置。各个模块在配置文件中配置各自的日志Appender。 1.5.2 动态配置文件 EMIP平台的在Logging类中使用 DOMConfigurator 中的 configureAndWatch( 方法会对 Log4J 进行配置,默认一分钟为周期动态监视日志配置文件。 1.6 日志记录规范 1. 不要把syste
15、m.out用于日志记录。 2. 被认为“已完成”或无隐错的代码,也应该能够根据配置输出日志(因为总有存在隐错的可能性,可能是通过修改引入的)。 3. 除非代码能够生成日志消息,并且它的日至输出能够被容易的配置,否则它不可用于生产环境。 4. 在重要代码段中需要详尽的日志记录输出。 5. 在用于生产环境前,需要修改和改进维护期间的日志记录陈述(例如,如果日志输出显得不明确)。 6. 日志消息应该分成不同优先级,并且调试消息应该指出一个构件的整个工作流程。 7. 明确日志消息优先级的选择,具有相同优先级的日志消息应该揭示一致级别的细节。 8. 从异常中提取有用信息 l 发生一个非预期的异常时:首先
16、,必须记录异常及其堆栈跟踪状况。其次,应该使用一种用户界面友好的方式来标识错误页面,这对于终端用户和技术支持小组来说都是非常有帮助的。 l 使用户所报告的问题与特定的日志异常之间建立某种关联:为每个异常都记录一个唯一的 ID。这个 ID 可以告诉用户,也可以包含在终端用户所填写的问题报告表单中。让技术支持团队可以快速对问题作出响应。考虑到可读性的问题。 9. 确保日志记录语句中调用toString(方法的对象不会是空值,以免这些语句引起失败。 10. 通过相应的配置,用来显示生成日志输出的那个类、方法和行号(Log4j提供此功能)。该设置在生产中应该被关闭,因为生成这类信息的代价非常高。 11
17、. 记录日志时不要把toString(方法用在访问具有许多方法并生成大串的复杂对象上。(也可以给这种日志输出定义一个低优先级的输出级别)。 1.7 日志文件的管理日志文件的生成根据具体情况选用以下两者之一: l RollingFileAppender l DailyRollingFileAppender 2 异常处理规范 2.1 规范 1. 当程序产生异常时,必须捕捉并处理异常、将异常记录到日志中(除非打算抛出异常)。 2. 不要处理能够避免的异常。 3. 在异常处理模块中提供适量的错误原因信息。 4. 使用finally避免资源泄露。 5. 不要从try区段中返回。 6. 不要在 final
18、ly 内部使用 return 语句。它不仅会影响函数的正确返回值,而且它可能还会导致一些异常处理过程的意外终止,最终导致某些异常的丢失。 7. 将try/catch区段置于循环之外。 8. 不要将异常用于程序流程控制。 9. 通过抛出异常,获取构造函数中的错误信息。 10. 抛出异常之前先将对象恢复为有效状态。 11. 记录异常不要保存exception.getMessage(,而要记录exception.toString(。 12. 一个方法不应抛出太多类型的异常。 说明:如果程序中需要分类处理,则将异常根据分类组织成继承关系。如果确实有很多异常类型首先考虑用异常描述来区别,throws/exception子句标明的异常最好不要超过三个。 13. 不要定义 Error 和 R
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年马致远 教学设计
- 2025-2026学年鲁班技能细节教学设计
- 2025-2026学年高中政治教学设计原创
- 20美丽的小兴安岭教案设计
- 21 仿生建筑模型大比拼 教学设计科学六年级下册冀人版
- 2025-2026学年密度教学设计缺陷
- 2025-2026学年课的拼音教学设计幼儿园
- 2025-2026学年明胶制作教学设计
- 设计院实习报告(17篇)
- 食品公司毕业实习报告(13篇)
- 2026年卫生信息化系统管理岗医疗卫生事业招聘考试笔试试题(含答案)
- 大学英语四级词汇表 (完美打印版)
- 精神科患者的团体治疗护理
- DB54∕T 0533-2025 公路养护预算指标(定额)
- 5.1《从小爱劳动》课件 统编版道德与法治三年级下册
- 高校教师资格证之高等教育学完整版及答案【历年真题】
- 儿童智力障碍课件
- T/CIS 67002-20213种剧毒鹅膏菌的物种鉴别PCR扩增-Sanger测序法
- 仁爱科普版(2024)七年级下册英语期末复习:语法填空+阅读理解+完型填空 解题技巧+练习题汇编(含答案解析)
- 《高速公路互通式立交桥设计原理》课件
- 社会工作概论课件
评论
0/150
提交评论