標準のMaharaでは、詳しいログがあまり残りません。ここでは、基本的な情報として、Apache アクセスログに Mahara で認証済みのユーザを入れるための hack を紹介します。

php で apache_note() すると、任意の文字列を apache のログに入れることができます。maharaでは http 認証を使わないので、本来http認証のユーザ名が入る部分に mahara のユーザ名を入れてしまうことが考えられます。

CentOS 6.3 + mahara 1.5.2 での例ですが、以下のようにすると view.php や download.php あたりのリクエストログにユーザ名が入るようになりました。

まず、mahara のコードを修正。

auth/user.php

    637     public function is_logged_in() {

                if ($this->get('logout_time') > 0) { 
                    apache_note('AuthUser', $this->get('username')); 
                    return true; 
                } else { 
                    return false; 
                } 

    638         return ($this->get('logout_time') > 0 ? true : false); 
    639     }

としました。

次に、apache の httpd.conf で、ログに %{AuthUser}n が入るようにします。これはサイトごとに違うと思いますが、使っている LogFormat を書き換えればよいはずです。うちの場合は

LogFormat "%h %l %u %t \"%r\" %>s %b" common

LogFormat "%h %l %{AuthUser}n %t \"%r\" %>s %b" maharalog

などと書き換えてログファイルを指定しているところで

CustomLog logs/mahara_log maharalog

としました。これで apache を再起動すればOKです。


トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-09-26 (水) 00:55:23 (1786d)