监控日志管理(精选3篇)
监控日志管理 篇1
摘要:利用钩子技术应用程序可以监视指定窗口的某种消息。介绍了Windows钩子的基本概念和类型,并在Visual Basic下,利用日志记录钩子编程实现了键盘监控功能。
关键词:VB,日志记录钩子,键盘监控
1 Windows钩子
在Windows操作系统中,钩子(Hook)是消息处理机制的一个平台,应用程序可以安装钩子以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,钩子函数会在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理Windows消息或特定事件。
Windows安装的钩子有两种类型:局部钩子和远程钩子。它们的区别在于处理消息的范围不同。局部钩子仅挂钩属于自身进程的事件;远程钩子除了可以挂钩自身进程的事件,还可以挂钩其他进程中发生的事件。远程钩子又分两种:基于线程的和系统范围的。基于线程的远程钩子用来捕获其他进程中某一特定线程的事件;而系统范围的远程钩子将捕捉系统中所有进程中发生的事件消息。
日志记录钩子(WH_JOURNALRECORD)是一种比较特殊的钩子类型,它用来记录发送给系统消息队列的所有消息。当安装了一个局部钩子时,每当指定的事件发生时,Windows就会调用进程中的钩子函数;但是若安装的是远程钩子,系统则不能从其他进程的地址空间中调用钩子函数,因为两个进程的地址空间是隔离的,由于系统中只有DLL程序是可以插入到其他进程的地址空间中去,所以远程钩子的钩子函数必须位于一个动态链接库中,而且必须是共享数据段的动态链接库。日志记录钩子之所以说它特殊就在于虽说它是远程钩子,但却不用将钩子函数放在动态链接库中,这就为监视系统范围的消息提供了方便。文中就是利用日志记录钩子来实现系统范围内的键盘记录功能。
安装钩子会影响系统的性能,因为系统在处理所有的相关事件时都会调用钩子函数,特别是监视范围是整个系统范围的全局钩子。如果钩子函数中的处理代码过多的话,系统运行速度将会明显减慢,所以对于全局钩子一定要小心使用,不需要的时候应该立刻卸载。
2 程序设计
2.1 程序界面
启动Visual Basic 6.0,新建一个工程,在窗体中添加一个文本框控件和3个按钮控件。其中文本框控件的Multi Line属性设为True,Scroll Bars属性设为2-Vertical,Enabled属性设为False。3个命令按钮控件的name属性分别为cmd Start、cmd Stop和cmd Clear。程序最终运行效果如图1所示。
2.2 程序代码
程序中日志记录钩子的安装和卸载可以分别使用Win32API函数Set Windows Hook Ex和Unhook Windows Hook Ex来实现。
首先需要在工程中新建一个标准模块,在标准模块中声明一些程序用到的API函数、结构及常量,如下所示:
然后需要在标准模块中定义两个全局变量来保存钩子句柄和窗口实例句柄,如下:
Public h Instance As Long Public h Hook As Long
最后,在标准模块中编写钩子回调函数,如下:
3 结语
Windows钩子在实际应用程序开发中具有广泛的应用。简要介绍了Windows钩子的基本知识,并给出了在VB中利用日志记录钩子实现键盘监控的应用实例,为工程人员开发和使用钩子提供了一定的技术支持。
参考文献
[1]张艳.Visual Basic程序设计.徐州:中国矿业大学出版社,2005.
[2]罗云彬.Windows环境下32位汇编语言程序设计.北京:电子工业出版社,2009.
监控日志管理 篇2
这篇文章主要介绍了Python实现监控程序执行时间并将其写入日志的方法,实例分析了Python日志操作的相关技巧,需要的朋友可以参考下
本文实例讲述了Python实现监控程序执行时间并将其写入日志的方法,分享给大家供大家参考。具体实现方法如下:
# /usr/bin/python# -*- coding:utf-8 -*-from time import timedef logged(when): def log(f,*args,**kargs): print ‘‘‘ called: functions:%s args: %r kargs: %r ‘‘‘ % (f,args,kargs) def pre_logged(f): def wrapper(*args,**kargs):log(f,*args,**kargs)return f(*args,**kargs) return wrapper def post_logged(f): def wrapper(*args,**kargs):now = time()try: return f(*args,**kargs)finally: log(f,*args,**kargs) print “time delta:%s” % (time()-now) return wrapper try: return {“pre”:pre_logged,“post”:post_logged}[when] except KeyError,e: raise ValueError(e),‘must be “pre” or “post”‘@logged(“post”)def hello(name): print “hello,”,namehello(“world!”)‘‘‘等同于: hello = logged(“post”)(hello(“world!”))‘‘‘
施工管理日志 篇3
为规范公司项目项目现场管理,提高项目管理水平,落实各项管理规定,特制订《施工管理日志表》,要求工程部、项目部人员严格按照该表所列内容填写,所填写内容必须保证真实、准确,不得弄虚作假、敷衍了事。此表将作为项目部人员绩效考核的主要依据,公司将对所有填报内容进行不定期抽查。填报要求:
1、此表要求各相关人员每日依据现场实际情况填报,不得遗漏。
2、出勤记录一栏,每日由项目经理记录出勤人员姓名,未出勤人员姓名,如遇请假或调休的要求注明,并附请假条或调休申请。该出勤记录作为公司人事部门每月考勤依据,财务部门依据考勤核发人员工资。
3、工作计划及完成情况一栏,填报原施工计划中当日应该完成的工作,截止记录时已完成的情况及完成的内容,填报的内容要求真实反映当前实际情况。未完成的工作必须填写完成的原因,并填写下一步的补救措施及计划调整安排。
4、施工技术交底一栏,必须记录每日交底的交接人、交接对象、交接内容、交接资料。重要的技术交接,必须由交接人、交接对象共同签字认可。交接工作的记录、文字资料、图纸、变更单等重要文件的原件必须交项目部资料员存档备案。
5、对现场工作中的出现的困难、技术难点,项目部人员要求会同项目负责部门或负责人员共同讨论,找到可行的解决办法,为了在日后工作中避免扯皮、推诿等情况发生,该过程和最终的解决方案必须记录在“解决方案”一栏中。
6、因现场出现较大困难或仅凭项目部力量无法解决的事件,必须及时上报上级领导,不得拖延,上报过程中要求实事求是、不夸大、不隐瞒,待领导批示后按照批示内容办理。凡因不及时汇报情况、拖延汇报而导致的不良后果、公司损失均有直接责任人承担,视造成后果的严重程度给予扣罚绩效工资、基本工资直至开除处理。要求相关人员在“重大事件汇报”一栏中清楚记录汇报的事件、时间、汇报对象。