#author("2019-12-12T16:35:33+09:00","","")
#logparanoia()
//

** logparanoia.inc.php [#r6e09c05]
|RIGHT:100|LEFT:360|c
|~サマリ|環境変数を指定等、カスタマイズ性能を重視したアクセスログ|
|~リビジョン|1.0|
|~対応バージョン|1.4.5_1(他は未確認)|
|~投稿者|[[dnoc]]|

目次
#contents
** 特徴 [#w35a60b3]
アクセスログをとるプラグインです。
同様の用途で、[[access.inc.php>自作プラグイン/access.inc.php]] 等いくつかありますが、以下の点が特徴的です
+カスタマイズ性の向上~
ユーザーが希望するアクセスログの記述が可能です。一方で、デフォルトの設定でも十分に使える設定となっております。
反対に、アクセスログが可変なので、自前ではアクセス解析ソフトは提供しませんでした。替わりに、拙作[[webdl.inc.php>自作プラグイン/webdl.inc.php]]でログファイルをダウンロードして、表計算ソフトででも解析して下さい。
++任意の環境変数を登録可能~
通常、アクセスログ解析ソフトは、決まった環境変数だけを表示するように設計されています。「荒らし対策にipアドレスだけわかればそれで十分」という場合や「認証ページのユーザー名も登録したいんだけど・・・・」という場合に対応することが面倒です。当プラグインでは、ユーザーが望む環境変数を一行追加するだけで対応可能です。なお、デフォルトでは、ページ名、コマンド名、プラグイン名、IPアドレス、ホスト名、参照ページ元、ブラウザ名が登録されています。
++連続アクセスの定義~
アクセスログ解析ソフトには、リロードなどで連続アクセスがあった場合に、ログの容量を抑えるため、省略する機能が付いています。当ソフトでは、IPが一致した場合は全て省略、IPとページ名が一致した場合は省略、等、一致条件をandで結合することが可能です。デフォルトでは、ページ名、コマンド名、IPアドレス、ブラウザ名が全て一致した場合です。((ページ名、コマンド名が入っているのは、ページ間の移動経路を調べるためです。ブラウザ名が入っているのは、あるブラウザで表示が乱れて他のブラウザで表示しなおしたことを認識するためです))
++特定のIPアドレスを登録~
特に特徴という程ではないですが、自分のIPアドレスを登録して、ログに記載しないことも出来ます。正規表現で記述できるので、範囲指定なども出来ます。
+ページを跨いだ統合管理が可能~
複数のページをまたいだ統合管理が一つのログで可能です。設置方法としては、各ページに設置する方法と、スキンに埋め込んで一括管理する方法を選択できます。
+自動バックアップ機能~
ユーザーが指定したファイル容量を超えたときには、自動的に別名で保存します。バックアップファイル名はバックアップ時刻なので、分かりやすいと思います。
** ダウンロード [#ea5b83e7]
#ref(logparanoia.inc.php)
** インストール [#zdce0a6c]
+ ./plugin ディレクトリにlogparanoia.inc.phpをアップロードする。
+ ./logparanoia ディレクトリを作り、パーミッションを707以上にする。(2006/2/13訂正((jrk813さんに感謝いたします。)))

[[.htaccess]]が設置できないサーバーで、外部からログファイルを見えなくする方法
+空のlog.txtをlogparanoiaディレクトリに事前に作っておく。既に出来ている場合は、バックアップをとり新規に作成する。
+パーミッションを602か622にする。
こうすることによって、ファイルは見えなくなりますが、webdl.inc.phpでダウンロードしたり、アクセス解析プラグインを利用することが不可能になります。この場合は、FTPでログファイルをダウンロードして下さい。
** 設置方法 [#h0e255c0]
+各ページに設置~
ページ内で~
 #logparanoia()
と記述する。~
+スキンに登録~
pukiwiki.skin.phpの中に
 <?php require_once(PLUGIN_DIR. 'logparanoia.inc.php');
 echo plugin_logparanoia_convert() ?>
という2行を追加します。場所は、私は</body>のちょっと上くらいに書いています。

** カスタマイズ [#j4298cd5]
 define('DIR',"./logparanoia/");
ログディレクトリ名です。
 define('LOGFILE',"log.txt");
ログファイル名です。
 define('LASTFILE',"last.txt");
前回のアクセスを記述するファイル名です。
 define('SIZEMAX',10000000);
ログファイルのサイズ上限です。これを超えたら別名で保存します。

 $w_env = array(
    "time" => time(),
    "page" => $vars["page"],
    );
登録項目名です。
左側に、貴方が自由に名づけるkey「=>」の右側には、サーバーで表示可能な環境変数名を設定できます。

 $eliminate_same = array("page", "cmd", "ip", "user_agent");
$w_envで左側に指定したkey名を追加します。このkey全てが一致した時、アクセスログには追加されません。この機能をオフにしたい場合には、
 //$eliminate_same = array("page", "cmd", "ip", "user_agent");
というように行頭に//を追加します。~
追記:バグで、この機能をオフにすると動かなる場合があります。次期バージョンで訂正いたします。

 $eliminate_ip = array("192.168.0.1");
ここに記載されているIPアドレスのアクセスはログファイルに記載されません。
ここでは正規表現で評価されるので"^192.168."とかすれば範囲指定が出来ます。反対に"192.168.0.1"だと、192.168.0.10とかも適合しますので、IPを直接指定したい場合は"^192.168.0.1$"と指定して下さい。
デフォルトではコメントアウトされています。

** アクセス解析 [#t4bd452a]
拙作、[[webdl.inc.php>自作プラグイン/webdl.inc.php]]でログファイルをダウンロードして下さい。アクセスログの書式はタブ区切りなので、表計算ソフトで集計可能です。~
ただ、デフォルトではUNIX時間なので、
EXCELで日本時間(JST)に変換するには~
 ="1970/1/1"+(A2+32400)/86400
というようにした後、セルの書式を日付に変更して下さい。
それが面倒くさい場合は、$w_envの該当箇所を    
 //"time" => time(),
   "time" => date("YmdHis"),
という風に書き換えて下さい。((デフォルトでJSTにしていないのは、後でアクセス解析ソフトを作る際、標準化しにくそうだからです。2038年問題に注意))~
また、EUCで記述されますので、Windowsで取り扱う際にはnkfでs_jisに変換するか、各種漢字コードに対応したテキストエディタを利用してください。((私は、xyzzy (www.jsdlab.co.jp/~kamei/) で開き、s_jisで保存した後、表計算ソフトで開き直しています。))~
後、書式は、ファイル頭に、$w_envのkey、つまり、定義をタブ区切りで表記し、以下各列に対応した値をタブ区切りで書き込んでいるだけです。
この書式に対応したアクセス解析プラグインとか自由に作って下さい。~
追記((うしさん、jun.oさん、すまいさんに感謝いたします。)):コメント欄参照、うしさんがアクセス解析を作成してくださいました。
-訂正事項:デフォルトでは
 //  "time" => date("YmdHms")
となっており、
--YmdHmsをYmdHisへ変更(jun.oさんからの情報提供)
--最後にカンマがないので追加(すまいさんからの情報提供)

** ライセンス [#jf341e3d]
Artistic License
** to do [#he3a0c75]
アクセス解析プラグインを作る。~
連続アクセスに関するバグ訂正~
ulrエンコーディングから日本語に変換して記録するオプションの追加(アクセス解析プラグインを作ったら、この機能は作らないかもしれないです。
//

トップ   差分 履歴 リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS