ログ出力を追加しようと思って弄っていて、ふとログフォーマットどうなってたか見直してみた。
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_系の、つまりロジックレイヤーに埋め込むわけだけど、
そんな感じで。データ変更の場合のログも、データのIDとあとタイトルとか関連IDとか。長くしない。
データのviewやrawでのダウンロードは・・・Apacheのログで良いよね、ということで入れてない。
ただしDataTypeがAttachの時のrawダウンロード時のみ入れておいた。意識してclickしないとDLは発生しないし、「誰がいつデータをDLしたか」というのを見たい、というのが元々の目標でもあるので、まぁここについては入れておく。画像の場合はviewのタイミングでimgタグのsrc属性経由でrawモジュールが動いてしまうので、あんまり意味ないし、「誰がいつ」をきっちり取りたいという対象でもない。
とりあえず以上。
コメント