ファイルではなくデータベースに書き込むように、デフォルトの CakePHP Log() 関数をオーバーライドする必要があります。$this->Log("blah")
これが良いアイデアであるかどうかは気にしません。まず、行ったときに何が起こるかをオーバーライドする方法と、app_controller または他のクラス内でログ テーブル要素フォームを参照する方法を知りたいだけです。でオーバーライドを実行します。
質問する
335 次
1 に答える
2
まず、データベースにログを保存するテーブルを作成します。
CREATE TABLE IF NOT EXISTS `logs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`type` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`message` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
app/model
ディレクトリに というファイルを作成し、次のlog.php
コードを入れます。
<?php
class Log extends AppModel {
var $name = 'Log';
function write($type, $message) {
$this->save(array(
'Log' => array(
'type' => $type,
'message' => $message
)
));
}
}
これはログ エンジンですが、モデルでもあるため、別のデータ ソースまたはテーブルを使用するようにカスタマイズできます。唯一の要件は、これらのパラメーターを受け入れる書き込み関数です。
このコードを編集app/config/bootstrap.php
して、ファイルの最後に追加します。
App::Import('Model','Log');
CakeLog::config('otherFile', array(
'engine' => 'Log',
'model' => 'Log',
));
ログを使用できるようになりました$this->log($type, $message);
または$this->log($message);
エラータイプにデフォルト設定されています。
CakePHP のマニュアルには、カスタム ロギングエンジンの作成に関する情報がいくつかあります。
于 2013-05-03T14:56:34.123 に答える