サンプル集  >  PHP  >  CodeIgniter log出力
CodeIgniter log出力
2025/06/21

CodeIgniterでlog出力してみます。

◆環境
OS Windows 10 Home 22H2 (64bit)
PHP 8.0.12

CodeIgniter3のログの設定はapplication/config/config.phpで行うようです。

$config['log_threshold'] = 0;

デフォルトではlog_thresholdが0になっていたようです。全て出力する設定の4にしてみます。

ログの出力にはlog_messageを使います。

以前作成したCodeIgniter+MySQLにメソッドの開始、終了でログを出力するようlog_messageを追加してみます。

application/controllers/Aisatsu.php
 1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
<?php
class Aisatsu extends CI_Controller {

    public function __construct()
    {
        log_message('info'"START\t".__FUNCTION__."\t".__METHOD__);
        parent::__construct();

        $this->load->model('aisatsu_model');
        log_message('info'"END\t".__FUNCTION__."\t".__METHOD__);
    }

    public function view()
    {
        log_message('info'"START\t".__FUNCTION__."\t".__METHOD__);
        $data['aisatsu'] = $this->aisatsu_model->get_aisatsu();

        $this->load->view('aisatsu/view', $data);
        log_message('info'"END\t".__FUNCTION__."\t".__METHOD__);
    }
}
?>

application/models/Aisatsu_model.php
 1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
<?php
class Aisatsu_model extends CI_Model {

    public function __construct()
    {
        log_message('info'"START\t".__FUNCTION__."\t".__METHOD__);
        $this->load->database();
        log_message('info'"END\t".__FUNCTION__."\t".__METHOD__);
    }

    public function get_aisatsu()
    {
        log_message('info'"START\t".__FUNCTION__."\t".__METHOD__);
        $query = $this->db->get('aisatsu');

        log_message('info'"END\t".__FUNCTION__."\t".__METHOD__);
        return $query->result_array();
    }
}
?>

ブラウザでアクセスしたところ結果は変わりませんでしたがapplication/logsフォルダにlog-2025-10-04.phpというファイルができていました。

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

INFO - 2025-10-04 01:26:39 --> Config Class Initialized
INFO - 2025-10-04 01:26:39 --> Hooks Class Initialized
INFO - 2025-10-04 01:26:39 --> UTF-8 Support Enabled
INFO - 2025-10-04 01:26:39 --> Utf8 Class Initialized
INFO - 2025-10-04 01:26:39 --> URI Class Initialized
INFO - 2025-10-04 01:26:39 --> Router Class Initialized
INFO - 2025-10-04 01:26:39 --> Output Class Initialized
INFO - 2025-10-04 01:26:39 --> Security Class Initialized
INFO - 2025-10-04 01:26:39 --> Input Class Initialized
INFO - 2025-10-04 01:26:39 --> Language Class Initialized
INFO - 2025-10-04 01:26:39 --> START    __construct     Aisatsu::__co
nstruct
INFO - 2025-10-04 01:26:39 --> Loader Class Initialized
INFO - 2025-10-04 01:26:39 --> Controller Class Initialized
INFO - 2025-10-04 01:26:39 --> START    __construct     Aisatsu_model
::__construct
INFO - 2025-10-04 01:26:39 --> Database Driver Class Initialized
INFO - 2025-10-04 01:26:39 --> Database Driver Class Initialized
INFO - 2025-10-04 01:26:39 --> END      __construct     Aisatsu_model
::__construct
INFO - 2025-10-04 01:26:39 --> Model "Aisatsu_model" initialized
INFO - 2025-10-04 01:26:39 --> END      __construct     Aisatsu::__co
nstruct
INFO - 2025-10-04 01:26:39 --> START    view    Aisatsu::view
INFO - 2025-10-04 01:26:39 --> START    get_aisatsu     Aisatsu_model
::get_aisatsu
INFO - 2025-10-04 01:26:39 --> END      get_aisatsu     Aisatsu_model
::get_aisatsu
INFO - 2025-10-04 01:26:39 --> File loaded: C:\xampp\htdocs\CodeIgnit
er-develop\application\views\aisatsu/view.php
INFO - 2025-10-04 01:26:39 --> END      view    Aisatsu::view
INFO - 2025-10-04 01:26:39 --> Final output sent to browser
INFO - 2025-10-04 01:26:39 --> Total execution time: 0.0668

ログが出力されました!

表示されている時間がずれているのとミリ秒まで表示したいので設定を変更します。

ログのフォーマット設定はapplication/config/config.phpで行うようです。log_date_formatの最後に.uを追記しました。

$config['log_date_format'] = 'Y-m-d H:i:s.u';

タイムゾーンの設定はphp.iniで行うようです。

xampp/php/php.iniの設定を確認したところ、timezoneの設定らしき箇所は2箇所ありました。

 985|  [Date]
 986|  ; Defines the default timezone used by the date functions
 987|  ; http://php.net/date.timezone
 988|  ;date.timezone =

1967|  [Date]
1968|  date.timezone=Europe/Berlin

1968行目のEurope/BerlinをAsia/Tokyoへ書き換えます。

1968|  date.timezone=Asia/Tokyo

再ブラウザでアクセスしたところミリ秒が表示されましたが、時間はずれているままでした。

読み込んでいるphp.iniが正しいか確認します。

XAMPP Control PanelのApacheの右にあるAdminをクリックします。

右上のPHPInfoをクリックします。

Loaded Configuration Fileの欄を確認したところC:\xampp\php\php.iniとなっていました。

下にスクロールさせてDefault timezoneを確認したところEurope/Berlinとなっていました。

読み込んでいるphp.iniは正しいようですがAsia/Tokyoに変更した内容が反映されていませんでした。

Apacheを再起動したところAsia/Tokyoになりました!

INFO - 2025-10-04 09:09:14.263190 --> Config Class Initialized
INFO - 2025-10-04 09:09:14.263925 --> Hooks Class Initialized
:
INFO - 2025-10-04 09:09:14.285233 --> Final output sent to browser
INFO - 2025-10-04 09:09:14.285396 --> Total execution time: 0.0238

期待通りに動作しました!

▲ PageTop ■ Home


Copyright (C) 2025 ymlib.com