2011-01-03 11 views
2

Cake PHPはすべてを/ app/tmp/logsフォルダの下に保存します。複数のサーバがある場合は、それぞれのサーバのログを確認する必要がありますフォルダ。Cakephpの複数サーバログを保存する良い方法はありますか?

cakephpと一緒に使用して1つの場所に集中させるための解決策はありますか?ログファイルを保存して毎日リセットするCakephpのログ記録です。

答えて

1

Cakeでは、Controller :: log()関数でパラメータを設定できます。

http://book.cakephp.org/view/159/Using-the-log-function

基本的に、あなたはエラーがある場合:

$this->log('some message describing the error', 'allserverslog'); 
// second param can also be LOG_ERROR or LOG_DEBUG, 2 predefined constants that identify the default logging files 
+0

問題は、アプリケーションが常駐するすべてのサーバー(/ 10台のサーバーを持つロードバランサを処理することを想像してください)の/ tmp/logsフォルダに保存されます。これは識別に役立ちますが、すべての人に共通の単一の場所に保存する方法は? – Mcloide

+0

私は、相対パスではなく完全なファイルパスを与えることができると思います。ファイルシステムのどこにでも保存できます。ロードバランシングされた状況では、共通のマウントされたNFS共有が必要か、別のロギングメカニズムを使用するか(syslogdはネットワークロギングをサポートし、PHPを使用することができます)、データベースシステムを使用してログを記録します。要するに、ネットワークを介して書き込むことを可能にするものが、マルチサーバーロギングセットアップに必要です。 –

+0

実際には道を見つけました。新しいロガーを定義し、データベースに保存するログを送信します。巨大なオーバーヘッドを作成しますが、機能します。 Log4PHPに似たソリューション – Mcloide

0

をいくつかの簡単な研究がクリーン方法がポイントに/app/webroot/index.phpに(デフォルトdefine('TMP', APP.'tmp'.DS)による)TMP定数を再定義することであろうことを示してい一時ディレクトリ全体が他の場所にあります。これは良い解決策ではありませんが、フォルダが共有されていると思われる場合は、異なるアプリが互いの足元に一時ファイルを置くことがあるためです。

他の場所のログディレクトリだけを指す唯一の方法は、/cake/config/paths.phpを編集することです。

目的が異なるアプリケーションのログファイルをすばやく簡単にスキップできるようにするには、これらのログに一連のシンボリックリンクを1つのディレクトリに入れるだけです。
逆に、それぞれの/app/tmp/logsフォルダを共有フォルダへのシンボリックリンクにすることができます。しかし、私はそれをお勧めしたいと思います。別のアプリを同じログに書き込んでいると、メッセージがどのアプリから来たのかが必ずしもわからないことがあるため、混乱することがあります。

関連する問題