use MT::Log;
my $log = MT::Log->new;
$log->message('This is a message in the activity log.');
$log->save
or die $log->errstr;
use MT::Log;
my $log = MT::Log->new;
$log->message("This is a debug message");
$log->level(MT::Log::DEBUG);
$log->save
or die $log->errstr;
MT->log({
message => "A new entry has been posted.",
metadata => $entry->id,
class => 'MT::Log::Entry'
});
MT::Logオブジェクトは、Movable Typeのログ・レコード1件に対応します。
MT::Logは、MT::Objectのサブクラスで、MT::Objectのデータ管理およびデータ保存用のメソッドをすべて継承していますので、新規オブジェクトの生成、既存オブジェクトの読み込み、オブジェクトの保存などの詳細については、MT::Objectのドキュメントを参照してください。
ログ・レコードの種類ごとにMT::Logのサブクラスを作成することができます。MTのログ・フィードはこの機能を利用しています。
# MyCustomLog.pm
package MyCustomLog;
use base 'MT::Log';
sub description {
# returns html presentation of log message; used in activity
# log view and activity feeds...
}
1;
独自のサブクラスを定義した場合、プラグイン読み込み時にそのサブクラスを登録する必要があります。プラグインの「log_classes」変数に割り当てるキーと値のペアは、他のプラグインと重複しないように一意である必要があります。
# Plugin file
MT->add_plugin({
name => "My custom plugin",
log_classes => { customlog => "MyCustomLog" }
});
1;
そのクラスが処理するログ・レコードの種類を識別する文字列を返します。
ログ・データの拡張表示を行います。この中にはHTMLタグが含まれることがあります。
「MT::Log」基本クラスのmetadata_objectメソッドは、次の条件が満たされる場合に、このログ・オブジェクトに該当するMTデータ・オブジェクトを返します。
これらの条件が満たされていると、このメソッドは、メタデータ・カラムに指定されたIDを持つ「BASE::OBJECTCLASS」というパッケージ名を用いてログ・レコードの読み込みを試みます。
MT::Logオブジェクトは次のデータを格納します。これらのフィールドは、MT::Objectのドキュメントで説明したような標準的なデータ・アクセス用メソッドで参照あるいは設定できます。
ログ・レコードのIDです。
ログの内容です。
ブログ・コンテクスト中で発生したログ・メッセージの場合、そのブログのIDがこのカラムに記録されます。
ユーザーの操作によってログ・メッセージが発生した場合、その投稿者のIDがこのカラムに記録されます。
このフィールドはオプションで、MT::Logの有効な派生クラスであるPerlパッケージ名(またはMT::Log自体)に対応する識別子を示します。
このフィールドはオプションで、ログに記録するメッセージをさらに細かく分類する際に使用するフィールドです。インデックス・カラムなので、ログ・レコードを抽出する際にはこのカラムの値で絞り込むことができます。
このフィールドはオプションで、ログ・メッセージのレベル(重要度)を定義する数値が入ります。このカラムに入る値は次のいずれかです(パッケージ定数とそれに対応する数値で示してあります)。
デフォルト値は1(INFO)です。
ログ・メッセージ固有の追加情報を格納するためのフィールドです。このフィールドをどう使うかは、ログ・クラスによって異なります。
メッセージに関連するIPアドレスです。これはたとえばログイン失敗時のメッセージの場合に、ログインを試みたユーザーのIPアドレスを特定するために使うことができます。
ログ・レコードの作成日時を示す、"YYYYMMDDHHMMSS"書式のタイムスタンプです。常にGMTでのタイムスタンプとなります。
ログ・レコードの最終更新日時を示す、"YYYYMMDDHHMMSS"書式のタイムスタンプです。タイムゾーンの設定に合わせたタイムスタンプになることに注意してください。
ログ・レコードの検索では、IDによる検索の他、次のフィールドの任意の組み合わせによる検索やソートを行うことができます。詳細はMT::Objectのドキュメントのloadメソッドの説明を参照してください。