サポート > 管理者ガイド > 詳細な更新履歴をログに出力する
更新ログの内容
R6.7 Update 2より、更新処理を行ったとき、ログファイル(logs\system.log)に次のような記録を残すことができるようになりました。
updateTest|DoUpdate:1000| モデル'test'の項目'タイトル'の値'テスト'が'テスト2'に変更されました。
変更のみならず、値の追加ならびに削除にも対応しています。
設定方法
「Wagbyユーザ会 - 特典情報(会員様限定)- 更新ログ出力機能」をお読み下さい。
出力書式のカスタマイズ
ログの出力書式は $(DEVHOME)\env\template フォルダに含まれる jfcapp_ja.properties.UTF8 ファイルで規定されています。同ファイルを(文字エンコーディング UTF8 に対応した)テキストエディタで開き、"__jfc_common.changelog.format." ではじまるエントリに対応した部分を修正してください。
__jfc_common.changelog.format.add= モデル'%model'の項目'%item18n'に値'%uvalue'が追加されました。 __jfc_common.changelog.format.change= モデル'%model'の項目'%item18n'の値'%ovalue'が'%uvalue'に変更されました。 __jfc_common.changelog.format.delete= モデル'%model'の項目'%item18n'の値'%uvalue'が削除されました。 __jfc_common.changelog.format.master.add= マスタモデルのID%idに、値'%uvalue'が追加されました。 __jfc_common.changelog.format.master.change= マスタモデルID%idの値'%ovalue'が'%uvalue'に変更されました。
ここで %model, %item18n, %ovalue, %uvalue は特別表記です。それぞれモデル名英語、項目名日本語、変更前の値、変更後の値を指します。
※ 英語リソースは jfcapp_en.properties.UTF8 を修正してください。
同ファイルを変更後、再ビルドすることで(変更フォーマットが)反映されます。
CHANGELOG関数
関数 CHANGELOG を使うことで、直前の更新情報(文字列)を取得することができます。 ここでは、更新ログを繰り返しコンテナに保存することで、任意のデータに関するすべての更新ログを画面に表示するサンプル定義を紹介します。
- 更新履歴を繰り返しコンテナに保存します。一回の更新作業(複数の項目の変更を含む)を、一つのコンテナにレコードとして保存するという設計です。
- この繰り返しコンテナは、更新時に「初期値設定の前」というタイミングで「先頭に追加」するものとします。コンテナの先頭に、最新の更新ログを格納しようとしています。
- コンテナ内の項目に、初期値-四則演算を定義します。先頭項目にCHANGELOG関数の値を設定する、という式になっています。
IF( CID()==FIRST(${changelog/cid}), CHANGELOG(), ${changelog/ccontent} ) - CHANGELOG関数を格納する文字列型項目は(複数の情報を表示させるため)テキストエリアとします。また、読み込み専用とし、利用者による変更が行えないようにします。
サンプル定義ファイル
上記設定を行った、更新ログをモデルのデータとして保存するサンプルの定義ファイルです。
- testCHANGELOG.zip [2012.4.27, R6.7Update2]
この定義ファイルを展開し、R6.7 Update 2 以降でビルドすることで、モデル毎の更新ログ保存動作を確かめることができます。(上で示した定義は、同ファイルに含まれる "test3" モデルに相当します。)
繰り返しコンテナの末尾に更新履歴を追加する場合
図1の実行例は、繰り返しコンテナ「変更履歴」の先頭に、最新の更新履歴を追加しています。これをコンテナの末尾に追加するには、図3および図4の定義を次のように変更します。
- 図3の「繰り返し項目の自動増減」を「先頭に追加」から「末尾に追加」に変更する。
- 図4の式において、FIRST関数をLAST関数に変更する。
IF(
CID()==LAST(${changelog/cid}),
CHANGELOG(),
${changelog/ccontent}
)
よくある質問と回答
更新ログを残す運用では、ログファイルが巨大になることが心配です。
Wagbyではログファイルは日次単位で保存されるため、その日に発生したログ単位でファイル化されます。従って、運用していくとログファイルが日々、巨大化するということはありません。
また、本機能はプロジェクト全体で利用することも、モデル単位で利用することもできます。ログファイルのサイズ制約については、対象モデルを個別に指定することで対応してください。
このデータは誰によって更新されたかを(日をまたいで)追いかけることができるツールはありますか。
ログファイルはテキスト形式ですので、単純にすべてを検索することで情報を取得することはできます。 しかし現在は、専用のツールは提供されていません。将来の Wagby でこのような運用ツールの提供を検討してまいります。





