システムのログはセキュリティーの意味もあるし、ジャーナルの意味もあるし、デバッグの意味もある。あった方が安心な気がする。意外なものが記録されてたし。
以下はサンプル
スポンサードリンク
[M] mdels/system_log.php
<?php
/*
* LOG
*
* Table:
* CREATE TABLE IF NOT EXISTS `prefix_system_logs` (
* `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
* `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
* `system` varchar(64) NOT NULL,
* `level` varchar(6) NOT NULL,
* `client` varchar(15) NOT NULL,
* `message` varchar(512) NOT NULL,
* PRIMARY KEY (`id`)
* ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
*
* Mod.
* Casey
* History:
* Ver.0.01b 2009.10.24 beta
*/
class SystemLog extends AppModel {
var $name = 'SystemLog';
}
?>
[V] views/system_logs/admin_index.ctp
<?php
/*
* Name:
* views/system_logs/admin_index.ctp
* Mod.
* Casey
* History:
* Ver.0.01 2009.12.06 test
*/
?>
<h1>[管理者専用画面]システム稼動ログ一覧</h1>
<table>
<tr>
<th>日時</th>
<th>システム</th>
<th>レベル</th>
<th>クライアント</th>
<th>内容</th>
</tr>
<!-- $remotes配列をループして、投稿記事の情報を表示 -->
<?php foreach ($logs as $log): ?>
<tr>
<td><?php echo $log['SystemLog']['created']; ?></td>
<td><?php echo $log['SystemLog']['system'];?></td>
<td><?php echo $log['SystemLog']['level'];?></td>
<td><?php echo $log['SystemLog']['client'];?></td>
<td><?php echo $log['SystemLog']['message'];?></td>
</tr>
<?php endforeach; ?>
</table>
<?php
echo $paginator->prev('<< '.__('previous', true), array(), null, array('class'=>'disabled' ));
echo ' | ' . $paginator->numbers() . ' | ';
echo $paginator->next(__('next', true).' >>', array(), null, array('class'=>'disabled' ));
?>
[C] app/controllers/system_logs_controller.php
<?php
/*
* app/controllers/system_logs_controller.php
*
* About:
* - システムログを表示する
* - 管理者のみリストを閲覧できる
* Mod.:
* Casey
* History:
* Ver.0.01b 2009.10.27 beta
*/
class SystemLogsController extends AppController {
var $name = 'SystemLogs';
var $components = array('Auth');
var $paginate = array(
'SystemLog' => array(
'order' => array('SystemLog.created desc'),
)
);
function beforeFilter(){
parent::beforeFilter();
$this->Auth->allow();
}
function admin_index() {
$this->adminOnly();
$this->LOG(__METHOD__, 'info', 'Display list view.');
$this->set('user', $this->_getUser()); // get user info
$this->set('logs', $this->paginate('SystemLog'));
}
}
?>
[C] app_controller.php
/*
* Name:
* LOG, app_controller
* Usage:
* $this->LOG('Users.add', 'notice', 'Add new user.');
* Mod.
* Casey
* History:
* Ver.0.01 2009.10.24 first
*/
function LOG($systemName, $level, $message){
$ip = $this->RequestHandler->getClientIP();
$data = array(
'system' => $systemName,
'level' => $level,
'message' => $message,
'client' => $ip,
'created' => '',
);
$this->SystemLog->create();
$this->SystemLog->save($data);
}


コメント