Report MagicのCGI出力のフレーム化と日本語化
対象バージョン、環境
- Analog:6.0
- Report Magic: 2.21Report Magic
- OS: Fedora Core 5/Linux カーネル 2.6.20-1.2320.fc5
およそのインストール方法はAnalog用Report Magicドキュメント - SourceパッケージのインストールのままでOKだった。
フレーム化
Report MagicをApache httpdのログ解析ツールであるAnalogと組み合わせて使うとき、大抵はバッチ処理だが、CGIで使う方法もある。ただしこの場合、1ページしか表示できない。これを解決するため、CGIをいじった。
まず、フレームの全頁を作成するバッチ処理のスクリプトを起動し、バッチ処理の完了を確認し、フレームのインデックス頁にリダイレクトするようにした。
変更内容は、
1)まず、anlgform.plのメインとなる実行部分の 「3) PRINT ALL THE COMMANDS」のあたりで、OUTPUTの形式をCOMPUTERとして、OUTFILEとして適当な作業用ファイルを指定。
print ANALOG "OUTPUT COMPUTER\n"; print ANALOG "OUTFILE /tmp/作業用ファイル\n";
2)続いて、終了処理の部分で、ANALOGの処理の完了を待ってから、作業用
ファイルを入力としてrmagicを起動
# 4) WAIT FOR PROCESS TO FINISH. THAT'S IT. unless (close(ANALOG)) { badreq(500, "Program Failure", "Analog failed to run or returned an error code.", "Maybe your server's error log will give a clue why."); print STDERR "[$lt] $progname: \"$analog\" failed to run or returned an erro r code"; print STDERR ": $!" if ($!); print STDERR ".\n"; die; } $ss=`/rmagicのパス/rmagic2.pl /設定ファイルのパス/rmagic.ini`; print "Location: http://フレーム形式のindex.htmlページのURI\n\n";
3)rmagic.iniの変更点としては、[statistics]の項目でFile_In = /tmp/作業用ファイル とすることぐらいか
最後のネック、グラフィックの文字列の日本語化
参考になったのは、下記のサイト。
ログ解析(Analog+ReportMagic)
上記サイトではanalogとreport magicのいずれもがEUC-JPで処理していて、GDで
はUTF-8を入力として仮定しているということだったので、
./lang/ja 以下のファイルをnkf などを使ってUTF-8へ変換し、 ./lang/ja/lang.ini を編集して [Language] CharacterSet = UTF-8
と設定した。
フォントのパスは、古いドキュメントではkochi-minchoなどが紹介されているが、最近では著作権の問題などで入手できない場合があると思うのでIPAのフォントを使った。
IPAexフォント/IPAフォント
設定方法参照:
IPAexフォント/IPAフォントインストール
(Fedora Core 5での設置例) IPAのサイトからダウンロードして # フォントを置くディレクトリを作成し、ダウンロードした圧縮ファイルをコピー $ mkdir /usr/share/fonts/ipa $ cp IPAfont00203.zip /usr/share/fonts/ipa # ディレクトリ変更後、圧縮ファイルを解凍 $ cd /usr/share/fonts/ipa/ $ unzip IPAfont00203.zip # フォントのキャッシュを更新 $ fc-cache -fv
例えば以下の設定で動いた。
[graphs] BG_Color = #FFFFCC Font = /usr/share/fonts/ipa/IPAfont00203/ipamp.ttf,14,14,14 Font_Color = #000000 Width = 400 Height = 400 3d = 1 Palette = lgreen, lblue, lred, lpurple, lyellow, green, blue, red, purple, yellow Cycle_Colors = 1 Shadows = 1 Format = png