home ホーム search 検索 -  login ログイン  | reload edit datainfo version cmd icon diff delete  | help ヘルプ

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

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

日記 / 2009 / 01 / 06 / YakiBikiのログ出力追加でメモ (v1)
id: 146 所有者: msakamoto-sf    作成日: 2009-01-06 16:28:45
カテゴリ: 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モジュールが動いてしまうので、あんまり意味ないし、「誰がいつ」をきっちり取りたいという対象でもない。

とりあえず以上。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-01-06 16:43:52
md5:9a4ab12215aa808b326b71a7bc6f7d29
sha1:be650de9b79962d570a1783091a23a053f025fd2
コメント
コメントを投稿するにはログインして下さい。