mohsenzia
(Mohsen Zia124)
July 24, 2014, 3:21pm
1
[right]سلام.
وقتی خطایی رخ میده، توی فایل مربوط به لاگ ها، یه همچین چیزی نشون داده میشه :[/right]
[left]
2014/07/24 17:07:04 [error] [exception.CException] exception 'CException' with message 'Property "SiteController.sample" is not defined.' in C:\xampp\htdocs\test\framework\base\CComponent.php:130
Stack trace:
#0 C:\xampp\htdocs\test\protected\controllers\SiteController.php(19): CComponent->__get('sample')
#1 C:\xampp\htdocs\test\framework\web\actions\CInlineAction.php(49): SiteController->actionIndex()
#2 C:\xampp\htdocs\test\framework\web\CController.php(308): CInlineAction->runWithParams(Array)
#3 C:\xampp\htdocs\test\framework\web\CController.php(286): CController->runAction(Object(CInlineAction))
#4 C:\xampp\htdocs\test\framework\web\CController.php(265): CController->runActionWithFilters(Object(CInlineAction), Array)
#5 C:\xampp\htdocs\test\framework\web\CWebApplication.php(282): CController->run('index')
#6 C:\xampp\htdocs\test\framework\web\CWebApplication.php(141): CWebApplication->runController('site/index')
#7 C:\xampp\htdocs\test\framework\base\CApplication.php(180): CWebApplication->processRequest()
#8 C:\xampp\htdocs\test\index.php(7): CApplication->run()
#9 {main}
REQUEST_URI=/test/site/index
HTTP_REFERER=http://localhost/test/site/login
---
[/left]
[right]چطور میتونم تعداد فایل های نمایش داده شده رو کم کنم. نمیخوام انقد شلوغ بشه فایل لاگ ها!
مثلا فقط یه سطح رو نشون بده. یعنی اینجوری بشه:[/right]
[left]
2014/07/24 17:07:04 [error] [exception.CException] exception 'CException' with message 'Property "SiteController.sample" is not defined.' in C:\xampp\htdocs\test\framework\base\CComponent.php:130
Stack trace:
#0 C:\xampp\htdocs\test\protected\controllers\SiteController.php(19): CComponent->__get('sample')
REQUEST_URI=/test/site/index
---
[/left]
mohsenzia
(Mohsen Zia124)
August 3, 2014, 4:46am
2
[right]یعنی نمیشه یه همچین کاری کرد !!؟
چرا هیج کس جواب نمیده !!
[/right]
[rtl]
پیشنهاد می کنم بجای تغییر اون خودت یه error handler به سایتت اضافه کنی
توی کانفیگ باید ست کنی
[/rtl]
'errorHandler'=>array(
'errorAction'=>'site/error',
),
[rtl]
یه اکشن به همین نام میسازی و لاگ خودت رو درست می کنی
مثلا تو هاست من چون بعضی وقت ها ارتباطم از دیتابیس حذف می شد تصمیم گرفتم موقتا یه لاگ فایلی درست کنم که مچ هاست رو بگیرم و بهشون نشون بدم یه همچین چیزی نوشتم که لاگ رو می ریخت تو یه فایل xml بین یه تگ ساختگی به اسم error
[/rtl]
public function actionError(){
if($error=Yii::app()->errorHandler->error){
$this->render('error');
$xml = new DOMDocument('1.0', 'utf-8');
$xml->formatOutput = true;
$xml->preserveWhiteSpace = false;
$xml->load(Yii::app()->basePath.'/errorlog.xml');
$errors = $xml->getElementsByTagName('errors')->item(0);
if ($errors) {
$error_node = $xml->createElement("error_node");
$message = $xml->createElement("message");
$trace = $xml->createElement("trace");
$message->nodeValue = $error['message'];
$trace->nodeValue = $error['trace'];
$error_node->appendChild($message);
$error_node->appendChild($trace);
$errors->appendChild($error_node);
}
//save
$xml->save(Yii::app()->basePath.'/errorlog.xml');
}
}
mohsenzia
(Mohsen Zia124)
August 17, 2014, 8:18am
4
[right]ممنون بابت راهنمایی…
ولی این چیزی که من میخوام
error handling
نیست… برای ارور ها همین چیزی گفتین رو نوشتم.
الان منظورم لاگ گذاشتنه که هرجایی که لازم دارم به همچین چیزی مینویسم:
Yii::log(‘my log’);
که با تنظیماتی که توی فایل کانفیگ دادم، بسته به نوع لاگ، توی یه فایل جداگانه ذخیره میشه.
توی فایل کانفیگ، یه همچین چیزی نوشتم:[/right]
'errorHandler'=>array(
// use 'site/error' action to display errors
'errorAction'=>'base/error',
),
'log' => array(
'class' => 'CLogRouter',
'routes' => array(
array(
'class' => 'CFileLogRoute',
'levels' => 'error',
'logFile' => 'error.log',
),
array(
'class' => 'CFileLogRoute',
'levels' => 'info',
'logFile' => 'info.log',
),
array(
'class' => 'CFileLogRoute',
'levels' => 'warning',
'logFile' => 'warning.log',
),
),
),
[right]من فقط میخوام تعداد خط ها رو کم کنم.[/right]
Reza1607
(Rz Zare)
August 24, 2014, 3:25pm
5
[font="Tahoma"][rtl]شما کافیه تا از کلاس CFileLogRoute یک کلاس اکستند کنی و متد processLogs اون رو override کنی[/rtl][/font]
ms2014
(Masoud Sawari)
August 26, 2014, 3:06am
6
[size="2"][rtl][/size]
[size="2"][font="Tahoma"]سلام. فایل index.php رو باز کن (فایلی که توی ریشه وب سایت قرار داره) و عدد مربوط به دستور زیر رو به 1 تغییر بده[/font][/size]
[size="2"][/rtl][/size]
[size="2"]
defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);
[/size]
negar
(Nar8591)
August 26, 2014, 4:26am
7
[right]سلام
فایل لاگ من به همون تعداد خطوط کم رو ذخیره میکنه
[/right]
index.php
// remove the following lines when in production mode
defined(‘YII_DEBUG’) or define(‘YII_DEBUG’,true);
// specify how many levels of call stack should be shown in each log message
defined(‘YII_TRACE_LEVEL’) or define(‘YII_TRACE_LEVEL’,0);
main.php
‘routes’=>array(
array(
'class'=>'CFileLogRoute',
'levels'=>'error, warning,profile, info,trace',
'categories'=>'system.*',
),