軽量高速なPHPフレームワーク。動作条件がCodeIgniter3ならPHP5.6、CodeIgniter4ならPHP7.3なので少し前のサーバ環境でも問題なく動作します。

codeigniter でログを取得する

明示的にメソッドを呼び出してログを記録する方法をご説明します。

CodeIgniterの標準ログメソッド

特定のコントローラー内で以下のように記述します:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Payment extends CI_Controller
{
    public function index()
    {
        // アクセスログを記録
        $this->_log_access();
        
        // 通常の処理
        // ...
    }
    
    public function complete()
    {
        // アクセスログを記録
        $this->_log_access();
        
        // 通常の処理
        // ...
    }
    
    /**
     * アクセスログを記録
     */
    private function _log_access()
    {
        // 必要な情報を取得
        $url = $this->uri->uri_string();
        $full_url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}";
        $ip = $this->input->ip_address();
        $datetime = date('Y-m-d H:i:s');
        $method = $this->input->method(); // GET, POST, etc.
        
        // POSTデータも記録する場合(パスワードなどは除外推奨)
        $post_data = $this->input->post();
        
        // ログメッセージを作成
        $log_message = sprintf(
            "ACCESS | DateTime: %s | IP: %s | Method: %s | URL: %s | POST: %s",
            $datetime,
            $ip,
            $method,
            $full_url,
            json_encode($post_data, JSON_UNESCAPED_UNICODE)
        );
        
        // CodeIgniter標準のログメソッドで記録
        log_message('info', $log_message);
    }
}

使用するログメソッド

log_message() が CodeIgniter の標準ログメソッドです:

log_message('info', 'ログメッセージ');
log_message('error', 'エラーメッセージ');
log_message('debug', 'デバッグメッセージ');

カスタムログファイルに記録したい場合

標準ログとは別のファイルに記録したい場合:

private function _log_access()
{
    $datetime = date('Y-m-d H:i:s');
    $ip = $this->input->ip_address();
    $url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}";
    
    $log_data = sprintf("[%s] IP: %s | URL: %s\n", $datetime, $ip, $url);
    
    // カスタムログファイルに書き込み
    $log_file = APPPATH . 'logs/payment_access_' . date('Y-m-d') . '.log';
    file_put_contents($log_file, $log_data, FILE_APPEND | LOCK_EX);
}

ログ設定の確認

application/config/config.php で以下を確認:

$config['log_threshold'] = 1; // 1以上に設定(1=エラー、2=デバッグ、3=情報、4=全て)
$config['log_path'] = '';     // デフォルトは application/logs/

この方法で、決済システムのコントローラー内で明示的にログを記録できます。

No.2684
11/03 17:06

edit