ログ出力を追加しようと思って弄っていて、ふとログフォーマットどうなってたか見直してみた。 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モジュールが動いてしまうので、あんまり意味ないし、「誰がいつ」をきっちり取りたいという対象でもない。 とりあえず以上。