浏览 common.reg 我们可以看到:
; @CESYSGEN IF CE_MODULES_EVENTLOG
[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/EventLog/System]
"Output"="File"
"File"="SystemLog.xml"
"Format"="XML"
[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/EventLog/System/EventLog]
"EventMessageFile"="eventlogmsgs.dll"
[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/EventLog/Formatters]
"XML"="//windows//eventlog.dll"
"PlainText"="//windows//eventlog.dll"
[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/EventLog/Outputters]
"File"="//windows//eventlog.dll"
"DebugOut"="//windows//eventlog.dll"
; The base directory that EventLogs are written to is specified in EventLogPath.
[HKEY_LOCAL_MACHINE/SYSTEM/ObjectStore]
"EnableEventLog"=dword:1
"EventLogPath"="//windows"
; @CESYSGEN ENDIF
其中,HKEY_LOCAL_MACHINE/SYSTEM/ObjectStore 键值:
- EnableEventLog 指定是否使用事件日志服务。
- EventLogPath 指定日志输出的起始目录。
EventLog 键包含子键 Formatters 和 Outputters,其下各值指定的 eventlog.dll 是系统默认的 formatter and outputter extensions,其源代码可在 $(_WINCEROOT)/PUBLIC/COMMON/OAK/UTILS/EVENTLOG 目录下找到。
formatter and outputter extensions 是指供事件日志服务调用,用以格式化文本并输出到特定设备的动态链接库。程序员通过导出 RegisterFormatExtension、RegisterOutputExtension 和 DoesOutputTypeSupportFormatType 等函数来自定义日志格式和输出目标。
除了 Formatter 和 Outputter 子键,EventLog 键包含的子键都叫做日志。如:
HKEY_LOCAL_MACHINE
SYSTEM
CurrentControlSet
EventLog
System 系统日志
Application 应用程序日志
每个日志可以包含如下值:
- Format 指定以何种格式格式化日志。
- Output 指定以何种方式输出日志。
- File 指定输出文件的路径 (仅 "Output"="File")。
- MaxSize 指定输出文件的最大长度,缺省为 32 KB (仅 "Output"="File")。
日志包含的子键叫做事件源,事件源一般是记录事件的应用程序名称或模块名称。Windows CE 的事件源只支持如下值:
- TypesSupported 指定支持类型的掩码。
- CategoryMessageFile 指定分类消息文件的路径。
- EventMessageFile 指定事件消息文件的路径。
事件消息文件是一个含有消息表的动态链接库,其创建步骤可以参考 Using MC.exe, message resources and the NT event log in your own projects 。