mursのColdFusionメモ

頭の中から抜け落ちていく情報をメモがわりに書き溜めていくブログです。

ColdFusionからWindowsのイベントログに書き込む実験コード

最近のブラウザではページの翻訳が簡単に表示できるようになったから、メーカーのフォーラムサイトを見ることも苦じゃなくなった。 自分の知らない情報やテクニックがあって、おおっと思うことも多いんだけど、しばらくしたら頭から抜け落ちてしまう。

その中でも、忘れずに覚えておきたいって思ったのが、4月に投稿されたCFからWindowsのEventログに書き込みたいっていう質問。

community.adobe.com

ColdFusionには、CFのログファイルに書き出す<cflog>(関数だとwriteLog())とか、任意のファイルに書き出す<cffile>(関数だとfilewrite())とかはあるけど、Windowsのイベントログに直接書き出すような機能は無い。

なので、イベントログに書き出すとしたら、<cfexecute>でバッチとかパワーシェルを呼び出して何とかできるかなと思っていた(実際に、投稿の返信で<cfexecute>でパワーシェルを実行するコードが紹介されていた)。 その後、<cfexecute>のやり方を紹介した人が<cfobject type=".NET" ...>でも出来たという実験コードを紹介してくれた。もちろん、日本語でも書き込みできる。

<cfobject type=".NET" name="eventLogClass" class="System.Diagnostics.EventLog">
<!--- Obtain an EventLog instance --->
<cfset eventLog=eventLogClass.init()>

<cfobject type=".NET" name="eventLogEntryType" class="System.Diagnostics.EventLogEntryType">
<!--- EventLogEntryType is a C# enum. "Information" type corresponds to the value 4.--->
<cfset eventLogInformationType=eventLogEntryType.Information>

<!--- The event source --->
<cfset eventSource="テストアプリ">

<!--- The event log message, which will be written as 'EventData' --->
<cfset eventMessage="あいうえお">

<!--- Write the message --->
<cfset eventLog.WriteEntry(eventSource, eventMessage, eventLogInformationType)>

実行結果

補足

上記のプログラムを動作させるには、ColdFusion .NET Service が実行されている必要がある。ColdFusionをインストールする際のオプションで「.NET Integration Services」を選択してインストールしておくか、後から、ColdFusionダウンロードページで「ColdFusion(2021 リリース).NET 統合サービスインストーラー」をダウンロードしてインストールする。

helpx.adobe.com