日志系统设计(二)

五、日志控制
    1、控制目标
    日志系统要控制的目标包含整个日志内容流转的过程。对日志来源的控制,一般着重于对日志内容的过滤。上面对内容进行分级、分类、制定格式,一个最重要的原因就是对日志内容的过滤。对日志输出控制,主要着重于输出目的,比如是文件还是SYSLOG,以及诸如此类。
    日志控制是日志内容流转过程中的一个强化功能。一般来说,越多的日志内容,对系统跟踪分析更有利,但更多的内容,就越增加分析的难度。所以我们需要通过日志控制这个功能来进行平衡。
   
    2、来源控制
    一个最明显的例子,为了方便调试,可能需要在系统中增加调试信息,在正在发布中,这些是不需要。所以在很多系统发布版本中,都要区分发布版和调试版。如果增加了来源控制系统,那么这些事情就简单多了。我们只要将这些信息简单地分级分类。通过一个逻辑控制,将不需要的给过滤掉。前面的分级分类的工作,在这个时候就会发挥很大的作用。
    在wireshark,原来的ethereal,允许自己编辑过滤条件。POSIX的正则表达式也是个很好的设置过滤条件工具。过滤是来源控制功能的一个很重要的工作。实际上,内容在来源上已经产生,只是没有到达或者说没有必要到达到输出目的地。
   
    3、输出控制
    输出控制是日志控制的一个重要工作,但是这个工作和日志输出会有个概念重合的地方。控制只是负责按规则解释这个内容究竟是否需要输出,至于输出的具体内容,其实和他已经没有什么关系了。

六、日志输出
    日志输出有两个重点功能,就是输出什么样以及往哪里输出。
    1、输出格式
    输出格式,是解释内容是什么样的工作,printf的格式串是很明显的例子。但是一个强大的日志系统可能更为复杂,比如DBMS的日志系统。格式问题往往在日志检索中,或者日志分析中,体现出巨大的作用。在通常的使用中,还是要依赖于分级和分类。不过格式的使用,针对日志内容级别的检索和分析将更为有用。
   
    2、输出目标
    输出目标通常为文件,控制台,syslog,在apache logging项目中还有个telnet。在文件和syslog作为输出目标时,其实和存储已经很相似了。往哪个目标输出是输出控制的功能,不过,每个目标输出内容应该如何输出,就是日志输出的工作了。

    3、telnet
    telnet作为输出目标是很少见,因为他比较复杂,不过,因为他功能强大,所以,在大型服务器中,是非常需要的。在这里必须着重提醒一下。apache logging项目,专门有个功能。telnet配合日志控制,允许在运行期得到更为详细的功能供调试。这是个很重要的特性,他提供了在运行期和系统进行交互的一个手段。

七、日志存储
    日志存储其实是日志输出的一部分,不过是日志输出中一个很特别的部分。日志输出可能没有IO操作,只在内存中完成操作,但是日志存储是必须存储到物理磁盘中。这个特性就会涉及到一个效率问题。我们知道IO操作和内存操作的性能级别不是一个数量级的。当日志系统涉及到存储时,就必须考虑到性能问题。当大量的数据频繁地被写入到磁盘中,性能问题就更为严重。必须采取更有效的措施来避免写盘操作对其他系统的影响。



你可能感兴趣的:(程序开发,存储,logging,工作,正则表达式,apache,磁盘)