略论并行处理系统的日志设计

作者:朱金灿

来源:http://blog.csdn.net/clever101

一般来说桌面软件以单机单进程的方式运行,在调试程序时可以方便地进行单步调试。而并行处理系统往往以多机多进程的方式运行,一旦出错对于如何定位错误所在成了一件棘手的事情。这时日志调试成为定位错误的有效手段。下面谈谈如何设计日志可以方便地定位错误。

首先是日志文件的命名,最初的命名是采用软件名字.log。发现这样做最新的日志总是把老日志覆盖了,显然这样是不行的。要想新的日志不覆盖旧的日志,就采用了日期时分_GUID.log的命名方式。日期时分可以确定日志是是啥时候生成的,GUID确保新日志不覆盖旧日志。

其次是日志信息的分级。现在我将日志分为:信息和错误两级。信息这一级是为了输出相关的信息;错误级是为了记录出错的地方。以前看到有些软件的日志信息分为多级:信息、警告、一般错误和严重错误。我感觉并无太大必要。这里要具体说下日志要记录哪些内容呢?我想大致是:日志的分级标签、日志产生时间、对应的源码文件和行号、具体的输出信息。比如日志信息分为两级,分级标签可以是info和error。增加分级标签是为了方便日志分析工具来分析日志。

三是日志分析工具。为什么需要日志分析工具?因为随着系统运行时间越来越好长,形成很多日志文件和日志记录,单靠人眼是找不到出错的地方,只有借助软件进行自动化分析。下图是我设计的一个简单的日志分析工具:

这个可以查询某一时间段产生的某一类的日志(比如错误日志或一般的信息输出日志)。

时间: 2024-12-30 18:30:47

略论并行处理系统的日志设计的相关文章

系统操作日志设计(转)

前言 我们在做企业管理系统时,有多多少少都有对数据的完整性有所要求,比如要求系统不能物理删除记录,要求添加每一条数据时都要有系统记录.或者更新某条数据都需要跟踪到变化的内容.或者删除数据时需要记录谁删除了,何时删除了,以便误删后可以通过系统的XXX功能来恢复误删的数据. 我将这种功能称为操作日志 为什么要做操作日志? 其实上文也描述了一些,其主要目的就是跟踪到每一个用户在系统的操作行为,如对数据进行查询.新增.编辑或删除甚至是登录等行为.更进一步的理解可以说是对用户使用系统情况的跟踪,对数据的跟

Java日志系统框架的设计与实现

推荐一篇好的文章介绍java日志系统框架的设计的文章:http://soft.chinabyte.com/database/438/11321938.shtml 文章内容总结: 日志系统对跟踪调试.程序状态记录.数据恢复等功能有重要作用 日志系统一般作为服务进程或者系统调用存在,我们一般程序中使用系统调用 常用日志系统包括log4j的简单介绍 日志系统的系统架构 日志系统的信息分级 日志输出的设计 下面是全文的引用: 在Java领域,存在大量的日志组件,open-open收录了21个日志组件.日

实时海量日志分析系统的架构设计、实现以及思考

1 序 对ETL系统中数据转换和存储操作的相关日志进行记录以及实时分析有助于我们更好的观察和监控ETL系统的相关指标(如单位时间某些操作的处理时间),发现系统中出现的缺陷和性能瓶颈. 由于需要对日志进行实时分析,所以Storm是我们想到的首个框架.Storm是一个分布式实时计算系统,它可以很好的处理流式数据.利用storm我们几乎可以直接实现一个日志分析系统,但是将日志分析系统进行模块化设计可以收到更好的效果.模块化的设计至少有两方面的优点: 模块化设计可以使功能更加清晰.整个日志分析系统可以分

系统权限管理设计 (转)

权限设计(初稿)      1. 前言:      权限管理往往是一个极其复杂的问题,但也可简单表述为这样的逻辑表达式:判断“Who对What(Which)进行How的操作”的逻辑表达式是否为真.针对不同的应用,需要根据项目的实际情况和具体架构,在维护性.灵活性.完整性等N多个方案之间比较权衡,选择符合的方案.      2. 目标:      直观,因为系统最终会由最终用户来维护,权限分配的直观和容易理解,显得比较重要简单,包括概念数量上的简单和意义上的简单还有功能上的简单.想用一个权限系统解

系统权限管理设计 (转:http://blog.csdn.net/chexlong/article/details/37697555)

权限设计(转:http://blog.csdn.net/chexlong/article/details/37697555) 1. 前言: 权限管理往往是一个极其复杂的问题,但也可简单表述为这样的逻辑表达式:判断"Who对What(Which)进行How的操作"的逻辑表达式是否为真.针对不同的应用,需要根据项目的实际情况和具体架构,在维护性.灵活性.完整性等N多个方案之间比较权衡,选择符合的方案. 2. 目标: 直观,因为系统最终会由最终用户来维护,权限分配的直观和容易理解,显得比较重

【转】 C#学习笔记14——Trace、Debug和TraceSource的使用以及日志设计

[转] C#学习笔记14--Trace.Debug和TraceSource的使用以及日志设计 Trace.Debug和TraceSource的使用以及日志设计   .NET Framework 命名空间 System.Diagnostics 包含用于跟踪执行流程的 Trace.Debug 和 TraceSource 类,以及用于分析代码的 Process.EventLog 和 PerformanceCounter 类. 跟踪是一种在应用程序运行时监视其执行情况的方式.当开发 .NET Frame

分布式发布订阅消息系统 Kafka 架构设计[转]

分布式发布订阅消息系统 Kafka 架构设计 转自:http://www.oschina.net/translate/kafka-design 我们为什么要搭建该系统 Kafka是一个消息系统,原本开发自LinkedIn,用作LinkedIn的活动流(activity stream)和运营数据处理管道(pipeline)的基础.现在它已为多家不同类型的公司 作为多种类型的数据管道(data pipeline)和消息系统使用. 活动流数据是所有站点在对其网站使用情况做报表时要用到的数据中最常规的部

系统间接口设计

最近两年一直在和银行.公安.保险.民政等第三方单位之间做接口,写的接口文档不下30份,最初的接口文档漏洞百出,改了又改,丢了不少人,也被批评.埋怨,指责了很多次,久而久之,明白了一个最重要的道理,协作决定接口.双方谈接口时,技术不是最重要的,要兼顾双方技术,成本,工期等等很多因素.但仍有很多技术层面的心得,恰巧上周参与温昱老师的一个性能设计的外训,里面老师讲到了接口设计,正好回来一起整理一下接口设计的经验.主要从3个方面总结一下系统间接口设计:接口定义.接口实现.其他一些注意事项. 一.接口定义

中间件系统的架构设计

中间件系统的架构设计 Master-Slave架构   该系统的本质是希望能够用分布式的方式来处理一些数据,核心思想,就是把数据分发到很多台机器上来处理,然后需要有一台机器来控制N多台机器的分布式处理: 分布式的处理,就会肯定涉及到在Master中要维护这个集群的一些核心元数据.数据的分发处理的调度,处理的具体过程的进度,对集群里存放数据进行描述的一些核心元数据. 这些核心元数据会不断的频繁的修改,无论你是基于外部的文件还是数据库,或者是zookeeper来存放这些元数据的话,其实都会导致他的元