通常MTのログを確認する場合、管理画面にログインし「ツール」→「ログ」で確認を行いますが、このログをファイルとしてサーバ上に出力することは可能でしょうか。
普段管理しているWebサーバのapacheのログを確認する様な感覚でsshでターミナルログインを行い、findコマンドなどでMTのログの閲覧ができればと考えております。
なるほど、なるほど。コマンドラインから cat mt_log | grep '検索' | wc -l みたいなイメージで、データベースから直接、データを取得できると便利かもしれませんね~ということで、ちょっと試してみました。
環境が MySQL のみ、他のデータベース エンジンは試せていません。SQL 文で、SELECT の結果をファイルに書き出す INTO OUTFILE なるものがあって、ここに色々オプションを追加してやると CSV 形式でファイルに書き出せるようです。ただ、私が実験に使ったさくらインターネットのレンタル サーバの場合、データベース サーバがまた別にあって、ここにはファイルの書き出しができませんでした。結果、可搬性を求めて mysqldump でデータを取得した上で、ログ ファイルっぽくなるよう perl でストリーム編集してから出力しています。mtdump mt_log と叩けば、データを標準出力にだらだらと垂れ流しますので、後は grep したり cut したり less したり…とお好きにどうぞ、なスクリプトになっています。
#!/bin/sh
# $Id: mtdump 148 2015-08-09 01:35:51Z pirolix $
DB_HOSTNAME=db.exmple.com
DB_USERNAME=username
DB_PASSWORD=p@ssw0rd
DB_DATABASE=mt5_test
DB_TABLE_NAME_PREFIX=mt_
# Show usage and exits
if [ -z $1 ]; then
echo "Usage: ${0##*/} <table name>"
echo " ${0##*/} --list"
exit
# Show tables list and exits
elif [ $1 = '--list' ]; then
mysql \
--host=$DB_HOSTNAME \
--user=$DB_USERNAME --password=$DB_PASSWORD \
--database=$DB_DATABASE \
--execute='show tables;'
exit
fi
# Dump the specified table's data
mysqldump \
--host=$DB_HOSTNAME \
--user=$DB_USERNAME --password=$DB_PASSWORD \
--no-create-info --skip-comments --skip-add-locks \
--skip-extended-insert \
$DB_DATABASE $DB_TABLE_NAME_PREFIX${1#$DB_TABLE_NAME_PREFIX} \
| perl -ne 's{^.*?\(|\);$|^/.*/;$}{}g; print if /./'
exit
mt_log テーブルの内容を標準出力に吐き出します。mysqldump の出力から、見やすくするために SQL ステートメントやコメントを除去しているだけです。