c++写入应用程序日志(Event Log )
来源:互联网 发布:淘宝优惠券用什么app 编辑:程序博客网 时间:2024/05/22 12:21
日志文件是操作系统的一部分,那么肯定有应用程序编程接口(API)来支持建立日志记录
实例:
HANDLE h;
if ((h = RegisterEventSource(NULL,TEXT("MetaLive"))) == NULL)
{
return FALSE;
}
const char* ps = "pszS1pszS2pszS3";
WORD wType=EVENTLOG_ERROR_TYPE;//EVENTLOG_INFORMATION_TYPE;
DWORD dwID=5001;
int iStr = 1;
BOOL bRet;
DWORD dword;
if (h)
{
bRet=::ReportEvent(h,
wType,
0,
dwID,
NULL, // sid
iStr,
0,
&ps,
NULL);
dword=::GetLastError();
}
//
基于 Windows XP 的计算机将事件记录在以下三种日志中:
1. 应用程序日志
应用程序日志包含由程序记录的事件。例如,数据库程序可能在应用程序日志中记录文件错误。写入到应用程序
日志中的事件是由软件程序开发人员确定的。
2. 安全日志
安全日志记录有效和无效的登录尝试等事件,以及与资源使用有关的事件(如创建、打开或删除文件)。例如,
在启用登录审核的情况下,每当用户尝试登录到计算机上时,都会在安全日志中记录一个事件。您必须以 Administrator
或 Administrators 组成员的身份登录,才能打开、使用安全日志以及指定将哪些事件记录在安全日志中。
3. 系统日志
系统日志包含 Windows XP 系统组件所记录的事件。例如,如果在启动过程中未能加载某个驱动程序,则会在
系统日志中记录一个事件。Windows XP 预先确定由系统组件记录的事件。
本文,我们专注于第一类应用程序日志,介绍如何写入一条EventLog。Windows使用ReportEvent 报告应用程序消息,
下面就对这个函数做点简单的介绍。
Parameters
hEventLog
事件标志。这个是 RegisterEventSource 返回的handle.
wType
事件的类型。可以是如下中的一个:
Value Meaning
EVENTLOG_ERROR_TYPE Error event
EVENTLOG_WARNING_TYPE Warning event
EVENTLOG_INFORMATION_TYPE Information event
EVENTLOG_AUDIT_SUCCESS Success Audit event
EVENTLOG_AUDIT_FAILURE Failure Audit event
wCategory
指出消息种类。这个地方是由源自己定义的,可以是任何值。
dwEventID
事件标识。根据我的理解,这里的标识在使用时,会又源解释为具体的含义。比如:2001表示文件打开错误等等。
因此,要想设定完整的Event Log还需要在系统中注册一个解释的服务程序。示例程序并没有设计这个服务,
读者可以参考另外的那个VB程序。
lpUserSid
指向用户安全标示。当不需要安全标示时,该参数可以为NULL.
wNumStrings
给定lpStrings 指向的数组中字符串组的数量。0表示当前没有字符串组。
dwDataSize
给出将写入Evenet Log的数据的大小,以字节为单位。如果这个参数为0,表示当前没有事件数据。
lpStrings
指向一个缓冲区,其中是一个以0为结尾的字符串数组,这个数组将会添加到消息中。即使dwDataSize 参数为0,
这个参数也必须是有效的指针(或者为NULL)。数组中每个字符串最大为32K 字节。
lpRawData
指向包含二进制数据的缓冲区。即使dwDataSize 参数为0,该项也必须是一个有效的指针(或者为NULL).
Return Values
如果执行成功,返回非零值,表示事件入口已经写入日志。
如果执行不成功,返回0.
- c++写入应用程序日志(Event Log )
- c++写入应用程序日志(Event Log )
- 写Windows应用程序日志(event log)
- c语言实现log日志的写入
- linux环境应用程序LOG日志打印(C语言)
- 写入应用程序日志
- 如何向系统写入Event Log
- log日志:简单的log日志输出(C++)
- ASP.NET程序向Event Viewer写入Event Log
- 将异常写入事件日志中(一):将异常写入应用程序的事件日志中
- Delphi应用程序日志写入系统日志
- Delphi应用程序日志写入系统日志
- 用C语言打印日志(Log)
- C#Log日志
- 错误日志System.log写入问题
- Android 解读main log和event log日志信息
- yii2 日志操作(log)以及写入不同的log文件
- How to write event log(Event Viewer) using C++ - 用C++如何写事件日志(事件查看器)
- Sybase Adaptive Server Enterprise 15的数据分区
- spring aop原理(转)
- ASP.NET 2.0 - 导航(Navigation):treeview/menu
- String的用法
- 通用线程:POSIX 线程详解,第 3 部分
- c++写入应用程序日志(Event Log )
- android编写Service入门用法与教程
- C++ VS C#(3):switch,类型转换
- CRT堆内存泄露经验1
- 直接初始化 和 复制初始化 的细微差别
- Exception Handling in WCF using Fault Contract
- 在数据库中建立好友表的问题
- 如何在ASP.NET页面中使用异步任务(PageAsyncTask)
- Spring 2.0中的AOP实现(转)