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');