版权归原作者所有,如有侵权,请联系我们

[科普中国]-异常记录

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

简介

异常记录是指计算机系统用于记录异常数据项的集合。在计算机系统中,异常记录一般保存在日志文件中,即对异常记录分析,通过调用有关的日志文件即可。异常记录保存和分析能帮助人们进一步发现软件系统和硬件的不足,促进对系统的优化。在实际应用中,异常记录有时是指系统收集某些记录与实际记录不符合,例如收集气象有关记录时,经常会出现一些异常记录。

日志文件在计算机领域,日志文件(logfile)是一个记录了发生在运行中的操作系统或其他软件中的事件的文件,或者记录了在网络聊天软件的用户之间发送的消息。日志记录(Logging)是指保存日志的行为。最简单的做法是将日志写入单个存放日志的文件。许多操作系统、软件框架和程序都包含日志系统。广泛使用的一项日志标准是syslog,它在互联网工程任务组(IETF)的RFC 5424中定义。syslog标准使专门的标准化子系统得以生成、过滤、记录和分析日志消息。这可以减轻软件开发人员设计和编写自己的临时日志系统的难度。运行日志文件主要分为两种格式: 以记录为单位的运行日志文件和以数据块为单位的运行日 志文件。以记录为单位的日志文件需要登记的内容包 括: 各个事务的开始标记,各个事务的结束标记,各个事务的所有更新操作。每个事务开始的标记、 结束标记和每个更新操作均作为日志文件中的一个 日志记录。日志记录的内容包括: 事务标识、操作 的类型(插入、删除或者修改)、操作对象(记录内部 标识)、更新前数据的旧值、更新后数据的新值。以数据块为单位的日志文件记录的内容包括事 务标识和被更新的数据块。由于将更新前的整个块 和更新后的整个块都放入日志文件中,操作的类型 和操作对象等信息就不必放入日志记录中1。日志一般可以分为事件日志、事务日志和消息日志。

事件日志(Event logs)记录了在系统运行期间发生的事件,以便于了解系统活动和诊断问题。它对于了解复杂系统的活动轨迹至关重要,尤其是只有很少用户交互的应用程序(例如服务器应用程序)。集成多个来源的日志文件条目也是有用的。这种方法通过集成的统计数据分析,可能揭示出不同服务器上看似不相关的事件的相关性。其他解决方案则采用网络范围的查询与报告机制。

大多数数据库系统都维护某种事务日志(transaction log),它们的作用并不是为了后续分析的审计活动,也不是为了便于人类阅读。这些日志记录了对存储数据的更改,以允许数据库在发生崩溃或其他数据错误后恢复并维护存储数据的一致状态。因此数据库系统通常具有常规事件日志与事务日志。

消息日志:互联网中继聊天(IRC)、即时通信(IM)、有聊天功能的点对点网络文件共享客户端,以及多人电子游戏游戏(尤其是MMORPG)通常都有自动记录(保存)文本通信的功能,无论它是用户之间的公开还是私密通信。消息日志一般都是普通的纯文本文件,但即时通信和VoIP客户端(支持文字聊天,例如Skype)也可能使用HTML或某种自定义格式保存它们,以便于阅读或加密。

记录记录是一组相关数据项的集合,用于描述一个对象在某方面的属性。一个记录应包含哪些数据项,取决于需要描述对象的哪个方面。而一个对象,由于他所处的环境不同可把他作为不同的对象。例如,一个学生,当把他作为班上的一名学生时,对他的描述应使用学号、姓名、年龄及所在系班,也可能还包括他所学过的课程的名称、成绩等数据项。但若把学生作为一个医疗对象时,对他描述的数据项则应使用诸如病历号、姓名、性别、出生年月、身高、体重、血压及病史等项。在诸多记录中,为了能惟一地标识一个记录,必须在一个记录的各个数据项中,确定出一个或几个数据项,把它们的集合称为关键字(key)。或者说,关键字是惟一能标识一个记录的数据项。通常,只需用一个数据项作为关键字。例如,前面的病历号或学号便可用来从诸多记录中标识出惟一的一个记录。然而有时找不到这样的数据项,只好把几个数据项定为能在诸多记录中惟一地标识出某个记录的关键字2。

异常处理异常处理,是编程语言或计算机硬件里的一种机制,用于处理软件或信息系统中出现的异常状况(即超出程序正常执行流程的某些特殊条件)。异常处理作为一种有效的软件容错机制一直得到学术界和工业界的广泛研究和应用3。各种编程语言在处理异常方面具有非常显著的不同点(错误检测与异常处理区别在于:错误检测是在正常的程序流中,处理不可预见问题的代码,例如一个调用操作未能成功结束)。某些编程语言有这样的函数:当输入存在非法数据时不能被安全地调用,或者返回值不能与异常进行有效的区别。例如,C语言中的atoi函数(ASCII串到整数的转换)在输入非法时可以返回0。在这种情况下编程者需要另外进行错误检测(可能通过某些辅助全局变量如C的errno),或进行输入检验(如通过正则表达式),或者共同使用这两种方法。通过异常处理,我们可以对用户在程序中的非法输入进行控制和提示,以防程序崩溃。从进程的视角,硬件中断相当于可恢复异常,虽然中断一般与程序流本身无关。

从子程序编程者的视角,异常是很有用的一种机制,用于通知外界该子程序不能正常执行。如输入的数据无效(例如除数是0),或所需资源不可用(例如文件丢失)。如果系统没有异常机制,则编程者需要用返回值来标示发生了哪些错误。