TiarraのログをMySQLに記録する

なんとなく思い立ったので、IRC GatewayのTiarraのログをMySQLに記録してみました。

はじめかた・必要なもの

  1. Tiarra
  2. MySQL
  3. 上の2つが動く/動いているマシン

今回はTiarra/MySQLのインストールは割愛させて頂きます。自分はCentOS5.5にTiarraのSVN版とMySQL 14.12で動かしました。

TiarraへのLog::DBIのインストール

まず、Log::DBIの作者さんのページからスクリプトを貰ってきて、 Tiarraのインストールディレクトリ/module/Log/ に、DBI として保存します。コピペのしすぎに注意しましょう。(←やった
このままでは動かない?ようなので、ここを参考にスクリプトを書きかえます。
その後、tiarra.confに次の記述を書き加えます。

+ Log::DBI{ source: DBI:mysql:Database_name:127.0.0.1:3306 user: user_name pass: password sync: sync }

sourceとuserとpassはてきとーに編集してください。Database_nameのところにはTiarraのログを格納するデータベースの名前を。

MySQL側の設定

てきとーにユーザーつくったりデータベースつくったりしてください。この辺は割愛。だいたいわかるよね!?
データベースを作ったらテーブルを作成します。シェルからなりphpMyAdminからなりから以下のSQLみずg…SQL文を入力してください。

create table channel ( id INTEGER NOT NULL auto_increment, name varchar(255), created_on DATETIME, updated_on DATETIME, unique key (name), primary key (id) ) ENGINE=InnoDB; create table nick ( id INTEGER NOT NULL auto_increment, name varchar(255), created_on DATETIME, updated_on DATETIME, unique key (name), primary key (id) ) ENGINE=InnoDB; create table log ( id INTEGER auto_increment, channel_id INTEGER, nick_id INTEGER, log text, is_privmsg tinyint(4), created_on datetime, updated_on datetime, foreign key (channel_id) references channel (id), foreign key (nick_id) references nick (id), primary key (id) ) ENGINE=InnoDB;

実際に使ってみる

Tiarraを再起動するなり、IRCクライアントから/loadするなりでモジュールを読み込み直します。

以上.

こんな感じ。