Zend有提供一個專門紀錄Log的物件:Zend_Log,以下為Zend_Log定義的Log類型
EMERG = 0; // Emergency: system is unusable ALERT = 1; // Alert: action must be taken immediately CRIT = 2; // Critical: critical conditions ERR = 3; // Error: error conditions WARN = 4; // Warning: warning conditions NOTICE = 5; // Notice: normal but significant condition INFO = 6; // Informational: informational messages DEBUG = 7; // Debug: debug messages
Zend_log寫入檔案
//預設是使用Append mode開啟檔案
$writer = new Zend_Log_Writer_Stream(dirname(__DIR__) . '/log/logfile');
$logger = new Zend_Log($writer);
//寫入 info log
$logger->info('Informational message');
//寫入 err log
$logger->err('Error');
//使用參數決定log型態
$logger->log('Info~~~ message', Zend_Log::INFO);
fopen檔案,修改檔案開啟權限
//可以使用fopen開啟檔案
$file = fopen(dirname(__DIR__) . '/log/logfile2','a+',false);
$writer = new Zend_Log_Writer_Stream($file);
$logger = new Zend_Log($writer);
$logger->info('Informational message');
將Log寫入資料庫
//Log寫入資料庫
$db = Zend_Db::factory('Pdo_Mysql', array(
'host' => 'localhost',
'username' => 'johnson',
'password' => '123',
'dbname' => 'log'
));
$db -> query('set names UTF8');
//將資料對應到欄位(Zend_Log本身有提供一些event item,例如priority、message)
$columnMapping = array('lvl' => 'priority', 'msg' => 'message', 'date' => 'log_date');
$writer = new Zend_Log_Writer_Db($db, 'log_table', $columnMapping);
$logger = new Zend_Log($writer);
//自訂資料庫date的欄位
$logger->setEventItem('log_date',date('Y-m-d'));
$logger->info('Informational message');