システムのログはセキュリティーの意味もあるし、ジャーナルの意味もあるし、デバッグの意味もある。あった方が安心な気がする。意外なものが記録されてたし。
以下はサンプル
スポンサードリンク
[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); }
コメント