0

CakePHP ログをデータベース(表: ログ) に保存しようとしていますが、試してみるとエラーが返されます:

Could not load class Databaselogger
Error: An Internal Error Has Occurred.

Stack Trace
CORE\Cake\Log\LogEngineCollection.php line 42 → LogEngineCollection::_getLogger(string)
CORE\Cake\Log\CakeLog.php line 199 → LogEngineCollection->load(string, array)
APP\Config\bootstrap.php line 31 → CakeLog::config(string, array)
CORE\Cake\Core\Configure.php line 93 → include(string)
CORE\Cake\bootstrap.php line 164 → Configure::bootstrap(boolean)
APP\webroot\index.php line 91 → include(string)

詳細

CakePHP: 2.3
アパッチ: 2.2
PHP: 5.3.9
MySQL: 5.1

ファイル

ブートストラップ.php

CakeLog::config('otherFile', array(
    'engine' => 'Databaselogger'
));

ユーザーコントローラー.php

CakeLog::write('info', $this->alias, null, print_r($this->request->data, true));

app/Log/Databaselogger.php
app/Lib/ も app/Lib/log も試してみましたが、うまくいきません。

<?php
class Databaselogger extends CakeLog {
 
    function __construct() {
        App::import('Model', 'Log');
        $this->Log = new Log;
    }
 
    function write($type, $message, $query, $debug) {
        $this->Log->create();
        
        $log['type'] = ucfirst($type);
        $log['message'] = $message;
        $log['query'] = $query;
        $log['debug'] = $debug;
        $log['created'] = date('Y-m-d H:i:s');
        $log['modified'] = date('Y-m-d H:i:s');
 
        return $this->Log->save($log);
    }
 
}
?>

[編集]
ファイル の場所を変更し、DatabaseLogger.php2 つの重要な行を追加します。

    // app/Lib/Log/Engine/DatabaseLogger.php

    App::uses('CakeLogInterface', 'Log');
    class DatabaseLogger implements CakeLogInterface {

そして今、「動作」しますが、期待どおりではありません。 write function: でさらに 2 つの値が必要なためですがquery, debug、許可されていません。どうやってそれをするのですか?

    function write($type, $message, $query, $debug) {
4

1 に答える 1

0

私は現在それをやっています:

  • すべての変数を連結し、$message パラメータで送信します。
  • 後で、それを分解して値を使用します

しかし、これは間違っていると思います。

私が本当に必要としているのは、「カスタム書き込み機能」または「カスタム ログの作成方法」です。

とりあえずありがとう。

于 2013-02-22T11:14:20.477 に答える