XE 3 (Xpressengine 3) - storage/logs/query.log

XE 3 (Xpressengine 3) 쪽에서 자체적으로 추가한 기능입니다.

관련 내용은 app/Providers/DatabaseServiceProvider 을 보면 확인할 수 있습니다.

해당 파일에서 확인할 점은 디버그 상태인 경우엔 데이터베이스와 통신하는 쿼리 정보를 저장하는 로그 파일을 만들어준다는 것 입니다.

public function boot()
{
    if ($this->app['config']->get('app.debug') === true) {

        \\DB::listen(function (QueryExecuted $executed) {
            $query = $executed->sql;
            $bindings = $executed->bindings;
            $time = $executed->time;
            $logFile = storage_path('logs/query.log');
            $monoLog = new Logger('log');
            $monoLog->pushHandler(new StreamHandler($logFile, Logger::INFO));
            $prep = $query;

            foreach ($bindings as $binding) 
						{
                if ($binding instanceof \\DateTimeInterface) {
                    $binding = new Carbon(
                        $binding->format('Y-m-d H:i:s.u'), $binding->getTimezone()
                    );
                }

                $prep = preg_replace(
									'#\\?#', is_numeric($binding) ? $binding : "'" . $binding . "'",
									$prep, 1
								);
            }

            $monoLog->info($prep);
        });
    }
}

디버그는 config/production/app.php 에서 확인, 변경할 수 있습니다.

<?php

return[
		'debug' => false,
    'url' => '<http://mysite.com>',
    'timezone' => 'Asia/Seoul',
    'key' => 'IGjECam1suowPrPJgoQIppZqyAjP9l4i',
];

디버그 모드가 켜져 있는 체 query.log 파일 방치한 경우엔

file_put_contents(): Only 0 of 2283 bytes written, possibly out of free disk space

가 발생할 수 있으니 주의 깊게 관리해줘야 합니다.

  • share