Windowsイベント ログにロギングする方法について


説明

Sitecore CMSでは、log4netライブラリを使用し、web.configファイルからの「LogFolder」設定に従って「Data\logs」フォルダのSitecoreのログ ファイルにログのステートメントを出力します。

デフォルトでは、log4netは「SitecoreLogFileAppender」アペンダーを使用するように設定されています。しかし、log4netライブラリには「EventLogAppender」などの他のビルトイン アペンダーが含まれています。

log4netライブラリによってサポートされているアペンダーの一覧については、以下のリンクをご参照ください:
http://logging.apache.org/log4net/release/config-examples.html

「EventLogAppender」は、Sitecoreインスタンスがデプロイされているワークステーションの、Windows Applicationイベント ログにロギングするためのアペンダーです。

解決策

Sitecore CMSが「EventLogAppender」アペンダーを使用するよう、以下の手順に従って設定することをお薦めします。

  1. web.configファイルの変更:web.configファイルの「\configuration\log4net」要素に以下の行を追加します。
    <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender, Sitecore.Logging" >
      <param name="ApplicationName" value="Sitecore CMS" />
      <param name="Threshold" value="ERROR" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%4t %d{ABSOLUTE} %-5p %m%n" />
      </layout>
    </appender>
    ※「ApplicationName」パラメータには、Windowsイベント ログの「Source」フィールドに表示されるアプリケーション名を指定することが可能です。
    「Threshold」パラメータには、Windows Applicationイベント ログに出力させたいログ レベルを指定することが可能です。
  2. web.configファイルの変更:web.configの「\configuration\log4net\root 」要素に以下の行を追加します。
    <appender-ref ref="EventLogAppender" />
  3. Sitecore CMSがWindows Applicationイベント ログ ファイルにロギングするよう、「regedit.exe」ツールを実行します。
  4. Windowレジストリにて、以下のレジストリ キーを作成します:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application\Sitecore CMS
    ※:レジストリ キーは、「EventLogAppender」アペンダーの「ApplicationName」パラメータに指定された値と同じ値をもつ必要があります。
  5. 「Sitecore CMS」レジストリ キーに、「EventMessageFile」値をもつ名の文字列値および「\%SystemRoot%\Microsoft.NET\Framework<bitness>\<version>\EventLogMessages.dll」の値を持つデータを作成します。
    <bitness>:アプリケーション プールは64ビット モードに実行されている場合はx64にし、それ以外の場合は空にします。
    <version>:Webサイトのアプリケーション プールが使用するように構成されている.NET Frameworkのバージョン(v2.0.50727またはv4.0.30319)。
    Sitecore CMSのWebアプリケーションを再起動して、変更を適用します。
  6. 何らかの原因でWindows イベント ビューアでログの情報が確認できない場合は、log4netの内部デバッグを有効にします。「How do I enable log4net internal debugging?(log4net内部デバッグの方法)」節をご参照ください。