CO-CONV サポート

文章番号17-016

CO-Store 関係のログファイルのローテート設定方法

公開
2017年08月02日
更新
2018年05月11日
対象製品
  • CO-Store 2.5
  • CO-Store 3.0

概要

CO-Store 関係のログファイルは基本的に無期限に保持されますが、保持するファイル数を制限する方法について説明します。

詳細

CO-Store 関連のログファイルは通常 PVS サーバーの C:\ProgramData\CO-CONV\CO-Store\logs\ 以下に保存され、規定の設定では古いログが削除されることはありません。この挙動は、設定ファイルを編集することで変更できます。

対象設定ファイル

ログ出力を設定するファイルは以下です。後述しますが、CO-Booter サーバーの設定については他と異なる部分があります。

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-Store API C:\Program Files\CO-CONV\CO-Store\Server\CO-StoreApi.exe.config
CO-Booter サーバー サービス C:\Program Files\CO-CONV\CO-Store\Booter\CO-BooterServer.exe.config
CO-Store 設定ウィザード C:\Program Files\CO-CONV\CO-Store\Server\CO-StoreConfig.exe.config

CO-Store コンソール

プログラム 設定ファイルのパス
CO-Store コンソール C:\Program Files\CO-CONV\CO-Store\Console\CO-StoreConsole.exe.config

設定例

CO-Store では log4net というライブラリを利用してログ出力を行っています。 基本的にログ出力設定は同じですが、CO-Booter サーバー サービスに関しては少し違う設定を行っているので、分けて解説します。

以下は、CO-Store 3.0 における設定を例とします。CO-Store 2.5 の場合も同様の手順で設定変更は可能です。

CO-Store

CO-StoreServer.exe.config を例に取ると、ログ出力の設定は以下の部分になります。

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

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

上記の設定では、<appender> 要素でログ出力ルール RollingFileAppender を定義し、<root> 要素内で扱うログレベルと、利用するログ出力ルールを指定しています。この場合、日付ごとに 1 つのログファイルを作成し、保持するログファイル数の上限は設定されていません。

以下に、ログを 5MB ずつ分割して 100 世代まで保持し、それ以上古いファイルは削除する設定の例を示します。

<!-- 5MB ずつ分割したログファイルを 100 世代までバックアップする設定-->
<appender name="SizeRollingFileAppender" type="log4net.Appender.RollingFileAppender">

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

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

  <!-- サイズによりファイル分割を行う
   ※ date などにすると保持する世代数の指定はできない -->
  <param name="RollingStyle" value="Size" />

  <!-- 複数世代保持するのでファイル名は固定ではない -->
  <param name="StaticLogFileName" value="false" />

  <!-- 5MB 書き込まれたら次のログファイルに切り替える -->
  <param name="MaximumFileSize" value="5MB" />

  <!-- 最新のログファイル +99 で 100 世代保持する -->
  <param name="MaxSizeRollBackups" value="99" />

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

上記の設定例は、 <appender> 要素を <log4net> 要素の子要素として追加し、<root> 要素内に <appender-ref ref="SizeRollingFileAppender" /> を追加することで利用できます。 また、既存の RollingFileAppender によるログ出力を無効化したい場合は <root> 要素内の <appender-ref ref="RollingFileAppender" /> を削除あるいはコメントアウトすることで無効化できます。

CO-StoreApi.exe.config の既定の設定のように RollingStyleComposite とすると、MaxSizeRollBackups で日付ごとに保持するログファイル数の上限は指定できますが、総数の上限は指定できないので、保持するログファイルの総数をしたい場合は RollingStyle の指定を date から Size に変更してください。

CO-Booter サーバー

CO-Booter サーバーの設定 (CO-BooterServer.exe.config) で は処理内容ごとにログファイルを分けているので 、<root> 要素が設定ファイルにありません。対応するのは複数の <logger> 要素です。

<logger name="COBooterServer">
  <level value="DEBUG"/>
  <appender-ref ref="LogFileAppender"/>
</logger>

<logger name="ClientStatusLogger">
  <level value="ERROR"/>
  <appender-ref ref="ClientStatusErrorLogFileAppender"/>
</logger>

<logger name="AliveCheckLogger">
  <level value="INFO"/>
  <appender-ref ref="AliveCheckRollingFileAppender"/>
</logger>

<logger name="BooterServerDbManager">
  <level value="INFO"/>
  <appender-ref ref="AliveCheckRollingFileAppender"/>
</logger>

ここでは、パケットの処理に伴うログを LogFileAppender で、定期処理を含むログを AliveCheckRollingFileAppender で、端末の異常な挙動を検知した場合のログを ClientStatusErrorLogFileAppender で扱うようにしています。ログ出力設定を書き換える際は、以上の点に留意してください。

補足

ログ出力設定を変更した場合にサービスの再起動等は不要です。

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