CodeIgniter 2.1.0でlog_message()
が生成するログのファイル名をカスタマイズする方法はありますか?デフォルトでは、ファイル名は現在の日付に基づいて生成されています。codeigniterのログファイル名をカスタマイズしてくださいlog_message()
答えて
log_message()
機能は一般的なシステム機能です。そのログのエラーを使用してLog::write_log()
メソッド。コアファイルをハックしないでください。したがって、ログライブラリを拡張して、write_log()
機能を上書きすることができます。
まだLog
クラスを拡張していない場合は、 CI 2.1.3は、それがこのコードを使用して働かせたとあなたの願い
として動作しますlog_message()
関数よりもファイルapplication/libraries/MY_Log.php
class MY_Log extends CI_Log {
function MY_Log()
{
parent::__construct();
$this->ci =& get_instance();
}
public function write_log() { //here overriding
if ($this->_enabled === FALSE)
{
return FALSE;
}
$level = strtoupper($level);
if (! isset($this->_levels[$level]) OR
($this->_levels[$level] > $this->_threshold))
{
return FALSE;
}
/* HERE YOUR LOG FILENAME YOU CAN CHANGE ITS NAME */
$filepath = $this->_log_path.'log-'.date('Y-m-d').EXT;
$message = '';
if (! file_exists($filepath))
{
$message .= "<"."?php if (! defined('BASEPATH'))
exit('No direct script access allowed'); ?".">\n\n";
}
if (! $fp = @fopen($filepath, FOPEN_WRITE_CREATE))
{
return FALSE;
}
$message .= $level.' '.(($level == 'INFO') ? ' -' : '-').' ';
$message .= date($this->_date_fmt). ' --> '.$msg."\n";
flock($fp, LOCK_EX);
fwrite($fp, $message);
flock($fp, LOCK_UN);
fclose($fp);
@chmod($filepath, FILE_WRITE_MODE);
return TRUE;
}
}
を作成します。ライブラリフォルダにMY_Log.phpを作成しました。 OPを必要とするものは正確ではありませんが、誰もがどのようにmodyfyを理解するでしょうか。:)
<?php
/**
* CodeIgniter
*
* An open source application development framework for PHP 4.3.2 or newer
*
* @package CodeIgniter
* @author ExpressionEngine Dev Team
* @copyright Copyright (c) 2006, EllisLab, Inc.
* @license http://codeigniter.com/user_guide/license.html
* @link http://codeigniter.com
* @since Version 1.0
* @filesource
*/
// ------------------------------------------------------------------------
/**
* MY_Logging Class
*
* This library assumes that you have a config item called
* $config['show_in_log'] = array();
* you can then create any error level you would like, using the following format
* $config['show_in_log']= array('DEBUG','ERROR','INFO','SPECIAL','MY_ERROR_GROUP','ETC_GROUP');
* Setting the array to empty will log all error messages.
* Deleting this config item entirely will default to the standard
* error loggin threshold config item.
*
* @package CodeIgniter
* @subpackage Libraries
* @category Logging
* @author ExpressionEngine Dev Team. Mod by Chris Newton
*/
class MY_Log extends CI_Log {
/**
* Constructor
*/
public function __construct()
{
$config =& get_config();
$this->_log_path = ($config['log_path'] != '') ? $config['log_path'] : APPPATH.'logs/';
if (! is_dir($this->_log_path) OR ! is_really_writable($this->_log_path))
{
$this->_enabled = FALSE;
}
if (is_numeric($config['log_threshold']))
{
$this->_threshold = $config['log_threshold'];
}
if ($config['log_date_format'] != '')
{
$this->_date_fmt = $config['log_date_format'];
}
}
private function isCommandLineInterface()
{
return (php_sapi_name() === 'cli');
}
// --------------------------------------------------------------------
/**
* Write Log File
*
* Generally this function will be called using the global log_message() function
*
* @access public
* @param string the error level
* @param string the error message
* @param bool whether the error is a native PHP error
* @return bool
*/
public function write_log($level = 'error', $msg, $php_error = FALSE)
{
if ($this->_enabled === FALSE)
{
return FALSE;
}
$level = strtoupper($level);
if (! isset($this->_levels[$level]) OR ($this->_levels[$level] > $this->_threshold))
{
return FALSE;
}
$filepath = $this->_log_path.'log-'.date('Y-m-d').'.php';
$message = '';
if (! file_exists($filepath))
{
$message .= "<"."?php if (! defined('BASEPATH')) exit('No direct script access allowed'); ?".">\n\n";
}
if (! $fp = @fopen($filepath, FOPEN_WRITE_CREATE))
{
return FALSE;
}
if ($this->isCommandLineInterface()) {
$message .= 'CMD ';
}
$message .= $level.' '.(($level == 'INFO') ? ' -' : '-').' '.date($this->_date_fmt). ' --> '.$msg."\n";
flock($fp, LOCK_EX);
fwrite($fp, $message);
flock($fp, LOCK_UN);
fclose($fp);
@chmod($filepath, FILE_WRITE_MODE);
return TRUE;
}
}
私はなぜログの代わりにphpの拡張があるのだろうか? .log 'not' .php ' –
何らかの理由でCI開発者が決まっているとは思えません。 –
は私にとって潜在的なバックドアのように思えますが、私はそれをログに戻しました。 –
- 1. ログインしてくださいcodeigniter URL
- 2. PyQt4 - 「詳細はログファイルを参照してください」エラー
- 3. Codeigniterのデータベースの値をフォームに入力してください
- 4. codeigniterのURLを書き直してください
- 5. IEに適したカスタマイズ方法を教えてください。
- 6. codeigniterの最後のクエリを変更してやり直してください
- 7. aspxウェブページのカスタマイズされたユーザー名エリアにハイパーリンクを追加してください
- 8. 都市名と国名を翻訳してください
- 9. ユーザー名を特定名で注文してください(PHP)
- 10. ICEコミュニケータを設定するときにログファイルを指定してください
- 11. codeigniterで動作しないcatchブロックを試してください
- 12. stdoutを使ってログファイルをカスタマイズする
- 13. 列内のNAsの名前を列記してください。
- 14. モードラインのバッファ名の色を変更してください
- 15. ASPコア1アプリケーションのユーザー向けにappsetings.jsonをカスタマイズしてください
- 16. ファイル名をPHPのuniqidに変更してください。
- 17. 出力dllの名前を変更してください
- 18. DocumentDirectoryのファイル名を変更してください
- 19. ASP.NETのNTユーザー名+パスワードを確認してください
- 20. プロキシ用のユーザー名とパスワードを入力してください。
- 21. クラス本体のメソッド名を変更してください
- 22. サイトマップのユーザー名を参照してください
- 23. .apkのパッケージ名を変更してください
- 24. 最新の別名を選択してください
- 25. ループ内の変数名を変更してください
- 26. asp:hiddenfieldに別の名前を使用してください。
- 27. レルムテーブルの名前を変更してください
- 28. データベースのユーザ名を確認してください。ログインしたユーザ名MVC3
- 29. をしてください
- 30. log4net Windowsサーバー2003でログファイルを作成しないでください
素晴らしいです。ありがとう! –
:致命的なエラー:クラス 'CI_Controller'がD:\ projektai \ roachrun \ system \ core \ CodeIgniter.phpの233行に見つかりません –
これは引き続き動作しますか?私は文字通りコピーを貼り付けて、ファイルパスのみを変更しましたが、ログは引き続きデフォルトのファイル名を使用しています。また、先頭に<?phpを追加しようとしましたが、これはありません。 –