CO-CONV サポート

文章番号17-017

CO-Store のログをイベントログに記録する設定方法

公開
2017年09月07日
対象製品
  • CO-Store 2.5
  • CO-Store 3.0
  • CO-Store 3.1

概要

CO-Store の各サービスが出力するログをイベントログに記録する方法を説明します。

CO-Store の各サービスの設定ファイル (.exe.config) で設定するという手順となります。

なお、ログ出力設定を変更後のサービス再起動は不要です。設定変更は即時に反映されます。

各サービスの設定ファイルの場所

CO-Store の各サービスに対応する設定ファイルの場所は以下の通りです。

サービス 設定ファイルのパス
CO-Store サーバー C:\Program Files\CO-CONV\CO-Store\Server\CO-StoreServer.exe.config
CO-Store タスクキュー C:\Program Files\CO-CONV\CO-Store\Server\CO-StoreTaskQueue.exe.config
CO-Booter サーバー C:\Program Files\CO-CONV\CO-Store\Booter\CO-BooterServer.exe.config

設定ファイルの例

CO-Store 3.1.0.0 のデフォルトの設定ファイルに対して、イベントログの出力設定を追加した設定ファイルを用意しました。以下のリンクからダウンロードしてください。

また、比較のために、CO-Store 3.1.0.0 のデフォルトの設定ファイルを用意しています。必要に応じて参照してください。

一例として、CO-Store サーバーでイベントログの出力設定を次に示します (追加部分は太字)。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="log4net" type=" log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
    </configSections>

    <appSettings>
    (中略)
    </appSettings>

    <log4net>
        <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">

            <!-- ログ・ファイル名の先頭部分 -->
            <param name="File" value="${ProgramData}/CO-CONV/CO-Store/logs/CO-StoreServer.${COMPUTERNAME}" />

            <!-- 追加書き込み -->
            <param name="AppendToFile" value="true" />

            <!-- 日付ごとにファイルを作成することを指定 -->
            <param name="RollingStyle" value="date" />

            <!-- ログ・ファイル名が固定ではないので“false”を指定 -->
            <param name="StaticLogFileName" value="false" />

            <!-- ファイル名の日付部分 -->
            <param name="DatePattern" value='"."yyyyMMdd".log"' />

            <layout type="log4net.Layout.PatternLayout">
                <!-- ログの書式 -->
                <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
            </layout>

        </appender>

        <!-- イベントログ出力の設定 -->
        <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
            <!-- イベントログに出力するログレベルの範囲 (DEBUG < INFO < WARN < ERROR < FATAL)
                 ここでは、CO-Store の ERROR, FATAL レベルのログをイベントログに出力しています -->
            <filter type="log4net.Filter.LevelRangeFilter">
                <levelMin value="ERROR" />
                <levelMax value="FATAL" />
            </filter>

            <!-- log4net のログレベルとイベントのレベルをマッピング (通常変更する必要なし)
                 ここでは FATAL, ERROR ログをイベントログの Error レベルで記録しています -->
            <mapping>
                <level value="FATAL" />
                <eventLogEntryType value="Error" />
            </mapping>
            <mapping>
                <level value="ERROR" />
                <eventLogEntryType value="Error" />
            </mapping>
            <mapping>
                <level value="DEBUG" />
                <eventLogEntryType value="Information" />
            </mapping>
            <mapping>
                <level value="INFO" />
                <eventLogEntryType value="Information" />
            </mapping>
            <mapping>
                <level value="WARN" />
                <eventLogEntryType value="Warning" />
            </mapping>

            <!-- イベントの記録先等の設定 (実行プログラムに応じて applicationName を変更)
                 logName を Application ではなく CO-Store とすると Application ログではなく
                 CO-Store というログに記録されます -->
            <logName value="Application" />
            <applicationName value="CO-StoreServer" />

            <!-- ログの出力フォーマットを指定 (通常変更する必要なし) -->
            <layout type="log4net.Layout.PatternLayout">
                <!-- ログの書式 -->
                <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
            </layout>
        </appender>

        <root>
            <!-- ログのレベルを指定 -->
            <!-- すべてのログ・レベルを出力 -->
            <level value="INFO" />

            <!-- どのログ出力先を使用するか -->
            <appender-ref ref="RollingFileAppender" />
            <!-- EventLogAppender を利用する -->
            <appender-ref ref="EventLogAppender"/>
        </root>
    </log4net>

    <system.serviceModel>
    (中略)
    </system.serviceModel>

    <runtime>
        <generatePublisherEvidence enabled="false"/>
    </runtime>
</configuration>

基本的には設定例のまま利用できますが、必要に応じてコメントを参照の上変更してください。

最後に追加している <appender-ref ref="EventLogAppender"/> ですが、CO-BooterServer の場合には CO-StoreServer などと異なり、複数の種類のログ出力設定があるのでご注意ください。 設定例では端末起動処理におけるエラーがあった場合を想定して、<logger name="COBooterServer"> のログを対象としています。

補足

CO-Store ではログ出力に log4net というライブラリを利用しています。 このドキュメントで解説した設定も log4net の機能を利用しています。

さらに詳細な設定を行いたい場合には、以下の log4net のマニュアルを参照してください。 https://logging.apache.org/log4net/release/sdk/html/T_log4net_Appender_EventLogAppender.htm

免責条項

CO-Store のログをイベントログに登録するよう設定することによりログ出力が増えた場合にサーバーの負荷が上昇し、動作が不安定になる可能性があります。

ご自身の責任において設定を変更してください。