如何向系统写入Event Log

需求来源:记载Application的错误日志,写Event Log到System中。

Event Log机制分析:

解决方案:
1:.NET部署WebService写Event Log到System
    .NET中提供了功能强大的EventLog类,可以很方便的写入,WebService集中式部署,管理也很方便。
    可是不足的是WebService权限的问题,每次写Event Log需要注册Event Source(因为Source不是固定的,所以无法提前注册)到Application节点,这就要求WebService具有Administrator权限,可以向系统注册表中添加节点以完成Source的注册。这样就需要对ASPNET用户赋Admin权限,安全性就会降低。所以这种方案就流产了。

2:VB写COM组件调用API函数写Event Log到System
    如上图所示,是写Event到System的流程图。这里注册Source用到的API函数为advapi32.dll中的RegisterEventSource函数,对应的关闭关联函数为DeregisterEventSource。写日志到System则调用ReportEvent函数实现。
    在写COM的过程中,还发现一个比较好玩的东西,就是,Event Log有一个MachineName的属性,将其赋值为同事的电脑名称,结果照样可以写入Log(日志攻击?)。后来测试,不同网域居然也可以写入,怀疑只要是在同一个局域网内都是可以写入的(具体原因还没有搞清楚)。
    COM有一个比较好的优点就是:可以被我们现有的几乎所有的语言开发的系统所调用。
    VB:将该COM Add Reference到程序,创建EventLog对象,写入相应属性并调用WriteEventLog方法实现Event Log的写入
    ASP:注册COM到Web Server,创建COM EventLog对象,其余同VB
    .NET:注册COM到Web Server,Add Rerference到Application,就可以象使用其他类的方式去使用了
    Store Procedure(SQL Server):可以参考(http://blog.csdn.net/venus0314/archive/2005/07/12/422387.aspx
    Java:目前正在Try的过程中
    Unix上Pro*C:初步设想通过FTP将Pro*C生成Log导入到NT中
所以目前,2方案只能说是部分成熟,还有待于进一步研究。

不过这次通过做这个东东,了解了很多关于WebService和COM方面的知识,收获不小

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值