[All]
TEventLogger.LogMessageでイベント出力されない症状について
Abstract: 発生している症状に関する解決方法について説明します。

対象となるIDE製品のバージョン
・XE3 ~ XE7
対象となるターゲット環境
・Windows 2012 Server + IIS 8.0
・DataSnap、WebBroker(64ビット)

問題
特定の環境(例えば、Windows 2012 Server+IIS8.0)で動作するISAPI DLL(64ビット)を作成し、そのアプリケーションからTEventLogger.LogMessageメソッドを呼び出しても
イベントが出力されない症状が発生します。
この症状は、TEventLogger. LogMessageメソッドの中で、Windows APIのRegisterEventSource関数を呼び出し、イベントログの登録済みハンドルを取得しているのですが、このハンドルを保持するTEventLoggerクラスのメンバー変数(FEventLog)の型がTHandleではなく、Integerとして定義されているために生じます。
この不具合(定義の間違い)は、32ビットアプリでは潜在的な問題はあったものの実行には支障はありませんでしたが、64ビットアプリの実行でその問題が顕在化されました。

解決
この問題を解決するには、TEventLogger. LogMessageメソッドを利用せず、Windows APIを呼び出すか、Vcl.SvcMgr.pasの該当箇所を修正し、自身のプロジェクトへ組み込んでください。

Vcl.SvcMgr
=======================
(修正前)
type
{ TEventLogger }
TEventLogger = class(TObject)
private
FName: String;
FEventLog: Integer;
..
(修正後)
type
{ TEventLogger }
TEventLogger = class(TObject)
private
FName: String;
FEventLog: THandle;
..