通常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 ステートメントやコメントを除去しているだけです。