home Glamenv-Septzen(ぐらめぬ・ぜぷつぇん)(archive)

日記/2009/01/06/YakiBikiのログ出力追加でメモ

作成日: 2009-01-06 16:28:45   /   last updated at: 2009-01-06 16:43:52
カテゴリ: YakiBiki 

ログ出力を追加しようと思って弄っていて、ふとログフォーマットどうなってたか見直してみた。
PEARのLogライブラリを使っているのだけれど、$identの初期化を

$ident = "'" . yb_Var::server('REMOTE_ADDR') . "' - " . session_id();
→
'192.168.1.1' - abcd123456789...

みたいにしていた(yb_Logクラス)。「ああ、そういえばそうしていたなぁ。」と懐かしくスルーしようとしたが。

「あ、session_regenerate_id() されたら追えなくなるじゃん。」

yb_Session::start()の中で、一定期間を経過していたらyb_Session::regenerate_id()を呼ぶようにしている。これが動いてしまうと、途中から別のセッションIDになるため追跡できなくなる。
regenerateするタイミングで新旧のセッションIDをログに出すか・・・とも思ったんだけど、yb_Sessionの中でyb_Logが混ざりこむのってなんか気持ち悪い。

なので、$identの初期化はこんな感じに、user_contextから取得したユーザ名も括弧付きで出すように修正した。

$uc = yb_Session::user_context();
$ident = "'" . yb_Var::server('REMOTE_ADDR') . "' - " 
    . session_id() . '(' . $uc['name'] . ')';

ログ出力はyb_mdl_系の、つまりロジックレイヤーに埋め込むわけだけど、

  • マスタ系は create, update, delete 時にIDと名前、あるいはserialized()データ
  • データは・・・
    • 新規作成時(含テンプレート指定)
    • コピー時
    • データ編集時
    • データ情報変更時
    • バージョン情報変更時(現在バージョン変更、承認、削除)
    • コメント追加,削除,承認時

そんな感じで。データ変更の場合のログも、データのIDとあとタイトルとか関連IDとか。長くしない。

データのviewやrawでのダウンロードは・・・Apacheのログで良いよね、ということで入れてない。
ただしDataTypeがAttachの時のrawダウンロード時のみ入れておいた。意識してclickしないとDLは発生しないし、「誰がいつデータをDLしたか」というのを見たい、というのが元々の目標でもあるので、まぁここについては入れておく。画像の場合はviewのタイミングでimgタグのsrc属性経由でrawモジュールが動いてしまうので、あんまり意味ないし、「誰がいつ」をきっちり取りたいという対象でもない。

とりあえず以上。

original url: https://www.glamenv-septzen.net/view/146